Residual Neural Networks (kurz: ResNet) sind besondere Arten von Neuronalen Netzwerken, die in der Bildverarbeitung genutzt werden. Sie zeichnen sich durch ihre tiefe Architekturen aus, die trotzdem noch geringe Fehlerraten hervorrufen kann.
Welche Architektur wurde bisher bei der Bilderkennung genutzt?
Nach dem großen Erfolg eines Convolutional Neural Network (CNN) bei dem ImageNet Wettbewerb im Jahr 2012, waren CNNs die vorherrschende Architektur in der maschinellen Bildverarbeitung. Die Vorgehensweise ist dabei der Funktionsweise unseres Auges nachempfunden. Wenn wir ein Bild sehen, dann teilen wir es automatisch in viele kleine Unterbereiche auf und analysieren diese einzeln. Durch die Zusammensetzung dieser Teilbilder verarbeiten und interpretieren wir das Bild. Wie lässt sich dieses Prinzip in einem Convolutional Neural Network umsetzen?
Die Arbeit passiert in der sogenannten Convolution Layer. Dazu definieren wir einen Filter, der bestimmt wie groß die Teilbilder sein sollen, die wir betrachten, und eine Schrittlänge, die entscheidet wie viele Pixel wir zwischen den Berechnungen weiterfahren, also wie nahe die Teilbilder aneinander liegen. Durch diesen Schritt haben wir die Dimensionalität des Bildes stark reduziert.
Als nächstes folgt die Pooling Layer. Rein rechnerisch passiert hier dasselbe erstmal wie in der Convolution Layer mit dem Unterschied, dass wir vom Ergebnis je nach Anwendung entweder nur den Durchschnitts- oder Maximalwert übernehmen. Dadurch bleiben kleine Features in wenigen Pixeln erhalten, die für die Aufgabenlösung entscheidend sind.
Zum Abschluss kommt eine Fully-Connected Layer im Convolutional Neural Network, wie wir sie bereits von den normalen Neural Networks kennen. Nachdem wir nun die Dimensionen des Bildes stark reduziert haben, können wir nun die eng-vermaschten Schichten nutzen. Hier werden die einzelnen Teilbilder wieder miteinander verknüpft, um die Zusammenhänge zu erkennen und die Klassifizierung vorzunehmen.
Was ist das Problem bei tiefen Neuronalen Netzwerken?
Um bessere Ergebnisse erzielen zu können, wurden die genutzten Architekturen immer tiefer und tiefer. Es wurden also einfach mehrere CNN-Blöcke aufeinandergestapelt in der Hoffnung, dadurch bessere Ergebnisse erzielen zu können. Jedoch ergibt sich bei tiefen Neuronalen Netzwerken die Problematik des sogenannten Vanishing Gradients.
Das Training eines Netzwerkes passiert während der sogenannten Backpropagation. Dabei durchwandert, kurz gesagt, der Fehler das Netzwerk von hinten nach vorne. In jeder Schicht wird berechnet, wie stark das jeweilige Neuron zum Fehler beigetragen hat, indem der Gradient berechnet wird. Umso mehr sich dieser Prozess jedoch den anfänglichen Schichten nähert, umso kleiner kann auch der Gradient werden, sodass es in den vorderen Schichten zu keiner oder nur sehr leichten Anpassung von Neuronengewichtungen kommt. Dadurch haben tiefe Netzwerkstrukturen häufig einen vergleichsweise hohen Fehler.
In der Praxis können wir es uns jedoch nicht so einfach machen und die abnehmende Performance lediglich auf das Vanishing Gradient Problem schieben. Tatsächlich lässt es sich sogar mit sogenannten Batch Normalization Layern relativ gut in den Griff bekommen. Die Tatsache, dass tiefere Neuronale Netzwerke eine schlechtere Performance haben, kann weiterhin auch an der Initialisierung der Schichten liegen oder an der Optimierungsfunktion.
Wie lösen Residual Neural Networks das Problem?
Der Grundbaustein eines Residual Neural Networks sind die sogenannten Residual Blocks. Die Grundidee hierbei ist, dass sogenannte “Skip Connections” in das Netzwerk eingebaut werden. Diese sorgen dafür, dass die Aktivierung einer Schicht mit dem Output einer späteren Schicht zusammenaddiert werden.
Diese Architektur ermöglicht es dem Netzwerk gewisse Schichten einfach zu überspringen, vor allem dann, wenn sie nichts zu einem besseren Ergebnis beitragen. Ein Residual Neural Network setzt sich aus mehreren von diesen sogenannten Residual Blocks zusammen.
Welche Probleme können bei ResNets entstehen?
Vor allem bei Convolutional Neural Networks kommt es natürlich vor, dass die Dimensionalität am Anfang der Skip Connection nicht mit der am Ende der Skip Connection übereinstimmt. Das ist vor allem dann der Fall, wenn mehrere Schichten übersprungen werden. Bei Convolutional Neural Networks wird nämlich in jedem Block die Dimensionalität mithilfe eines Filters verändert. Somit steht die Skip Connection vor dem Problem, die Inputs vorheriger Layer einfach zu dem Output von späteren Layern hinzuzufügen.
Um dieses Problem zu lösen, kann das Residual mit einer linearen Projektion multipliziert werden, um die Dimensionen anzugleichen. In vielen Fällen wird dafür beispielsweise eine 1×1 Convolutional Layer genutzt. Es kann jedoch auch vorkommen, dass eine Angleichung von Dimensionen gar nicht notwendig ist.
Wie baut man einen ResNet Block in TensorFlow?
Ein ResNet Block lässt sich in TensorFlow relativ einfach programmieren, vor allem dann, wenn sichergestellt ist, dass die Dimensionen bei der Zusammenführung diesselben sind.
In diesem Fall durchläuft der Input erst eine Dense-Layer mit 1024 Neuronen. Anschließend folgt ein Block bestehend aus einer Dropout-Layer und zwei Dense-Layer, die die Zahl der Neuronen erst auf 512 beschränkt, bevor es wieder auf 1024 erhöht wird. Dann erfolgt die Zusammenführung mit der Add-Layer. Da beide Inputs eine Dimensionalität von 1024 haben, lassen sie sich ohne Probleme aufaddieren.
Wie funktioniert das Training eines ResNet Modells?
Das Training eines Residual Neural Networks durchläuft den Standardprozess wie er aus dem Training von tiefen Neuronalen Netzwerken bekannt ist, jedoch mit dem Unterschied, dass die Skip-Verbindungen beachtet werden müssen. Durch diese Besonderheit wird das Training von noch größeren und tieferen Neuronalen Netzwerken begünstigt.
Nach dem Prinzip der Backpropagation werden die Trainingsdaten in das Modell gespeist und durchlaufen alle Schichten bis zur Ausgabelayer. Dort wird dann die Ausgabe des Modells mit dem tatsächlichen Label des Datensatzes verglichen, um den Verlust berechnen zu können. Dieser Fehler wird dann mithilfe des Gradientenverfahrens von hinten nach vorne durch die Netzwerkstruktur geführt um die Gewichte der Neuronen so anzupassen, dass der Fehler minimiert wird.
Soweit ähnelt dieser Prozess einem normalen Deep Neural Network. Die SkipVerbindungen des ResNets sorgen jetzt jedoch dafür, dass die Gradienteninformationen einfacher durch das Netz fließen können, da Schichten umgangen werden können, deren Neuronen einen verschwindenden Gradienten haben könnten und deshalb den Lernprozess behindern. Ohne diese Skip-Verbindung würden solche Schichten dazu führen, dass der Lernprozess unterbrochen wird, da die Gewichte nicht aktualisiert werden können.
Natürlich können Residual Neural Networks neben der Standardtrainingsverfahren wie der Backpropagation oder dem stochastischen Gradientenabstieg (SGD) auch mit komplexeren Methoden trainiert werden, wie beispielsweise einer Dropoutschicht oder einer Batchnormalisierung. Diese Techniken führen dazu, dass die Leistung weiter verbessert wird und eine mögliche Überanpassung verhindert wird.
Abschließend ähnelt der Trainigsprozess von Residual Neural Networks stark dem von normalen, tiefen Neuronalen Netzwerken. Die Daten werden in das Modell eingespeist und durchlaufen es, sodass ein Verlust oder Fehler berechnet werden kann. Dieser durchläuft von hinten nach vorne das Netzwerk, um die Gewichte mithilfe des Gradienten updaten zu können. Der einzige Unterschied ist hierbei, dass bei diesem Durchlauf Schichten mit einem geringen Gradienten übersprungen werden können, um eine schnellere Konvergenz und eine höhere Genauigkeit erzielen zu können.
Was sind die Vor- und Nachteile bei der Verwendung von ResNets?
ResNets sind mittlerweile zu einer beliebten Wahl geworden, wenn tiefe Neuronale Netzwerke trainiert werden sollen. Vor dem Einsatz dieser Schichten sollten jedoch die Vor- und Nachteile bedacht werden, die eine Nutzung mit sich bringt:
Vorteile:
- Verbesserte Genauigkeit: In verschiedenen Benchmark-Datensätzen konnten Residual Neural Networks eine höhere Genauigkeit erzielen als herkömmliche tiefe Neuronale Netzwerke.
- Schnellere Konvergenz: Die Skip-Verbindungen sorgen dafür, dass eine schnellere Konvergenz erzielt werden kann, da die Gradienten direkter durch das Modell fließen können und Vanishing Gradients umgangen werden. Dies führt auch zu einem schnelleren Training und damit weniger Kosten für die Nutzung von Ressourcen.
- Bessere Generalisierung: Durch die Struktur von ResNets erlerne diese Modelle allgemeinere Strukturen in den Daten und fokussieren sich nicht auf datensatzspezifische Merkmale. Dadurch erhöht sich die Generalisierung des Modells und es liefert bessere Ergebnisse bei ungesehenen Daten.
- Transfer-Lernen: ResNets sind eine beliebte Wahl für die Nutzung innerhalb von Transfer Learning, da sie hier sehr gute Ergebnisse erzielen konnten. Dabei werden allgemeine Modelle trainiert und dann mithilfe von kleineren Datensätzen auf spezielle Anwendungen feinabgestimmt. Diese Modelle sind vor allem im Bereich des Natural Language Processings von großer Bedeutung.
Nachteile:
- Erhöhte Komplexität: Die Skip-Verbindungen führen zu einer höheren Komplexität des Modells, was sich wiederum in höheren Rechenanforderungen und höherem Speicherbedarf niederschlagen kann. Somit muss im Einzelfall entschieden werden, ob sich die Einführung dieser Schichten lohnt oder ob das Neuronale Netz auch ohne auskommt.
- Overfitting: Bei kleinen Datensätzen können auch Residual Neural Networks zu Overfitting führen, da die Modellstruktur zu komplex ist und mit den wenigen Trainingsinstanzen nicht ausreichend erlernt werden kann. Deshalb sollte mit geeigneten Regularisierungstechniken gearbeitet werden, um das zu vermeiden.
- Interpretierbarkeit: Wie auch bei normalen tiefen Neuronalen Netzwerken ist die Interpretierbarkeit der großen Netzwerkstrukturen nur sehr schwer möglich. Durch das verzweigte Netz kann nicht verstanden werden, wie genau das Modell zu Entscheidungen kommt. Die Skip-Verbindungen erschweren diese Interpretierbarkeit weiter.
Residual Neural Networks bieten eine leistungsstarke und vielseitige neuronale Netzwerkarchitektur, die vor allem beim Aufbau von tiefen Neuronalen Netzwerken zu guten Ergebnissen führen kann. Jedoch muss der Einsatz dieser Struktur von Anwendung zu Anwendung neu bewertet werden, da die Verwendung auch einige Nachteile mit sich bringt.
Das solltest Du mitnehmen
- Residual Neural Networks oder kurz ResNets bieten eine Möglichkeit, tiefe Neuronale Netzwerke ohne hohe Fehlerrate zu trainieren.
- Dazu sind sie aus vielen sogenannten Residual Blocks aufgebaut, die durch eine Skip Connection charakterisiert sind.
- Die Skip Connection ermöglicht es dem Netzwerk eine oder mehrere Schichten zu überspringen, falls diese das Ergebnis nicht verbessern.
Was ist blockchain-based AI?
Entdecken Sie das Potenzial der blockchain-based AI in diesem aufschlussreichen Artikel über Künstliche Intelligenz und Blockchain.
Was ist Boosting im Machine Learning?
Boosting: Eine Ensemble-Technik zur Modellverbesserung. Lernen Sie in unserem Artikel Algorithmen wie AdaBoost, XGBoost, uvm. kennen.
Was ist Feature Engineering?
Meistern Sie die Kunst des Feature Engineering: Steigern Sie die Modellleistung und -genauigkeit mit der Datentransformationen!
Was sind N-grams?
Die Macht des NLP: Erforschen Sie n-Grams in der Textanalyse, Sprachmodellierung und verstehen Sie deren Bedeutung im NLP.
Was ist das No-Free-Lunch Theorem (NFLT)?
Entschlüsselung des No-Free-Lunch-Theorems: Implikationen und Anwendungen in ML und Optimierung.
Was ist Automated Data Labeling?
Erschließen Sie die Effizienz des maschinellen Lernens mit Automated Data Labeling. Entdecken Sie die Vorteile, Techniken und Tools.
Andere Beiträge zum Thema ResNet
- Hier findest Du das ursprüngliche Paper zu Residual Neural Networks: Deep Residual Learning for Image Recognition.
Niklas Lang
Seit 2020 bin ich als Machine Learning Engineer und Softwareentwickler tätig und beschäftige mich leidenschaftlich mit der Welt der Daten, Algorithmen und Softwareentwicklung. Neben meiner Arbeit in der Praxis unterrichte ich an mehreren deutschen Hochschulen, darunter die IU International University of Applied Sciences und die Duale Hochschule Baden-Württemberg, in den Bereichen Data Science, Mathematik und Business Analytics.
Mein Ziel ist es, komplexe Themen wie Statistik und maschinelles Lernen so aufzubereiten, dass sie nicht nur verständlich, sondern auch spannend und greifbar werden. Dabei kombiniere ich praktische Erfahrungen aus der Industrie mit fundierten theoretischen Grundlagen, um meine Studierenden bestmöglich auf die Herausforderungen der Datenwelt vorzubereiten.