Wikipedia · einfach zusammengefasst · Stand
Convolutional Neural Network
Im Jahr 1987 trainierte Alex Waibel ein CNN namens TDNN durch Backpropagation und erzielte damit Bewegungsinvarianz. Auch Yann LeCun publizierte ab dem …
Inhalt6 Abschnitte
Grundidee und Bedeutung
Ein Convolutional Neural Network (CNN oder ConvNet), auf Deutsch etwa „faltendes neuronales Netzwerk“, ist ein künstliches neuronales Netz aus dem Bereich des maschinellen Lernens. Es ist von biologischen Prozessen inspiriert und wird besonders für die Verarbeitung von Bild- und Audiodaten eingesetzt.
CNNs sind wichtig, weil sie Merkmale wie Kanten, Formen oder Muster automatisch aus Daten lernen können. Statt jedes Bildpixel unabhängig wie in einem klassischen mehrlagigen Perzeptron zu behandeln, nutzen sie lokale Zusammenhänge und geteilte Gewichte. Dadurch brauchen sie deutlich weniger zu lernende Parameter und können auch größere oder komplexere Eingaben effizient verarbeiten.
Die Architektur wurde 1979 von Kunihiko Fukushima unter dem Namen Neocognitron eingeführt. 1987 trainierte Alex Waibel ein CNN namens TDNN durch Backpropagation und erzielte Bewegungsinvarianz. Yann LeCun veröffentlichte ab Ende der 1980er Jahre wichtige Beiträge zu CNNs.
Aufbau eines CNN
Ein klassisches CNN besteht grundsätzlich aus einem oder mehreren Convolutional Layern, gefolgt von einem Pooling Layer. Diese Einheit kann mehrfach wiederholt werden. Bei vielen Wiederholungen spricht man von Deep Convolutional Neural Networks, die zum Deep Learning gehören.
Im Vergleich zu einem Multi-Layer-Perzeptron hat ein CNN drei wichtige architektonische Eigenschaften: Die Neuronen sind meist zwei- oder dreidimensional angeordnet, die Gewichte werden geteilt, und die Verbindungen sind lokal. Lokal bedeutet: Ein Neuron reagiert nur auf einen kleinen Bereich der vorherigen Schicht, nicht auf die gesamte Eingabe.
Nach mehreren Convolutional- und Pooling-Schichten kann ein CNN mit einem oder mehreren Fully-connected Layern enden. Diese vollständig verbundenen Schichten werden besonders bei Klassifikationsaufgaben verwendet. Die Zahl der Neuronen im letzten Layer entspricht dabei häufig der Zahl der Objektklassen. Oft wird ein One-Hot-Encoding genutzt, bei dem jede Klasse durch genau ein aktives Ausgabeneuron dargestellt wird. Die letzte Ausgabe wird meist mit einer Softmax-Funktion in eine Wahrscheinlichkeitsverteilung überführt.
Faltung und Merkmalskarten
Die Eingabe eines CNN liegt häufig als zwei- oder dreidimensionale Matrix vor, zum Beispiel als Pixelmatrix eines Graustufen- oder Farbbildes. In einem Convolutional Layer wird eine kleine Faltungsmatrix, der Filterkernel, schrittweise über die Eingabe bewegt. Für jede Position wird das innere Produkt zwischen dem Kernel und dem gerade darunterliegenden Bildausschnitt berechnet.
Die wiederholte Anwendung desselben Filters erzeugt eine Feature Map. Eine Feature Map zeigt, wo und wie stark ein bestimmtes Merkmal in der Eingabe vorkommt. Mehrere Filter können parallel gelernt werden, sodass ein Layer verschiedene Merkmale erkennt.
Ein wichtiges Prinzip sind shared weights, also geteilte Gewichte: Derselbe Filter wird an vielen Positionen verwendet. Dadurch kann ein Merkmal unabhängig davon erkannt werden, wo es im Bild liegt. Diese Eigenschaft wird als Translationsinvarianz bezeichnet.
Nach der Faltung wird der berechnete Wert durch eine Aktivierungsfunktion in eine Ausgabe umgewandelt. Bei CNNs wird häufig die Rectified Linear Unit verwendet: f(x)=max(0,x). In der Praxis kann für Backpropagation eine differenzierbare Approximation genutzt werden: f(x)=ln(1+e^x).
Für eine Eingabe der Größe W × W × D und D_out Kerne mit räumlicher Größe F, Schrittweite S und Padding P ergibt sich die räumliche Ausgabegröße durch: W_out = ((W - F + 2·P) / S) + 1.
Pooling und Varianten
Pooling reduziert die Datenmenge, indem es nahe beieinanderliegende Ausgaben zusammenfasst. Bei der Objekterkennung ist zum Beispiel die exakte Position einer Kante oft weniger wichtig als ihr ungefähres Vorhandensein. Pooling verkleinert die räumliche Darstellung, verringert Rechenaufwand und Speicherbedarf, ermöglicht tiefere Netzwerke, vergrößert die rezeptiven Felder in tieferen Schichten und kann Overfitting vorbeugen.
Am weitesten verbreitet ist Max Pooling. Dabei wird aus einem Bereich, zum Beispiel einem 2×2-Quadrat, nur der größte Aktivierungswert übernommen. In diesem Beispiel werden 75 % der Werte verworfen. Alternativen wie Mean- beziehungsweise Average Pooling gelten laut Artikel in der Praxis als weniger effizient.
Für eine Aktivierungskarte der Größe W × W × D, einen Pooling-Kernel der Größe F und Schrittweite S gilt: W_out = ((W - F) / S) + 1. Das Ausgabevolumen hat dann die Größe W_out × W_out × D.
Weitere Varianten sind Average Pooling, bei dem der Durchschnitt eines Bereichs berechnet wird, Global Pooling, das alle Werte pro Feature Map zusammenfasst, und Stochastic Pooling, bei dem Werte nicht-deterministisch mit Wahrscheinlichkeiten ausgewählt werden. Stochastic Pooling soll die Robustheit gegenüber kleinen Abweichungen in den Eingabedaten verbessern.
Training, Leistung und Grenzen
CNNs werden meist überwacht trainiert. Für jeden Input wird während des Trainings der passende One-Hot-Vektor bereitgestellt. Mit Backpropagation wird der Gradient jedes Neurons berechnet, und die Gewichte werden in Richtung des steilsten Abfalls der Fehleroberfläche angepasst.
Drei vereinfachende Annahmen tragen wesentlich zum Erfolg von CNNs bei: Pooling verwirft einen großen Teil der Aktivität einer Schicht, ReLU setzt negative Eingaben auf 0, und Dropout entfernt beim Training zufällig ausgewählte Neuronen als Regularisierung gegen Overfitting.
Da CNNs eine Sonderform mehrlagiger Perzeptrons sind, besitzen sie prinzipiell dieselbe Ausdrucksstärke. Ihr Vorteil liegt in der kompakten Repräsentation der Gewichte. Ein klassisches zweilagiges Perzeptron mit jeweils 1000 Neuronen pro Ebene braucht für ein Bild im Format 32 × 32 mehr als 2 Millionen Gewichte. Ein CNN mit zwei wiederholten Einheiten und insgesamt 13.000 Neuronen benötigt dagegen nur 160.000 geteilte Gewichte.
CNNs gelten als robust gegenüber Translations-, Rotations-, Skalen- und Luminanzvarianz. Ein klassisches Perzeptron müsste dagegen ein Merkmal für jeden Bereich des Eingangssignals getrennt lernen. Für stark verkleinerte Bilder wie 32 × 32 kann das noch funktionieren, bei höher auflösenden Bildern scheitert es wegen des Fluchs der Dimensionalität.
Ein Problem neuronaler Netze ist Overfitting: Ohne Regularisierung kann ein Netz das Rauschen in Trainingsdaten zu stark lernen. Das universelle Approximationstheorem garantiert zwar, dass Feedforward-Netze jede stetige Funktion der Form f: X ∈ R^n ↦ Y ∈ R^m annähern können, aber nicht, dass das Training tatsächlich dorthin führt. Die Faltung wirkt als Regularisierung, weil Gewichte wiederverwendet und damit Modellkapazität verringert wird.
Biologie und Anwendungen
CNNs sind vom visuellen Cortex inspiriert, modellieren biologische neuronale Verarbeitung aber nur begrenzt plausibel. Gegen die biologische Plausibilität spricht vor allem Backpropagation: Es wurden trotz intensiver Bemühungen keine neuronalen Korrelate für backpropagation-ähnliche Fehlersignale gefunden. Außerdem ist unklar, wie der Kortex Zugriff auf ein Zielsignal oder Label bekommen sollte.
Gleichzeitig gibt es funktionale Ähnlichkeiten. fMRT-Untersuchungen zeigten, dass Aktivierungsmuster einzelner CNN-Schichten mit Aktivitäten in bestimmten Arealen des visuellen Cortex korrelieren können. Simple cells im primären visuellen Cortex reagieren auf kleine Bereiche der Retina und sind für Kanten bestimmter Orientierung zuständig. In CNNs kann ähnliches Verhalten durch diskrete Faltung entstehen; trainierte Filter im ersten Convolutional Layer ähneln teilweise Gabor-Filtern.
CNNs werden seit dem Einsatz von Grafikprozessor-Programmierung effizient trainiert und gelten für viele Klassifikationsaufgaben als State-of-the-Art. In der Bilderkennung verbesserte AlexNet 2012 die Fehlerquote beim ImageNet-Wettbewerb ILSVRC von 25,8 % auf 16,4 %. 2016 wurde dort bereits eine Fehlerquote von unter 3 % erreicht. Auf MNIST lag die Fehlerquote im selben Jahr bei 0,23 %.
Weitere Anwendungen sind Gesichtserkennung, Bildsegmentierung mit Fully Convolutional Networks wie dem U-Net, Spracherkennung, semantisches Parsen, Satzklassifizierung, Part-of-speech-Tagging und maschinelle Übersetzung, zum Beispiel im Online-Dienst DeepL. Im Reinforcement Learning können CNNs mit Q-Learning kombiniert werden, um bei komplexen Zuständen wie der Bildschirmausgabe eines Videospiels zukünftige Gewinne von Aktionen zu schätzen. In der Landwirtschaft werden CNNs eingesetzt, um Auswirkungen von Düngung vorherzusagen und Empfehlungen zur Düngung abzugeben.