Convolutional Neural Network

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Ein Convolutional Neural Network (CNN oder ConvNet), zu Deutsch etwa „faltendes neuronales Netzwerk“, ist ein künstliches neuronales Netz. Es handelt sich um ein von biologischen Prozessen inspiriertes Konzept im Bereich des maschinellen Lernens[1]. Convolutional Neural Networks finden Anwendung in zahlreichen modernen Technologien der künstlichen Intelligenz, vornehmlich bei der maschinellen Verarbeitung von Bild- oder Audiodaten.

Als Begründer der CNNs gilt Yann LeCun.

Aufbau[Bearbeiten | Quelltext bearbeiten]

Struktur eines typischen CNNs. Subsampling entspricht Pooling. Dieses Netz besitzt pro Convolutional Layer mehrere Filterkernel, sodass Schichten an Feature Maps entstehen, die jeweils den gleichen Input bekommen, jedoch aufgrund unterschiedlicher Gewichtsmatrizen unterschiedliche Features extrahieren.

Grundsätzlich besteht die Struktur eines klassischen Convolutional Neural Networks aus einem oder mehreren Convolutional Layer, gefolgt von einem Pooling Layer. Diese Einheit kann sich prinzipiell beliebig oft wiederholen, bei ausreichend Wiederholungen spricht man dann von Deep Convolutional Neural Networks, die in den Bereich Deep Learning fallen. Architektonisch können im Vergleich zum mehrlagigen Perzeptron drei wesentliche Unterschiede festgehalten werden (Details hierzu siehe Convolutional Layer):

  • 2D- oder 3D-Anordnung der Neuronen
  • Geteilte Gewichte
  • Lokale Konnektivität

Convolutional Layer[Bearbeiten | Quelltext bearbeiten]

Im üblichsten Anwendungsfall, der Bilderkennung, liegt der Input entweder als zwei- oder dreidimensionale Matrix (Graubild oder RGB-Bild bzw. vergleichbarer Farbraum) bestehend aus Pixeln vor. Dementsprechend sind die Neuronen im Convolutional Layer angeordnet.

Die Aktivität jedes Neurons wird über eine diskrete Faltung (daher der Zusatz convolutional) berechnet. Intuitiv wird dabei schrittweise eine vergleichsweise kleine Faltungsmatrix (Filterkernel) über das Inputbild bewegt. Der Input eines Neurons im Convolutional Layer berechnet sich als inneres Produkt des Filterkernels mit dem aktuell unterliegenden Bildausschnitt. Dementsprechend reagieren benachbarte Neuronen im Convolutional Layer auf sich überlappende Bereiche (ähnliche Frequenzen in Audiosignalen oder lokale Umgebungen in Bildern).[2]

3D-Convolution-Animation. Die Werte im Kernel werden selbstständig erlernt. Zur Behandlung der Randregionen des Inputs existieren verschiedene Padding-Methoden.

Hervorzuheben ist, dass ein Neuron in diesem Layer nur auf Reize in einer lokalen Umgebung des vorherigen Layers reagiert. Dies folgt dem biologischen Vorbild des rezeptiven Feldes. Zudem sind die Gewichte für alle Neuronen eines Convolutional Layers identisch (geteilte Gewichte, englisch: shared weights). Dies führt dazu, dass beispielsweise jedes Neuron im ersten Convolutional Layer codiert, zu welcher Intensität eine Kante in einem bestimmten lokalen Bereich des Input-Bildes vorliegt. Die Kantenerkennung als erster Schritt der Bilderkennung besitzt hohe biologische Plausibilität.[3] Aus den shared weights folgt unmittelbar, dass Translationsinvarianz eine inhärente Eigenschaft von CNNs ist.

Der mittels diskreter Faltung ermittelte Input eines jeden Neurons wird nun von einer Aktivierungsfunktion, bei CNNs üblicherweise Rectified Linear Unit, kurz ReLu (), in den Output verwandelt, der die relative Feuerfrequenz eines echten Neurons modellieren soll. Da Backpropagation die Berechnung der Gradienten verlangt, wird in der Praxis eine differenzierbare Approximation von ReLu benutzt:

Analog zum visuellen Cortex steigt in tiefer gelegenen Convolutional Layers sowohl die Größe der rezeptiven Felder (siehe Sektion Pooling Layer) als auch die Komplexität der erkannten Features (beispielsweise Teile eines Gesichts).

Pooling Layer[Bearbeiten | Quelltext bearbeiten]

Max pooling mit einem 2×2-Filter und Schrittgröße = 2. Die Schrittgröße gibt an wie viele Pixel der Filter pro Operation verschoben wird.

Im folgenden Schritt, dem Pooling, werden überflüssige Informationen verworfen. Zur Objekterkennung in Bildern etwa, ist die exakte Position einer Kante im Bild von vernachlässigbarem Interesse – die ungefähre Lokalisierung eines Features ist hinreichend. Es gibt verschiedene Arten des Poolings. Mit Abstand am stärksten verbreitet ist das Max-Pooling, wobei aus jedem 2 × 2 Quadrat aus Neuronen des Convolutional Layers nur die Aktivität des aktivsten (daher "Max") Neurons für die weiteren Berechnungsschritte beibehalten wird; die Aktivität der übrigen Neuronen wird verworfen (siehe Bild). Trotz der Datenreduktion (im Beispiel 75 %) verringert sich in der Regel die Performance des Netzwerks nicht durch das Pooling. Im Gegenteil, es bietet einige signifikante Vorteile:

  • Verringerter Platzbedarf und erhöhte Berechnungsgeschwindigkeit
  • Daraus resultierende Möglichkeit zur Erzeugung tieferer Netzwerke, die komplexere Aufgaben lösen können.
  • Automatisches Wachstum der Größe der rezeptiven Felder in tieferen Convolutional Layers (ohne dass dafür explizit die Größe der Faltungsmatrizen erhöht werden müsste).
  • Präventionsmaßnahme gegen Overfitting

Alternativen wie das Mean-Pooling haben sich in der Praxis als weniger effizient erwiesen.[4]

Das biologische Pendant zum Pooling ist die laterale Hemmung im visuellen Cortex.

Fully-connected Layer[Bearbeiten | Quelltext bearbeiten]

Nach einigen sich wiederholenden Einheiten bestehend aus Convolutional und Pooling Layer kann das Netzwerk mit einem (oder mehreren) Fully-connected Layer entsprechend der Architektur des mehrlagigen Perzeptrons abschließen. Dies wird vor allem bei der Klassifizierung angewendet. Die Anzahl der Neuronen im letzten Layer korrespondiert dann üblicherweise zu der Anzahl an (Objekt-)Klassen, die das Netz unterscheiden soll. Dieses, sehr redundante, sogenannte One-Hot-encoding hat den Vorteil, dass keine impliziten Annahmen über Ähnlichkeiten von Klassen gemacht werden.

Die Eingabe zum letzten, jetzt eindimensionalen Layer des CNNs, wird in der Regel von einer Softmax-Funktion, einer translations- aber nicht skaleninvarianten Normalisierung über alle Neuronen im letzten Layer, in eine für den Programmierer interpretierbaren Ausgabe verwandelt, der beispielsweise zu einer Objektklasse wie "Katze" korrespondiert. Die Kombination aus Softmax und One-Hot-Encoding ermöglicht dem Entwickler den Vertrauensgrad des Netzwerks auszulesen, da jeder Klasse ein Wert zwischen 0 und 1 zugeordnet wird und ihre Summe auf 1 kumuliert.

Training[Bearbeiten | Quelltext bearbeiten]

CNNs werden in aller Regel überwacht trainiert. Während des Trainings wird dabei für jeden gezeigten Input der passende One-Hot-Vektor bereitgestellt. Via Backpropagation wird der Gradient eines jeden Neurons berechnet und die Gewichte in Richtung des steilsten Abfalls der Fehleroberfläche angepasst.

Interessanterweise haben drei vereinfachende Annahmen, die den Berechnungsaufwand des Netzes maßgeblich verringern und damit tiefere Netzwerke zulassen, wesentlich zum Erfolg von CNNs beigetragen.

  • Pooling – Hierbei wird der Großteil der Aktivität eines Layers schlicht verworfen.
  • ReLu – Die gängige Aktivierungsfunktion, die jeglichen negativen Input auf 0 projiziert.
  • Dropout – Eine Regularisierungsmethode beim Training, die Overfitting verhindert. Dabei werden pro Trainingsschritt zufällig ausgewählte Neuronen aus dem Netzwerk entfernt.

Expressivität und Notwendigkeit[Bearbeiten | Quelltext bearbeiten]

Da CNNs eine Sonderform von mehrlagigen Perzeptrons darstellen,[5] sind sie prinzipiell identisch in ihrer Ausdrucksstärke.

Der Erfolg von CNNs lässt sich mit ihrer kompakten Repräsentation der zu lernenden Gewichte ("shared weights") erklären. Grundlage ist die Annahme, dass ein potentiell interessantes Feature (In Objekterkennung etwa Kanten) an jeder Stelle des Inputsignals (des Bildes) interessant ist. Während ein klassisches zweilagiges Perzeptron mit jeweils 1000 Neuronen pro Ebene für die Verarbeitung von einem Bild im Format 32 × 32 insgesamt 2 Millionen Gewichte benötigt, verlangt ein CNN mit zwei sich wiederholenden Einheiten, bestehend aus insgesamt 13.000 Neuronen, nur 160.000 (geteilte) zu lernende Gewichte, wovon der Großteil im hinteren Bereich (fully-connected Layer) liegt.

Neben dem wesentlich verringerten Arbeitsspeicherbedarf, haben sich geteilte Gewichte als robust gegenüber Translations-, Rotations-, Skalen- und Luminanzvarianz erwiesen.[5]

Um mithilfe eines mehrlagigen Perzeptrons eine ähnliche Performance in der Bilderkennung zu erreichen, müsste dieses Netzwerk jedes Feature für jeden Bereich des Inputsignals unabhängig erlernen. Dies funktioniert zwar ausreichend für stark verkleinerte Bilder (etwa 32 × 32), aufgrund des Fluchs der Dimensionalität scheitern MLPs jedoch an höher auflösenden Bildern.

Biologische Plausibilität[Bearbeiten | Quelltext bearbeiten]

CNNs können als ein vom Gehirn inspiriertes Konzept verstanden werden, insbesondere des visuellen Cortex. Durch Untersuchungen mit fMRT konnte gezeigt werden, dass Aktivierungsmuster einzelner Schichten eines CNNs mit den Neutronenaktivitäten in bestimmten Arealen des visuellen Cortex korrelieren, wenn sowohl das CNN als auch die menschlichen Testprobanden mit ähnlichen Aufgaben aus der Bildverarbeitung konfrontiert werden.[6][7]

Neuronen im primären visuellen Cortex, die sogenannten „simple cells“, reagieren auf Aktivität in einem kleinen Bereich der Retina. Dieses Verhalten wird in CNNs durch die diskrete Faltung in den convolutional Layers modelliert. Funktional sind diese biologischen Neuronen für die Erkennung von Kanten in bestimmten Orientierungen zuständig. Diese Eigenschaft der simple cells kann wiederum mithilfe von Gabor-Filtern präzise modelliert werden.[8][9] Trainiert man ein CNN zur Objekterkennung, konvergieren die Gewichte im ersten Convolutional Layer ohne jedes „Wissen“ über die Existenz von simple cells gegen Filtermatrizen, die Gabor-Filtern erstaunlich nahe kommen[10], was als Argument für die biologische Plausibilität von CNNs verstanden werden kann. Angesichts einer umfassenden statistischen Informationsanalyse von Bildern mit dem Ergebnis, dass Ecken und Kanten in verschiedenen Orientierungen die am stärksten voneinander unabhängigen Komponenten in Bildern – und somit die fundamentalsten Grundbausteine zur Bildanalyse – sind, ist dies jedoch zu erwarten.[11]

Inwieweit der in der Regel für CNNs angewandte Lernmechanismus, Backpropagation, biologisch plausibel ist, ist umstritten.[12][13][14]

Anwendung[Bearbeiten | Quelltext bearbeiten]

Seit dem Einsatz von Grafikprozessor-Programmierung können CNNs erstmals effizient trainiert werden.[15] Sie gelten als State-of-the-art-Methode für zahlreiche Anwendungen im Bereich der Klassifizierung.

Bilderkennung[Bearbeiten | Quelltext bearbeiten]

CNNs erreichen eine Fehlerquote von 0.23 % auf eine der am häufigsten genutzten Bilddatenbanken, MNIST, was (Stand 2016) der geringsten Fehlerquote aller jemals getesteten Algorithmen entspricht.[16]

Im Jahr 2012 verbesserte ein CNN (AlexNet) die Fehlerquote beim jährlichen Wettbewerb der Benchmark-Datenbank ImageNet (ILSVRC) von dem vormaligen Rekord von 25,8 % auf 16,4 %. Seitdem nutzen alle vorne platzierten Algorithmen CNN-Strukturen. Im Jahr 2016 wurde eine Fehlerquote < 3 % erreicht.[17]

Auch im Bereich der Gesichtserkennung konnten bahnbrechende Resultate erzielt werden.[18]

Spracherkennung[Bearbeiten | Quelltext bearbeiten]

CNNs werden erfolgreich zur Spracherkennung eingesetzt und haben hervorragende Resultate in folgenden Bereichen erzielt:

AlphaGo[Bearbeiten | Quelltext bearbeiten]

Hauptartikel: AlphaGo

Der von Google DeepMind entwickelte Algorithmus, dem es erstmals gelang, einen menschlichen Profi-Go-Spieler (Lee Sedol) zu besiegen, benutzt unter anderem ein 13-Layer-CNN zur Erkennung des aktuellen Spielzustandes.[25][26]

Siri[Bearbeiten | Quelltext bearbeiten]

Der von Apple entwickelte persönliche Smartphone-Assistent Siri (Speech Interpretation and Recognition Interface) verwendet diverse Verfahren des maschinellen Lernens, darunter auch Convolutional Neural Networks, primär zur Umwandlung des akustischen Audiobefehls in Textform, woraus im Anschluss der Inhalt des Befehls extrahiert wird.[27][28]

Literatur[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Masakazu Matsugu, Katsuhiko Mori, Yusuke Mitari, Yuji Kaneda: Subject independent facial expression recognition with robust face detection using a convolutional neural network. In: Neural Networks. 16, Nr. 5, 2003, S. 555–559. doi:10.1016/S0893-6080(03)00115-1. Abgerufen am 28. Mai 2017.
  2. unknown: Convolutional Neural Networks (LeNet). Abgerufen am 17. November 2016 (englisch).
  3. D. H. Hubel, T. N. Wiesel: Receptive fields and functional architecture of monkey striate cortex. In: The Journal of Physiology. 195, Nr. 1, 1. März 1968, ISSN 0022-3751, S. 215–243. doi:10.1113/jphysiol.1968.sp008455. PMID 4966457. PMC 1557912 (freier Volltext).
  4. Dominik Scherer, Andreas C. Müller, Sven Behnke: Evaluation of Pooling Operations in Convolutional Architectures for Object Recognition. In: Artificial Neural Networks (ICANN), 20th International Conference on. Springer, 2010, S. 92-101.
  5. a b Yann LeCun: LeNet-5, convolutional neural networks. Abgerufen am 17. November 2016.
  6. Haiguang Wen: Neural Encoding and Decoding with Deep Learning for Dynamic Natural Vision. Abgerufen am 17. September 2017 (englisch).
  7. Sandy Wiraatmadja: Modeling the Visual Word Form Area Using a Deep Convolutional Neural Network. Abgerufen am 17. September 2017 (englisch).
  8. J. G. Daugman: Uncertainty relation for resolution in space, spatial frequency, and orientation optimized by two-dimensional visual cortical filters. In: Journal of the Optical Society of America A, 2 (7): 1160–1169, July 1985.
  9. S. Marčelja: Mathematical description of the responses of simple cortical cells. In: Journal of the Optical Society of America. 70, Nr. 11, 1980, S. 1297–1300. doi:10.1364/JOSA.70.001297.
  10. ImageNet Classification with Deep Convolutional Neural Networks, A. Krizhevsky, I. Sutskever and G. E. Hinton (PDF)
  11. The “Independent Components” of Scenes are Edge Filters (PDF), A. Bell, T. Sejnowski, 1997, abgerufen am 17. November 2016.
  12. A more biological plausible learning rule than Backpropagation applied to a network model of cortical area 7d (PDF)
  13. Towards biologically plausible Deep Learning (PDF)
  14. Geoffrey Hinton: Stanford Seminar - Can the brain do back-propagation? 28. April 2016, abgerufen am 24. September 2017 (englisch).
  15. ImageNet Classification with Deep Convolutional Neural Networks (PDF)
  16. Dan Ciresan, Ueli Meier, Jürgen Schmidhuber: Multi-column deep neural networks for image classification. In: Institute of Electrical and Electronics Engineers (IEEE) (Hrsg.): 2012 IEEE Conference on Computer Vision and Pattern Recognition. , New York, NY, June 2012, S. 3642–3649. arxiv:1202.2745v1. doi:10.1109/CVPR.2012.6248110. Abgerufen am 9. Dezember 2013.
  17. ILSVRC 2016 Results
  18. Improving multiview face detection with multi-task deep convolutional neural networks
  19. A Deep Architecture for Semantic Parsing. Abgerufen am 17. November 2016 (englisch).
  20. Learning Semantic Representations Using Convolutional Neural Networks for Web Search – Microsoft Research. Abgerufen am 17. November 2016.
  21. A Convolutional Neural Network for Modelling Sentences. 17. November 2016.
  22. Convolutional Neural Networks for Sentence Classification. Abgerufen am 17. November 2016.
  23. Natural Language Processing (almost) from Scratch. Abgerufen am 17. November 2016.
  24. heise online: Maschinelle Übersetzer: DeepL macht Google Translate Konkurrenz. 29. August 2017, abgerufen am 18. September 2017.
  25. Mastering the Game of GO with Deep Neural Networks and Tree Search. Abgerufen am 30. Januar 2016.
  26. AlphaGo – Google DeepMind. Abgerufen am 17. November 2016.
  27. Convolutional Neural Networks for small-footprint keyword spotting (PDF)
  28. An exclusive inside look at how artificial intelligence and machine learning work at Apple, 30. Juli 2016.