AI-United » Allgemein » Eine Übersicht über ResNet und seine Varianten

Eine Übersicht über ResNet und seine Varianten

ResNet und seine Varianten

Nach dem gefeierten Sieg von AlexNet [1] beim LSVRC2012-Klassifikationswettbewerb war Deep Residual Network [2] wohl die bahnbrechendste Arbeit in der Computer Vision / Deep Learning-Community der letzten Jahre. ResNet ermöglicht das Trainieren von hunderten oder sogar tausenden von Layern und erzielt dennoch eine überzeugende Leistung.

Dank der leistungsstarken Repräsentationsfähigkeit wurde die Leistung vieler Computeranwendungen außer der Bildklassifizierung verbessert, wie z. B. Objekterkennung und Gesichtserkennung.

Seit ResNet die Menschen im Jahr 2015 begeistert hat, sind viele Forscher in die Geheimnisse ihres Erfolgs eingetaucht, in der Architektur wurden zahlreiche Verfeinerungen vorgenommen. Dieser Artikel ist in zwei Teile gegliedert, im ersten Teil wird ein wenig Hintergrundwissen für diejenigen gegeben, die mit ResNet nicht vertraut sind, im zweiten Teil werden einige der kürzlich erschienenen Artikel über verschiedene Varianten und Interpretationen der ResNet-Architektur besprochen.

ResNet erneut ansehen

Nach dem universellen Approximationstheorem, das ausreichende Leistung hat, wissen wir, dass ein Feedforward-Netzwerk mit einer einzelnen Schicht ausreicht, um eine Funktion darzustellen. Die Schicht kann jedoch massiv sein und das Netzwerk neigt zu overfitting. Daher gibt es in der Forschung einen gemeinsamen Trend, dass unsere Netzwerkarchitektur tiefer gehen muss.

Seit AlexNet geht die hochmoderne CNN-Architektur immer tiefer. Während AlexNet nur 5 Faltungsschichten hatte, hatten das VGG-Netzwerk [3] und GoogleNet (auch Codename Inception_v1) [4] 19 bzw. 22 Schichten.

Das Erhöhen der Netzwerktiefe funktioniert jedoch nicht, indem Sie einfach Schichten aufeinander stapeln. Tiefe Netzwerke sind wegen des berüchtigten verschwindenden Gradientenproblems schwer zu trainieren – da der Gradient zu früheren Schichten zurückgespielt wird, kann eine wiederholte Multiplikation den Gradienten unendlich klein machen. Infolgedessen da das Netzwerk tiefer geht, wird seine Leistung gesättigt oder nimmt sogar schnell ab.

Die Erhöhung der Netzwerktiefe führt zu einer schlechteren Leistung

Vor ResNet gab es mehrere Möglichkeiten, das Problem des verschwindenden Gradienten zu behandeln, zum Beispiel: [4] fügt einen zusätzlichen Verlust in einer mittleren Schicht als zusätzliche Überwachung hinzu, aber keiner schien das Problem ein für alle Mal zu lösen.

Die Kernidee von ResNet ist die Einführung einer sogenannten “identity shortcut connection” / „Identitätsverknüpfungsverbindung“, bei der ein oder mehrere Layer übersprungen werden, wie in der folgenden Abbildung dargestellt:

Ein Restblock
Die ResNet-Architektur

Die Autoren von [2] argumentieren, dass das Stapeln von Schichten die Netzwerkleistung nicht beeinträchtigen sollte, da wir einfach Identitätsabbildungen (Layer, die nichts tun) auf das aktuelle Netzwerk stapeln können, und die resultierende Architektur würde das Gleiche tun. Dies zeigt an, dass tieferes Modell keinen Trainingsfehler erzeugen sollte, der höher ist als der seiner flacheren Pendants. Sie stellen die Hypothese auf, dass es einfacher ist, die gestapelten Schichten in eine Restzuordnung einpassen zu lassen, als sie direkt in die gewünschte zugrundeliegende Zuordnung einpassen zu lassen. Und der Restblock oben erlaubt es genau das zu tun.

Tatsächlich war ResNet nicht der erste Versuch, Shortcut-Verbindungen zu nutzten, Highway Network [5] führte Shortcut-Verbindungen ein. Diese parametrisierten Tore steuern, wie viele Informationen über die Shortcut fließen dürfen. Eine ähnliche Idee kann in der Long Term Short Memory (LSTM) -Zelle [6] gefunden werden, in der ein parametrisiertes vergessenes Tor vorhanden ist, das steuert, wie viele Informationen zum nächsten Zeitpunkt fließen. ResNet kann daher als Sonderfall des Highway-Netzwerkes betrachtet werden.

Experimente zeigen jedoch, dass Highway Netzwerk nicht besser als ResNet arbeitet, was ziemlich seltsam ist, da der Lösungsraum von Highway Netzwerk ResNet enthält, daher sollte es mindestens so gut wie ResNet sein. Das deutet an, dass es wichtiger ist, diese „gradient highways“ transparent zu halten, als zu einem größeren Lösungsraum zu übergehen.

Nach dieser Erkentniss verfeinerten die Autoren von [2] den Residualblock und schlugen eine Voraktivierungsvariante des Residualblocks vor [7], bei der die Gradienten ungehindert durch die Shortcut-Verbindungen zu einem anderen früheren Layer fließen können. Bei Verwendung des ursprünglichen Residualblocks [2] führte das Training eines ResNets mit 1202 Layern zu einer schlechteren Leistung als sein Gegenstück mit 110 Layern.

Varianten von Restblöcken

Die Autoren von [7] zeigten mit Experimenten, dass sie jetzt ein tiefes ResNet mit 1001 Layern trainieren können, um seine flacheren Gegner zu übertreffen. Aufgrund seiner überzeugenden Ergebnisse wurde ResNet schnell zu einer der populärsten Architekturen für verschiedene Computer Vision-Aufgaben.

Neue Varianten und Interpretationen von ResNet

Da ResNet in der Forschungsgemeinschaft immer beliebter wird, wird seine Architektur stark untersucht. In diesem Abschnitt werden zuerst einige neue auf ResNet basierende Architekturen vorgestellt und dann ein Dokument vorgestellt, das eine Interpretation von ResNet als Ensemble vieler kleinerer Netzwerke bietet.

ResNeXt

Xie et al. [8] schlug eine Variante von ResNet mit dem Codenamen ResNeXt mit folgendem Baustein vor:

Links: ein Baustein von [2], rechts: ein Baustein von ResNeXt mit Kardinalität = 32

Dies mag Ihnen bekannt vorkommen, da es dem Inception-Modul von [4] sehr ähnlich ist, beide folgen dem Split-Transform-Merge-Paradigma, außer bei dieser Variante werden die Ausgänge verschiedener Pfade durch Hinzufügen zusammengesetzt, während in [4] sind sie tief verkettet. Ein weiterer Unterschied besteht darin, dass sich in [4] jeder Pfad (1×1-, 3×3- und 5×5-Faltung) voneinander unterscheidet, während in dieser Architektur alle Pfade dieselbe Topologie aufweisen.

Die Autoren führten einen Hyperparameter namens Kardinalität ein – die Anzahl unabhängiger Pfade, um eine neue Möglichkeit zur Anpassung der Modellkapazität bereitzustellen. Experimente zeigen, dass Genauigkeit durch Erhöhen der Kardinalität effizienter erzielt werden kann als durch tiefere oder breitere Kardinalität. Die Autoren geben an, dass diese neuartige Architektur im Vergleich zu Inception einfacher an neue Datensätze / Aufgaben anzupassen ist, da sie ein einfaches Paradigma und nur einen einzustellenden Hyperparameter hat, während Inception viele Hyperparameter (wie die Kernelgröße vom Faltungslayer jedes Pfades) abzustimmen hat.

Dieser neuartige Baustein hat folgende drei äquivalente Formen:

In der Praxis wird das „Split-transform-merge“ normalerweise durch einen punktweise gruppierten Faltungslayer ausgeführt, die ihre Eingabe in Gruppen von Merkmalskarten aufteilt und eine normale Faltung ausführt, ihre Ausgaben werden tiefenverkettet und dann einem 1×1-Faltungslayer zugeführt.

Dicht verbundenes CNN

Huang et al. [9] schlug eine neuartige Architektur namens DenseNet vor, die die Auswirkungen von Shortcut-Verbindungen weiter ausnutzt – sie verbindet alle Layer direkt miteinander. Bei dieser neuartigen Architektur besteht die Eingabe jedes Layers aus den Funktionskarten aller früheren Layer, und ihre Ausgabe wird an jeden nachfolgenden Layer übergeben. Die Funktionskarten werden mit Tiefenverkettung aggregiert.

Abgesehen von der Lösung des Problems der verschwindenden Gradienten argumentieren die Autoren von [8], dass diese Architektur auch die Wiederverwendung von Funktionen fördert, wodurch das Netzwerk äußerst parametereffizient ist. Eine einfache Interpretation davon ist, dass in [2] [7] die Ausgabe der Identitätszuordnung zum nächsten Block hinzugefügt wurde, was den Informationsfluss behindern könnte, wenn die Merkmalskarten von zwei Schichten sehr unterschiedliche Verteilungen aufweisen. Deshalb kann das Verketten von Merkmalskarten sie alle beibehalten und die Varianz der Ausgaben erhöhen, wodurch die Wiederverwendung von Merkmalen gefördert wird.

Nach diesem Paradigma wissen wir, dass der l_-te Layer k * (l – 1) + k_0-Eingabemerkmalkarten enthält, wobei k_0 die Anzahl der Kanäle im Eingabebild ist. Die Autoren verwendeten einen Hyperparameter namens Wachstumsrate (k), um zu verhindern, dass das Netzwerk zu breit wird, und sie verwendeten auch eine 1×1-Faltungsengpassschicht, um die Anzahl der Merkmalkarten vor der teuren 3×3-Faltung zu reduzieren. Die Gesamtarchitektur ist in der folgenden Tabelle dargestellt:

DenseNet-Architekturen für ImageNet
Tiefes Netzwerk mit stochastischer Tiefe

Obwohl sich ResNet in vielen Anwendungen als leistungsfähig erwiesen hat, besteht ein wesentlicher Nachteil darin, dass ein tieferes Netzwerk in der Regel Wochen für das Training erfordert, was es in realen Anwendungen praktisch unmöglich macht. Um dieses Problem anzugehen, führte Huang et al. [10]  eine kontraintuitive Methode ein, Schichten während des Trainings zufällig zu löschen und das gesamte Netzwerk beim Testen zu verwenden.

Die Autoren verwendeten den Residualblock als Baustein ihres Netzwerks, wenn ein bestimmter Residualblock aktiviert ist, läuft seine Eingabe während des Trainings sowohl durch die Identitätsverknüpfung als auch durch die Gewichtsschichten, andernfalls fließt die Eingabe nur durch die Identitätsverknüpfung. In der Trainingszeit hat jede Schicht eine „Überlebenswahrscheinlichkeit“ und ist zufällig gefallen. Während der Testzeit werden alle Blöcke aktiv behalten und nach ihrer Überlebenswahrscheinlichkeit während des Trainings neu kalibriert.

Formell sei H_l der Ausgang des l_ten Residualblocks, f_l die durch die gewichtete Abbildung des l_ten Blocks definierte Abbildung,  b_l eine Bernoulli-Zufallsvariable, die nur 1 oder 0 sein kann (was anzeigt, ob ein Block aktiv ist), während des Trainings:

Wenn b_l = 1, wird dieser Block zu einem normalen Residualblock, und wenn b_l = 0, wird die obige Formel zu:

Da wir wissen, dass H_ (l – 1) die Ausgabe einer ReLU ist, die bereits nicht negativ ist, reduziert sich die obige Gleichung auf eine Identitätsschicht, die nur die Eingabe an die nächste Schicht weiterleitet:

Sei p_l die Überlebenswahrscheinlichkeit vom Layer l während des Trainings, während der Testzeit haben wir:

Die Autoren haben eine lineare Zerfallsregel auf die Überlebenswahrscheinlichkeit jeder Schicht angewendet, sie argumentieren, dass da frühere Schichten die Eigenschaften des niedrigen Levels extrahieren, die von späteren verwendet werden, sollen sie nicht zu häufig fallen gelassen werden, die resultierende Regel lautet daher:

Wobei L die Gesamtzahl der Blöcke bezeichnet, ist somit p_L die Überlebenswahrscheinlichkeit des letzten verbleibenden Blocks und ist in den Experimenten auf 0,5 festgelegt. Beachten Sie auch, dass in dieser Einstellung die Eingabe als erster Layer (l = 0) behandelt wird und daher nie verloren geht. Das allgemeine Schema für stochastisches Tiefentraining ist in der folgenden Abbildung dargestellt.

Während des Trainings hat jeder Layer die Wahrscheinlichkeit, deaktiviert zu sein

Ähnlich wie bei Dropout [11] kann das Training eines tiefen Netzwerks mit stochastischer Tiefe als Training eines Ensembles aus vielen kleineren ResNet betrachtet werden. Der Unterschied ist, dass diese Methode zufällig eine gesamte Schicht fallen lässt, während Dropout während des Trainings nur einen Teil der verborgenen Einheiten in einer Schicht fallen lässt.

Experimente zeigen, dass das Training eines 110-Layer-ResNets mit stochastischer Tiefe zu einer besseren Leistung führt als das Trainieren eines 110-Layer-ResNets mit konstanter Tiefe, während die Trainingszeit drastisch reduziert wird. Dies legt nahe, dass einige der Schichten (Pfade) in ResNet möglicherweise redundant sind.

ResNet als Ensemble kleinerer Netzwerke

[10] schlug eine kontraintuitive Methode vor, ein sehr tiefes Netzwerk zu trainieren, indem die Schichten während des Trainings zufällig fallen gelassen wurden und das gesamte Netzwerk während der Testzeit verwendet wurde. Veit et al. [14] hatte einen noch kontraintuitiveren Befund: Wir können tatsächlich einige der Schichten eines trainierten ResNets ablegen und trotzdem eine vergleichbare Leistung haben. Dies macht die ResNet-Architektur noch interessanter, da [14] auch Schichten eines VGG-Netzwerks fallen gelassen und dies hat die Leistung drastisch reduziert.

[14] bietet zunächst einen Überblick über ResNet, um die Dinge klarer zu machen. Nachdem wir die Netzwerkarchitektur entrollt haben, ist es klar, dass eine ResNet-Architektur mit i Residualblöcken 2**i verschiedene Pfade hat (da jeder Residualblock zwei unabhängige Pfade bereitstellt).

Angesichts der obigen Feststellung ist es ziemlich klar, warum das Entfernen einiger Schichten in einer ResNet-Architektur die Leistung nicht zu sehr beeinträchtigt – Die Architektur hat viele unabhängige effektive Pfade, und die meisten davon bleiben erhalten, nachdem wir einige Schichten entfernt haben. Im Gegenteil, das VGG-Netzwerk hat nur einen effektiven Pfad, wenn Sie also eine einzelne Schicht entfernen, ist dies der einzige Pfad. Wie in umfangreichen Experimenten in [14] gezeigt.

Die Autoren führten auch Experimente durch, um zu zeigen, dass die Sammlung von Pfaden in ResNet ensembleähnliches Verhalten aufweist. Sie tun dies, indem sie zur Testzeit eine unterschiedliche Anzahl von Layern löschen und prüfen, ob die Leistung des Netzwerks reibungslos mit der Anzahl der gelöschten Layer korreliert. Die Ergebnisse legen nahe, dass sich das Netzwerk tatsächlich wie ein Ensemble verhält, wie in der folgenden Abbildung dargestellt:

Der Fehler nimmt mit zunehmender Anzahl der gelöschten Layer stetig zu

Zum Schluss untersuchten die Autoren die Eigenschaften der Pfade in ResNet:

Es ist offensichtlich, dass die Verteilung aller möglichen Pfadlängen einer Binomialverteilung folgt, wie in (a) der Schlagfigur gezeigt. Die Mehrzahl der Pfade durchläuft 19 bis 35 Residualblöcke.

Untersuchung der Beziehung zwischen der Pfadlänge und der Größe der durch sie fließenden Gradienten. Um die Größe der Gradienten im Pfad der Länge k zu ermitteln, fütterten die Autoren zuerst einen Datenstapel in das Netzwerk und nehmen zufällig k Residualblöcke auf. Bei der umgekehrten Verteilung von Gradienten breiten sie sich nur für die abgetasteten Residualblöcke durch die Gewichtsschicht aus. (b) zeigt, dass die Größe der Gradienten schnell abnimmt, wenn der Pfad länger wird.

Wir können nun die Häufigkeit jeder Pfadlänge mit der erwarteten Höhe der Gradienten multiplizieren, um ein Gefühl dafür zu bekommen, wie viele Pfade jeder Länge zum Training beitragen, wie in (c). Überraschenderweise stammen die meisten Beiträge von Pfaden der Länge 9 bis 18, sie machen jedoch nur einen winzigen Teil der gesamten Pfade aus, wie in (a). Dies ist ein sehr interessanter Befund, da es nahelegt, dass ResNet das Problem der verschwindenden Gradienten nicht für sehr lange Pfade gelöst hat, und dass ResNet tatsächlich das Training eines sehr tiefen Netzwerks ermöglicht, indem es seine effektiven Pfade verkürzt.

Fazit

In diesem Artikel wurde die überzeugende ResNet-Architektur betrachtet und kurz die Ideen hinter ihrem jüngsten Erfolg erläutert. Danach wurden verschiedene Artikel vorgestellt, die interessante Varianten von ResNet vorschlagen oder eine aufschlussreiche Interpretation des ResNet bieten.

Sollten Sie Fragen zu RestNet haben, so können Sie sich an das Team von AI-United.de wenden per Mail oder Q&A.

Alle Abbildungen in diesem Artikel wurden den Originalpapieren in den Referenzen entnommen.

Referenzen:

[1]. A. Krizhevsky, I. Sutskever, and G. E. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in neural information processing systems,pages1097–1105,2012.

[2]. K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. arXiv preprint arXiv:1512.03385,2015.

[3]. K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556,2014.

[4]. C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,pages 1–9,2015.

[5]. R. Srivastava, K. Greff and J. Schmidhuber. Training Very Deep Networks. arXiv preprint arXiv:1507.06228v2,2015.

[6]. S. Hochreiter and J. Schmidhuber. Long short-term memory. Neural Comput., 9(8):1735–1780, Nov. 1997.

[7]. K. He, X. Zhang, S. Ren, and J. Sun. Identity Mappings in Deep Residual Networks. arXiv preprint arXiv:1603.05027v3,2016.

[8]. S. Xie, R. Girshick, P. Dollar, Z. Tu and K. He. Aggregated Residual Transformations for Deep Neural Networks. arXiv preprint arXiv:1611.05431v1,2016.

[9]. G. Huang, Z. Liu, K. Q. Weinberger and L. Maaten. Densely Connected Convolutional Networks. arXiv:1608.06993v3,2016.

[10]. G. Huang, Y. Sun, Z. Liu, D. Sedra and K. Q. Weinberger. Deep Networks with Stochastic Depth. arXiv:1603.09382v3,2016.

[11]. N. Srivastava, G. Hinton, A. Krizhevsky, I. Sutskever and R. Salakhutdinov. Dropout: A Simple Way to Prevent Neural Networks from Overfitting. The Journal of Machine Learning Research 15(1) (2014) 1929–1958.

[12]. A. Veit, M. Wilber and S. Belongie. Residual Networks Behave Like Ensembles of Relatively Shallow Networks. arXiv:1605.06431v2,2016.

AI-United-Redaktion

Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.