[PYTHON] Bilderkennungsmodell mit Deep Learning im Jahr 2016

Zunaechst

Hallo, Sie gehören zu CodeNext, es ist @ aiskoaskosd. Ich bin regelmäßig Chainer verpflichtet, daher dachte ich, es wäre großartig, wenn ich etwas zurückgeben könnte, also schrieb ich einen Artikel. Heute werde ich mich auf das Bilderkennungsmodell konzentrieren, das in den letzten 1-2 Jahren zu einem heißen Thema geworden ist, die Implementierung veröffentlichen und einige Inhalte des Papiers erläutern. Einige der Papiere vor 2013 sind ebenfalls außergewöhnlich umgesetzt. ** 22 von 24 Modellen wurden in Chainer implementiert. ** Leider wurden bis zum 22. Dezember nicht alle Implementierungen und Überprüfungen mit cifar10 abgeschlossen. Wir werden es einzeln aktualisieren. Ich denke, es gibt einige Fehlinterpretationen und Implementierungsfehler. In diesem Fall würde ich mich sehr freuen, wenn Sie es mir sagen könnten.

Papier-

1. Netowork In Network 2. Very Deep Convolutional Networks for Large-Scale Image Recognition 3. Going deeper with convolutions 4. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 5. Rethinking the Inception Architecture for Computer Vision 6. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification 7. Training Very Deep Networks 8. Deep Residual Learning for Image Recognition 9. Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 10. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size 11. Identity Mappings in Deep Residual Networks 12. Resnet in Resnet: Generalizing Residual Architectures 13. Deep Networks with Stochastic Depth 14. Swapout: Learning an ensemble of deep architectures 15. Wide Residual Networks 16. FractalNet: Ultra-Deep Neural Networks without Residuals 17. Weighted Residuals for Very Deep Networks 18. Residual Networks of Residual Networks: Multilevel Residual Networks 19. Densely Connected Convolutional Networks 20. Xception: Deep Learning with Depthwise Separable Convolutions 21. Deep Pyramidal Residual Networks 22. Neural Architecture Search with Reinforcement Learning 23. Aggregated Residual Transformations for Deep Neural Networks 24. Deep Pyramidal Residual Networks with Separated Stochastic Depth

Einführungspapier Datum Modell- Anzahl der Parameter(10^6) cifar10 Papier mit Gesamtgenauigkeit(%) Implementierung der vollständigen Genauigkeit von cifar10 imagenet top-5 error(%)
1 131116 Caffe Implementierungsreferenz 0.1 91.19 \bigtriangleup(90.10) \times
1 131116 Caffe Implementierungsreferenz mit BN 0.1 Es ist kein Papier vorhanden 91.52% Es ist kein Papier vorhanden
2 140904 Modell A. 129 \times 92.1(Modell A.) 6.8(Modell E.)
3 140917 googlenet 6 \times 91.33% 6.67
4 150211 inceptionv2 10 \times 94.89% 4.9
5 151202 inceptionv3(Referenz) 22.5 \times 94.74% 3.58
6 150206 model A 43.9(Globales durchschnittliches Pooling anstelle von spp) \times 94.98% 4.94
7 150722 Highway(Fitnet19) 2.8 92.46 \bigcirc(93.35%,BN ist jedoch angebracht und die Konfiguration des Autobahnabschnitts ist unterschiedlich.) \times
8 151210 ResNet110 1.6 93.57 \bigcirc(93.34%) 3.57
9 160223 inception v4 \times \times \phi 3.1
10 160224 Squeezenet with BN 0.7 82%(alexnet without data augmentation) \bigcirc(92.63%) 17.5(withoutBNandsingle)
11 160316 ResNet164 1.6 94.54 \bigcirc(94.39%) 4.8(single)
12 160325 18-layer + wide RiR 9.5 94.99 \bigtriangleup(94.43%) \times
13 160330 ResNet110 1.7 94.75 \bigcirc(94.76%) \times
14 160520 Swapout v2(32)W×4 7.1 95.24 \bigcirc(95.34%) \times
15 160523 WRN28-10 36.2 96.0 \bigcirc(95.76%) \times
16 160524 20 layers 33.7 95.41 \bigtriangleup(93.77%) 7.39%(FractalNet-34)
17 160528 WResNet-d 19.1 95.3 \times \times
18 160809 RoR-3-WRN58-4 13.6 96.23 \times \times
19 160825 k=24, depth=100 27.0 96.26 \bigcirc 95.12%(k=12, depth=40) \times
20 161007 xception \times \times \phi 5.5(single)
21 161010 \alpha = 270 28.4 96.23 \bigcirc(95.9%) 4.7(\alpha = 450)
22 161105 depth=49 32(Aus dem Papier) 96.16 $\bigtriangleup$90.35(Appendix A: 4.1M) \times
23 161116 ResNeXt-29, 16×64d 68.3 96.42 \bigcirc(95.72%: 2x64d) \times
24 161205 depth=182, \alpha=150 16.5 96.69 \times \times

Implementierung

https://github.com/nutszebra/chainer_image_recognition

Seien Sie vorsichtig, wenn Sie Modelle verwenden, die nicht überprüft wurden

Numerischer Sinn für cifar10

Im Moment denke ich, dass 97% oder mehr SoTA sein werden. Soweit ich weiß, liegt die höchste Genauigkeit bei 96,69%. Es kann an der Zeit sein, sich auf cifar100 oder einen anderen Datensatz zu konzentrieren.

Aktuelle Trends

Ich denke, dieses Jahr war das Jahr der Familie Resnet. Der charakteristische Punkt ist, dass Tiefe = Genauigkeit vorbei ist. Obwohl Googlenet und andere schon lange darauf bestehen, haben verschiedene Papiere gezeigt, dass ** wenn es bis zu einem gewissen Grad tief ist, die Genauigkeit höher ist, wenn die Breite breiter als die Tiefe ist **. Ab etwa März ist das Ergebnis, dass es besser ist, die Breite von Resnet zu vergrößern, als Nebeneffekt herausgekommen, und ich denke, dass es in den am 23. Mai veröffentlichten Wide Residual Netowrks entscheidend wurde. Ich denke, es ist dieses Jahr klar, dass die Breite wichtig ist. Wenn man das Papier aus der Vogelperspektive betrachtet, scheint es, dass die Resnet-Familie größtenteils ein ** Res-Block modifiziert ** war.

Es ist schwer zu sagen, welches die beste Ableitung dieses Res-Blocks ist. Wie jeder denkt, haben in dem Artikel alle Modelle unterschiedliche Anzahlen von Parametern und FLOPS von Vorwärts, so dass es nicht viel Sinn macht, einfach die Genauigkeit zu vergleichen. Selbst wenn Sie das Papier lesen, ist daher nicht klar, welche Methode wesentlich und in die richtige Richtung ist. Ich denke, es besteht derzeit die Notwendigkeit einer Regel, dass jeder ein Modell mit einer bestimmten Metrik erstellt und dann die Testgenauigkeit eines einzelnen Modells (wie FLOPS?) Veröffentlicht. Alle Papiere sind in einem schwer zu bewertenden Zustand, aber ich denke, die allgemeine Tendenz ist, dass ** ReLU nicht auf den endgültigen Ausgabewert des Res-Blocks ** angewendet wird. Ich denke, es ist besser, es auf den Res-Block von BN-ReLU-Conv-BN-ReLU-Conv zu stützen, der in 11 vorgeschlagen wurde, anstatt auf den ursprünglichen 8. Es ist ein persönlicher Eindruck, aber es scheint ein ruhiges Jahr zu sein, in dem sich die Genauigkeit stetig verbessert hat. Ich glaube nicht, dass dieses Jahr neue Strukturen wie Residuen herausgekommen sind. Imagenet 2016 gab es auch viele Ensembles, die auf Residual Networks und Inception basierten.

Impressionen

Ich persönlich denke, dass das Google-Papier von 22 sehr schockierend ist und es eine kleine Möglichkeit gibt, dass sich von hier aus etwas entwickelt (es gibt keine Grundlage). 22 durchsucht das Netzwerk mit einem Richtliniengradienten von 800 gpu und RNN + und hat mit cifar 10 96,16% verzeichnet. Wenn dies für mnist 99% ist, ist es vorbei, aber es ist erstaunlich, dass cifar10 einen Wert nahe SoTA hat. Die Daten die Netzwerkstruktur bestimmen zu lassen, ist eine sehr faszinierende Idee, die an das Aufkommen von DNN erinnert (Erstellen von Feature-Design-Daten). Ich habe es hier auch nicht vorgestellt, aber ich erinnere mich, dass Hyper Networks sehr interessant und schockiert war, als ich es las. HyperNetworks ist ein Netzwerk, das Netzwerkgewichte generiert, und eine Technologie, die wahrscheinlich in Zukunft fusioniert oder entwickelt wird. Wenn es nichts gibt, scheint sich die Art und Weise des Umbaus des Res-Blocks und des Verbindens des Res-Blocks in Zukunft zu entwickeln, aber was wird passieren?

Einführung einiger Papiere

4. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift Die Chargennormalisierung ist kurz gesagt "Normalisierung jeder Eingabe zwischen Chargen auf Kanalebene". Diese Chargennormalisierung ist sehr nützlich. Es gibt keinen Grund, nicht im Netzwerk zu sein. Konvergenz ist nicht mehr möglich und die Genauigkeit wird leicht verbessert. Die Chargennormalisierung ist wichtig, daher werde ich sie ausführlich erläutern. Zunächst erkläre ich das Phänomen der internen Kovariatenverschiebung, das die Grundlage für die Motivation zur Chargennormalisierung bildet, und den spezifischen Algorithmus.

Interne Kovariatenverschiebung

Angenommen, das Gewicht der Schicht $ l_ {i} $ wird durch die Fehlerrückvermehrungsmethode geändert. Dann ändert sich die Verteilung des Ausgabewerts (die Art der Ausgabe), die unter Verwendung dieses Gewichts ausgegeben wird. Die Schicht $ l_ {i + 1} $ muss die entsprechende nichtlineare Abbildung lernen, die der Verteilung variierender Ausgabewerte entspricht. Was hier falsch ist, ist, dass das Lernen von nichtlinearen Zuordnungen zur Diskriminierung aufgrund des großen Aufwands beim Lernen, sich an die sich ändernde Verteilung der Ergebnisse anzupassen, sehr langsam ist. Dieses Phänomen wird in der Arbeit als interne Kovariatenverschiebung definiert. Diese interne Kovariatenverschiebung führt dazu, dass das Lernen stagniert. Nehmen wir an, dass der Lernkoeffizient von SGD groß eingestellt ist. Dann ändert sich das Gewicht der Schicht $ l_ {i} $ stark. Infolgedessen kann sich die Schicht $ l_ {i + 1} $ nicht an den geänderten Ausgabewert anpassen (oder die Anpassung dauert enorm lange), und das Lernen stagniert. Infolgedessen muss der Lernkoeffizient zum Lernen klein eingestellt werden, und diesmal verlangsamt das Lernen die Konvergenz des Lernens. Wenn Sie dort stehen, haben Sie das Gefühl, hier nicht stehen zu können. Diese interne Kovariatenverschiebung wird zu einem ernsteren Problem, wenn das Modell tiefer wird. Selbst wenn die Ausgangsänderung in der unteren Schicht gering ist, wird sie in der oberen Schicht verstärkt, und selbst eine kleine Änderung wird zu einer großen Änderung. Es ist wie ein Schmetterlingseffekt. Die Lösung hierfür ist sehr einfach. Wenn sich die Verteilung der Ausgabewerte ändert, können Sie sie jedes Mal so anpassen, dass die Verteilung gleich ist. BN (Batch Normalization) normalisiert den Eingang (Mittelwert 0, Verteilung 1) und gibt ihn aus. Wenn daher der Ausgang von BN als Eingang verwendet wird, wird die Verteilung des Ausgangs stabil und der Lernbedarf, auf Änderungen in der Ausgangsverteilung zu reagieren, wird verringert. Sie können sich darauf konzentrieren, das nichtlineare Mapping zu lernen, das Sie im Wesentlichen ausführen müssen, und als Ergebnis konvergiert das Lernen schnell. Darüber hinaus können Sie durch die stabile Verteilung einen großen Lernkoeffizienten festlegen. Dies trägt auch erheblich zur raschen Konvergenz des Lernens bei. Wenn Sie diese BN einbeziehen, beträgt die Lernzeit von GoogLeNet etwa 7%. Es ist wunderbar.

Batch-Normalisierungsalgorithmus

Geben Sie $ x_ {i, cxy} $ ein. Dies bedeutet, dass sich die Eingabe in der Position $ (x, y) $ des Kanals $ c $ im Stapel $ i $ befindet. Der Durchschnitt auf Kanal $ c $ sei $ \ mu_ {c} $ und die Varianz auf Kanal $ c $ sei $ \ sigma_ {c} ^ 2 $. Wenn dann die Anzahl der Stapel $ m $ beträgt, beträgt die Eingabehöhe $ Y $ und die Eingabebreite $ X $, $ \ mu_ {c} $ und $ \ sigma_ {c} ^ 2 $ können wie folgt ausgedrückt werden. Ich werde.

\begin{equation} \mu_{c} = \frac{1}{mXY}\sum_{i=1}^{m} \sum_{y=1}^{Y} \sum_{x=1}^{X} x_{i,cxy} \tag{4.1} \end{equation}
\begin{equation} \sigma_{c}^2 = \frac{1}{mXY}\sum_{i=1}^{m} \sum_{y=1}^{Y} \sum_{x=1}^{X} (x_{i,cxy} -\mu_c)^2 \tag{4.2} \end{equation}

Wenn wir uns die Gleichungen (4.1) und (4.2) ansehen, können wir sehen, dass der Durchschnitt $ \ mu_ {c} $ und die Verteilung $ \ sigma_ {c} ^ 2 $ für jeden Kanal zwischen Chargen berechnet werden. Das lernt nicht. Als nächstes sei $ \ hat {x_ {i, cxy}} $ die normalisierte Version jeder Eingabe $ x_ {i, cxy} $. Hier definieren wir die Skala $ \ gamma_ {c} $ und die Verschiebung $ \ beta_ {c} $ für jeden Kanal. $ \ Gamma_ {c} $ und Shift $ \ beta_ {c} $ sind Parameter, die von der Fehler-Backpropagation-Methode gelernt wurden. Der Grund für die Einführung einer solchen Sache wird später beschrieben. Wenn Sie in der Stapelnormalisierung $ x_ {i, cxy} $ eingeben, werden die endgültige Ausgabe $ y_ {i, cxy} $ und der normalisierte Wert $ \ hat {x_ {i, cxy}} $ eingegeben Ist wie folgt definiert.

\begin{equation} \hat{x_{i,cxy}} = \frac{x_{i,cxy} - \mu_{c}}{\sqrt{\sigma_{c}^2 + \epsilon}} \tag{4.3} \end{equation}
\begin{equation} y_{i,cxy} = BN(x_{i,cxy}) = \gamma_{c} \hat{x_{i,cxy}} + \beta_{c} \tag{4.4} \end{equation}

Sie können sehen, dass Gleichung (4.3) einfach $ x_ {i, cxy} $ unter Verwendung der Gleichungen (4.1) und (4.2) normalisiert (verteilt $ \ sigma_ {c} ^ 2 $ ist 0). Wenn $ \ hat {x_ {i, cxy}} $ unendlich wird, fügen Sie eine kleine Zahl $ \ epsilon $ hinzu. Chainer verwendet $ 2.0 \ times 10 ^ {-5} $ als Standardwert Es ist.). Die Frage hier ist Gleichung (4.4), in der $ \ gamma_ {c} $ und Verschiebung $ \ beta_ {c} $ linear abgebildet werden, Gleichung (4.3) jedoch den Hauptkreis bereits normalisiert. Ich bin fertig, was machst du? Sei $ \ gamma_ {c} = \ sigma_ {c}, \ beta_ {c} = \ mu_ {c} $. Wenn dann $ \ epsilon $ klein ist und ignoriert wird, lautet $ y_ {i, cxy} $ wie folgt. $\begin{equation} y_{i,cxy} = \gamma_{c} \hat{x_{i,cxy}} + \beta_{c} = \sigma_{c} \times \frac{x_{i,cxy} - \mu_{c}}{\sqrt{\sigma_{c}^2}} + \mu_{c} = x_{i,cxy} \tag{4.5} \end{equation}$ Betrachtet man Gleichung (4.5), so ist das normalisierte $ \ hat {x_ {i, cxy}} $ $ \ gamma_ {c} = \ sigma_ {c} ^ 2, \ beta_ {c} = \ mu_ {c } $ Kehrt zur ursprünglichen Eingabe $ x_ {i, cxy} $ zurück. Durch die Einführung von $ \ gamma_ {c} $ und die Verschiebung von $ \ beta_ {c} $ sollen wichtige Funktionen beibehalten werden, die aufgrund der Normalisierung verschwinden. Die einzigen Parameter, die durch die Batch-Normierung gelernt werden, sind die Skalierung $ \ gamma_ {c} $ und die Verschiebung $ \ beta_ {c} $. $ x_ {i, cxy}, \ mu_ {c}, \ sigma_ {c} ^ 2, \ hat {x_ {i, cxy}}, \ gamma_ {c}, \ beta_ {c} $ sind differenzierbar .. Die Ableitung steht im Papier. Als ich es bestätigte, war es sicherlich differenzierbar. Wenn Sie interessiert sind, versuchen Sie bitte, es abzuleiten. Die Chargennormalisierung kann mit Chainer in einer Zeile beschrieben werden. Es ist einfach und sehr gut.

5. Rethinking the Inception Architecture for Computer Vision Das Netzwerk selbst ist eine anmutige Erweiterung von Googlenet. Das Gute an diesem Dokument ist, dass es die Netzwerkdesignrichtlinie verbalisiert. Insbesondere vor dem ** Downsampling ist es sehr wichtig, die Anzahl der Kanäle im Netzwerk ** zu erhöhen.

6. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification Dies ist eine ReLU-Erweiterung von xavier-Initialisierung, der aktuellen Standardinitialisierungsmethode für DNN. Es wird auch als ReLU-Initialisierung, MSRA-Initialisierung, He-Initialisierung usw. bezeichnet. Diese xavier-Initialisierung ist eine sehr revolutionäre Methode zur Berechnung der Gewichtsverteilung, damit sich der Wert der Ausgabeverteilung während der Weiterleitung nicht ändert. Ding. Als datengesteuerte Initialisierung benötigen Sie lediglich eine gute Initialisierung (https://arxiv.org/abs/1511.06422) und datenabhängige Initialisierungen von Faltungs-Neuronalen Netzen. / 1511.06856) usw. wurden in diesem Jahr vorgeschlagen, dies ist jedoch auch eine Erweiterung von xavier initialization. Grundsätzlich verwende ich den durch msra-Initialisierung berechneten Varianzwert, um eine diagonale Zufallsmatrix zu generieren, und verwende sie als Anfangswert des Gewichts. Ich bin. In diesem Dokument wird PReLU vorgeschlagen, eine andere Erweiterung von ReLU als die Initialisierung. Der Inhalt ist einfach, z. B. das Ändern des x <0-Teils in ax anstelle von 0 wie bei ReLU. Zu diesem Zeitpunkt wird a durch das Fehlerrückausbreitungsverfahren gelernt. Das Interessante an diesem Artikel ist der erlernte Wert von a. Das Ergebnis ist: Selection_038.png Es ist ein großes a in der Anfangsschicht und wird ein kleiner Wert in der oberen Schicht. Es scheint, dass die erste Ebene die Informationen beibehält und sie beim Aufstieg verwirft. Es ist ersichtlich, dass die anfängliche Schicht die Linearität beibehält und nicht linear wird, wenn sie nach oben geht. Dieses Ergebnis liegt sehr nahe an CReLU. CReLU ist eine nichtlineare Funktion der Idee, eine Verkettung von ReLU (x) und ReLU (-x) auszugeben. Ein weiterer interessanter Punkt ist, dass der Wert von a vor dem Downsampling (Pool) zunimmt. Informationen werden im Pool abgelegt, sodass Sie anscheinend versuchen, sie nicht abzulegen. Wenn ich den Wert von a betrachte, habe ich das Gefühl, die Gefühle von CNN verstehen zu können, und ich mag es.

7. Training Very Deep Networks Es heißt Autobahnnetze. Autobahnnetze sind mathematisch wie folgt. $y=H(x, W_h)T(x, W_T)+xC(x, W_c)$ $ H (x, W_h) $ ist eine normale nichtlineare Funktion. $ T (x, W_T) $ ist eine nichtlineare Funktion, $ C (x, W_c) $ Ist eine Funktion, die berechnet, wie viel die Eingabe x geladen wird. Residual Networks ist eine Vereinfachung von $ T (x, W_T) = 1, C (x, W_c) = 1 $. Daher wird oft gesagt, dass Restnetze eine Vereinfachung von Autobahnnetzen darstellen. In der Arbeit bauen wir ein Netzwerk in Form von $ C (x, W_c) = 1-T (x, W_T), 0 \ le T (x, WT) \ le 1 $ auf. Das Interessante an diesem Artikel ist, dass beobachtet wurde, dass sich die Genauigkeit des Netzwerks kaum änderte, selbst wenn die obere Schicht des gelernten Netzwerks entfernt wurde. Tatsächlich wurde das gleiche Phänomen in Residual Networks bestätigt, und es ist bekannt, dass die Genauigkeit abnimmt, wenn zu viele obere Schichten manipuliert werden, aber die Genauigkeit ändert sich nicht, selbst wenn mehrere Schichten entfernt oder gemischt werden [[. Restnetzwerke verhalten sich wie Ensembles relativ flacher Netzwerke]. Ich war überrascht, als ich das lernte.

8. Deep Residual Learning for Image Recognition Es ist ein Netzwerk, das der Champion von ILSVRC2015 in der Anerkennungsabteilung wurde. Es hat eine vereinfachte Struktur von Highway Netoworks (7), und der charakteristische Teil wird als Residuum bezeichnet. Die meisten in diesem Jahr veröffentlichten Netzwerke werden darauf basieren und verbessert. Selection_056.png Die obige Abbildung zeigt deutlich die Reststruktur. Fügen Sie einfach die Eingabe x zu F (x) hinzu, wobei die nichtlineare Funktion angewendet wird. Dieses F besteht aus mehreren Schichten von conv, BN und ReLU. Unten finden Sie eine Übersicht über das Netzwerk. Selection_057.png

10. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size Dieses Squeezenet ist ein sehr kostengünstiges Modell. Es wurde ein Modul namens Feuermodul vorgeschlagen, aus dem ein Netzwerk aufgebaut wird. Das Feuermodul sieht folgendermaßen aus: Selection_039.png Die Idee des Feuermoduls ist sehr einfach: Sie können beispielsweise den Ausgang von 1x1conv mit Dimensionsreduzierung (Reduzierung der Anzahl der Eingangskanäle in der nächsten Stufe) auf 3x3conv und 1x1conv eingeben und die jeweiligen Ausgänge verketten. Wenn das Netzwerk in dem Papier BN erhält, beträgt die Gewichtszahl etwa 0,7 M und 92,6% können mit cifar10 erhalten werden. Wenn Sie in der Praxis Bilderkennungsaufgaben der Klasse 2-100 lösen, ist dies so ziemlich ein Stück. 11. Identity Mappings in Deep Residual Networks Dies ist ein Artikel, der verschiedene Arten von Res-Blöcken ausprobiert hat und gezeigt hat, dass BN-ReLU-Conv-BN-ReLU-Conv gut war. Im Allgemeinen bezieht sich Residual Networks nun darauf. Selection_049.png

13. Deep Networks with Stochastic Depth Es heißt stochastische Tiefe und ist eine Regularisierungsmethode, bei der Res-Blöcke wahrscheinlich wegfallen. Dies wurde bereits in mehreren Papiermodellen übernommen und scheint einige Auswirkungen gehabt zu haben. Es gibt jedoch Berichte, dass die normale stochastische Tiefe bei 24 nicht wirksam war, daher ist die Bewertung der stochastischen Tiefe vorläufig und sollte beobachtet werden. Die Methode zum Verringern der Ausfallwahrscheinlichkeit für den Res-Block von der unteren zur oberen Schicht scheint die genaueste zu sein. Stellen Sie in der Arbeit eine Tropfenwahrscheinlichkeit von ungefähr 1 (nicht fallen lassen) in der unteren Schicht und ungefähr 0,5 (Tropfen mit einer Wahrscheinlichkeit von 50%) in der oberen Schicht ein und wenden Sie die linear berechnete Tropfenwahrscheinlichkeit auf diese Werte auf die mittlere Schicht an. Die Art und Weise, wie es gemacht wird, wird in der Zeitung genommen und das Ergebnis ist das beste. Selection_048.png

14. Swapout: Learning an ensemble of deep architectures Dies ist eine Methode zum unabhängigen Anwenden von Dropouts auf den Restteil des Res-Blocks und den Ausgabewert der nichtlinearen Funktion. Die Formel lautet wie folgt. $y=p_{1}F(x)+ p_{2}x$ $ y $ ist die Ausgabe des Res-Blocks, $ x $ ist die Eingabe, $ F $ ist die nichtlineare Funktion, $ p_ {1}, p_ {2} $ ist die Bernoulli-Verteilung mit einem Ausgabewert von 0 oder 1. Dies bedeutet, dass die folgende Abbildung intuitiv ist. Selection_040.png E in der Abbildung ist Swap-out, aber wie Sie sehen können, können Sie sehen, dass der Ausgabewert 0, x, F (x), F (x) + x ist. Die obige Formel drückt nur das aus. Swapout ist ein Netzwerk, das dies auf alle Res-Blöcke anwendet. Unter der Annahme, dass p 1 mit einer Wahrscheinlichkeit von T und 0 mit einer Wahrscheinlichkeit von 1-T ausgibt, funktioniert das Muster, den Wert von T in der unteren Schicht zu erhöhen und ihn in Richtung der oberen Schicht zu verringern, gut.

15. Wide Residual Networks Das Papier sagt, dass die Genauigkeit zunimmt, wenn Sie die Breite des Res-Blocks erhöhen, anstatt ihn tiefer zu machen. Das gesamte Netzwerk sieht wie in der folgenden Abbildung aus. Selection_058.png

Die Netzwerkkonfiguration wird durch die Anzahl der Blöcke N und den Breitenparameter k bestimmt. Das Muster mit N als 4 und k als 10 funktioniert am besten auf dem Papier. Natürlich ist dies allein kein Papier, daher überprüfe ich auch, welcher Res-Block die Genauigkeit ergibt. Die Schlussfolgerung zeigt, dass es gut war, zwei 3x3-Konvs innerhalb des Res-Blocks zu verwenden. Es war interessant festzustellen, dass sich die Leistung beim Stapeln von 1, 3 oder 4 verschlechtert, anstatt 2 3x3conv zu stapeln. Es funktioniert nicht mit cifar10, aber für Aufgaben wie cifar100 scheint das Einfügen von Aussetzern zwischen Convs im Res-Block die Genauigkeit zu verbessern. Wenn Sie die Einstellung auf "Breit" einstellen, ist die Lerngeschwindigkeit langsamer (8-fache Lerngeschwindigkeit von Resnet-1001), und Sie können auch dann lernen, wenn Sie im Vergleich zu normalem Resnet die 5-fache Anzahl von Parametern verwenden. Das Lernen ist sehr schnell, wenn ich versuche, mit dem Modell zu trainieren, das ich tatsächlich gebaut habe. Mit cifar10 kommt die Genauigkeit von etwa 60% in der 1. Epoche heraus.

16. FractalNet: Ultra-Deep Neural Networks without Residuals 16 ist ein fraktales Netz, das kein Residuum aufweist und durch eine Struktur gekennzeichnet ist, die einen Durchschnittswert und ein fraktales Netzwerk annimmt. Der Titel muss ohne Residuen den Durchschnittswert annehmen. Die folgende Abbildung ist für die fraktale Struktur leicht zu verstehen. Selection_047.png Konfigurieren Sie Ihr Netzwerk mit der Fraktalerweiterungsregel wie gezeigt. In diesem Artikel wird der Durchschnittswert auf die Ausgabe der beiden Convs angewendet (Verbindungsschicht in der Abbildung). Ich bin sehr interessiert daran, was mit der Genauigkeit des Netzwerks passiert, wenn der Join beibehalten wird (in der Veröffentlichung wird nur der Durchschnitt auf den Join angewendet). Der Titel des Papiers sagt ohne Residuen, aber ich bin der Meinung, dass die Mittelung im Wesentlichen die gleiche ist wie die Residuen. Der Autor behauptet, es sei anders, aber ich persönlich habe Zweifel. ~~ Was ich beim Lernen des Netzwerks interessant fand, war, dass das Lernen in den ersten 20 Epochen stagnierte (wie in der Arbeit beschrieben). Dies ist ein Verhalten, das ich nicht viel gesehen habe. ~~ Als ich den Lernkoeffizienten erhöhte, lernte ich aus der 1. Epoche (Tränen). 17. Weighted Residuals for Very Deep Networks Wenn H eine nichtlineare Funktion ist, x eine Eingabe ist, $ \ alpha $ ein Lernparameter ist und y die Ausgabe eines Res-Blocks ist, besteht die Hauptidee dieses Dokuments darin, einen Res-Block wie die folgende Formel zu definieren. $y=\alpha H(x)+ x$ Das Diagramm ist wie folgt. Selection_052.png Das Interessante an diesem Artikel ist der Wert von $ \ alpha $, der durch die Fehler-Backpropagation-Methode gelernt wurde. Selection_054.png In der Abbildung ist zu sehen, dass der Wert von $ \ alpha $ in der oberen Schicht tendenziell groß ist. Da H (x) stark hinzugefügt wird, scheint es, dass die Nichtlinearität in der oberen Schicht aktiv genutzt wird. Der Ausgabewert von H (x) kann jedoch sehr klein sein, und es gibt keine Überprüfung dieses Teils im Papier. Selection_053.png Die obige Abbildung zeigt, wie sich $ \ alpha $ geändert hat. Interessant ist, dass es die Symmetrie erfüllt. Ich weiß nicht, warum das passiert, aber es ist sehr interessant.

18. Residual Networks of Residual Networks: Multilevel Residual Networks Die einfache Idee besteht darin, Verbindungen auch von anderen Ebenen zu überspringen. Die folgende Abbildung ist leicht zu erkennen. Dies ist die einzige Idee. Selection_055.png

19. Densely Connected Convolutional Networks 19 ist ein dichtes Netz, das dadurch gekennzeichnet ist, dass der Ausgang mit dem Eingang verbunden und in den Block gelegt wird. Die Ausgabe wird rekursiv zur nächsten Eingabe, wie in der folgenden Abbildung gezeigt. Selection_045.png Es scheint im Wesentlichen dasselbe zu tun wie ein Residual-Netzwerk, außer dass es die Ausgänge anstelle des Residuums rekursiv verkettet.

20. Xception: Deep Learning with Depthwise Separable Convolutions Es ist ein Netzwerk, das durch Ersetzen der Conv des Res-Blocks durch eine trennbare Conv konfiguriert wird. trennbares Conv ist ein kanalweises Conv und 1x1 Conv, die der Reihe nach angewendet werden, und hat die Eigenschaft, dass die Anzahl der Gewichte reduziert werden kann. Eine kanalweise Conv ist eine Conv, die die Korrelation zwischen Kanälen nicht berücksichtigt, und eine Conv, die nach Berechnung des Faltungsfensters ohne Summierung ausgegeben wird. Wie in diesem Artikel behauptet, wurde beobachtet, dass ein vgg-basiertes Netzwerk mit Inception v4 ohne Reststruktur vergleichbar sein könnte. In diesem Artikel wird jedoch auch bestätigt, dass die Konvergenz mit der Reststruktur schneller ist. Ist es ein Gefühl, dass die Reststruktur lautlos eingefügt werden sollte?

21. Deep Pyramidal Residual Networks Die einfache Idee besteht darin, die Anzahl der Ausgangskanäle im Res-Block schrittweise zu erhöhen. Im Allgemeinen wird die Anzahl der Kanäle im Voraus verdoppelt, wenn stride2 conv als Down-Sample im Res-Block angewendet wird. Pyramidennetzwerke sind ein Netzwerk wie d in der Abbildung, das die Anzahl der Kanäle schrittweise erhöht, anstatt die Anzahl der Kanäle vor dem Downsampling schnell zu erhöhen. Selection_041.png

22. Neural Architecture Search with Reinforcement Learning Dies ist ein Artikel, in dem Google 800 gpu und RNN verwendet, um ein Netzwerk zu generieren. Lernen Sie das RNN-Netzwerk, das das entsprechende CNN-Netzwerk ausspuckt, anhand der Fehler-Backpropagation-Methode anhand der Genauigkeit der Validierungsdaten und des Richtliniengradienten. Überraschend ist, dass Cifar 10 genauso genau ist wie SoTA. Es scheint, dass der Grund, warum es funktioniert hat, darin bestand, dass das generierte Netzwerk vereinfacht wurde (Filter ist nur 3,5,7 usw.) und dass das generierte Netzwerk einfach von SGD bewertet wurde. Das generierte Netzwerk ist sehr interessant. Das Folgende ist das generierte Lightweight-Netzwerk. Selection_043.png Die Punkte, an denen sich die Pfeile treffen, sind verbunden. Es gibt keine Reststruktur. Ähnlich in der Konfiguration wie das 19 dichte Netz. Da die Daten die Netzwerkstruktur bestimmen, handelt es sich um eine sehr komplizierte Eingabe, die der Mensch nicht verstehen kann. Das Interessante ist, dass das Entfernen oder Erhöhen dieses Pfeils die Testgenauigkeit verringert. Ich bin der Meinung, dass je mehr Freiheit Sie der Netzwerkgenerierung geben, desto genauer wird sie sein. Wenn der Freiheitsgrad jedoch zu hoch ist, kann das Netzwerk anscheinend nicht ordnungsgemäß generiert werden. Daher ist Hardware für Anpassungsarbeiten und Experimente unerlässlich. Ich denke, es gibt nur wenige Umgebungen auf der Welt, in denen Sie dieses Experiment überprüfen können. .. ..

23. Aggregated Residual Transformations for Deep Neural Networks Selection_050.png Ersetzen Sie in einem Netzwerk namens ResNeXt den Res-Block wie links in der obigen Abbildung gezeigt durch den rechts. Der Res-Block rechts in der obigen Abbildung entspricht (a), (b), (c) in der folgenden Abbildung. Da es in chainer keine Gruppenkonv. Gibt, habe ich sie in (b) implementiert. Selection_051.png In diesem Artikel wird die Anzahl der Verzweigungen der Eingabe im Res-Block als Kardinalität bezeichnet. Es ist besser, die Kardinalität und die Blockbreite im Vergleich zu Wide Residual Networks mit derselben Anzahl von Parametern, die lediglich die Blockbreite erhöht haben, angemessen zu erhöhen. Es behauptet, genau zu sein.

24. Deep Pyramidal Residual Networks with Separated Stochastic Depth 24 ist 21 Pyramidennetz mit getrennter stochastischer Tiefe angewendet. Getrennte stochastische Tiefe ist die Idee, die stochastische Tiefe unabhängig auf den Teil anzuwenden, an dem der Kanal zunimmt. Es sieht aus wie in der Abbildung unten. Selection_044.png

Recommended Posts

Bilderkennungsmodell mit Deep Learning im Jahr 2016
Deep Learning Bilderkennung 2 Modellimplementierung
Deep Learning Bilderkennung 3 nach der Modellerstellung
Deep Learning Bilderkennung 1 Theorie
Implementierung eines Deep Learning-Modells zur Bilderkennung
Lesen und implementieren Sie Deep Residual Learning für die Bilderkennung
Zählen Sie die Anzahl der Parameter im Deep-Learning-Modell
Sinuswellenvorhersage mit RNN in der Deep-Learning-Bibliothek Keras
Ich habe versucht, ein Deep-Learning-Modell von TensorFlow mit TensorFlow Serving zu hosten
Echtzeit-Bilderkennung auf Mobilgeräten mithilfe des TensorFlow-Lernmodells
Klassifizieren Sie CIFAR-10-Bilddatensätze mithilfe verschiedener Modelle des Deep Learning
Ich habe versucht, mit Theano tief zu lernen
Erstellen eines Lernmodells mit MNIST
Handschriftliche Zeichenerkennung mit KNN in Python
Bilderkennung von Früchten mit VGG16
[AI] Deep Learning für das Entrauschen von Bildern
Bilderkennung
Tiefes Lernen
Umgang mit Tensorflow mit GPU beim Deep Learning, das plötzlich nicht mehr funktioniert
Einführung in Deep Learning zum ersten Mal (Chainer) Japanische Zeichenerkennung Kapitel 3 [Zeichenerkennung anhand eines Modells]
Python: Grundlagen der Bilderkennung mit CNN
Kategorieschätzung mit der Bilderkennungs-API von docomo
Deep Learning 2 durch Implementierung gelernt (Bildklassifizierung)
Python: Anwendung der Bilderkennung mit CNN
Aktienkursprognose mit Deep Learning (TensorFlow)
Bildausrichtung: von SIFT bis Deep Learning
Bilderkennung mit CNN Pferden und Hirschen
"Deep Learning von Grund auf neu" mit Haskell (unvollendet)
Vorteile der Verwendung von Slugfield im Django-Modell
Ich habe versucht, Pytorchs Deep-Learning-Modell mit TorchServe auf Amazon SageMaker zu hosten
Datenversorgungstricks mit deque beim maschinellen Lernen
Ein Amateur versuchte Deep Learning mit Caffe (Einführung)
So codieren Sie eine Drohne mithilfe der Bilderkennung
Maschinelles Lernen: Bilderkennung von MNIST mithilfe von PCA und Gaussian Native Bayes
Ein Amateur versuchte Deep Learning mit Caffe (Übung)
Lernen der Mustererkennung im Video Teil 1 Bereich der Mustererkennung
Deep Learning Memorandum
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
Starten Sie Deep Learning
Aufgeblasenes Lernbild
Aktienkursprognose mit Deep Learning (TensorFlow) -Teil 2-
Bilderkennung mit Caffe Model Chainer Yo!
Python: Tiefes Lernen in der Verarbeitung natürlicher Sprache: Grundlagen
Python Deep Learning
[Kausalsuche / Kausalinferenz] Führen Sie mit Deep Learning eine Kausalsuche (SAM) durch
Ein Amateur hat Deep Learning mit Caffe ausprobiert (Übersicht)
Deep Learning × Python
Aktienkursprognose mit Deep Learning [Datenerfassung]
Machen Sie Schlussfolgerungen mit dem trainierten Modell des Scicit-Learn in PySpark
Erstes tiefes Lernen in C # - Einführung in Python implementieren-
Denken Sie über Party-Attack-ähnliche Wachstumstaktiken mit Deep Learning nach
Implementierte kontinuierliches Lernen unter Verwendung der Maharanobis-Entfernung des Merkmalsraums
Deep Learning Bildanalyse beginnend mit Kaggle und Keras
[Erkennung von Abnormalitäten] Erkennen Sie Bildverzerrungen durch Fernunterricht
Modell unter Verwendung eines Faltungsnetzwerks in der Verarbeitung natürlicher Sprache
[Django] Implementieren Sie eine Funktion zum Hochladen von Bilddateien, die kein Modell verwendet
Maschinelles Lernen mit Bildern der Kategorie Caffe -1 unter Verwendung eines Referenzmodells