Was ist ein Convolutional Neural Network (CNN)? 

Ein Convolutional Neural Network (CNN) ist ein neuronales Netzwerk, bei welchem die Aktivität jedes einzelnen künstlichen Neurons über die sogenannte Faltung errechnet wird. Die Faltung/Konvolution bezeichnet einen mathematischen Operator, welcher aus zwei Funktionen eine dritte Funktion errechnet. Dieses Ergebnis kann als mathematisches Produkt der beiden Funktionen gesehen werden. Das Konzept bzw. der Algorithmus wird vor allem im Bereich der Bilderkennung, der Spracherkennung sowie im sogenannten Reinforcement Learning (deutsch: „verstärkendes/bestärkendes Lernen“) eingesetzt.

Während die Bild- und Spracherkennung dem Bereich des Natural Language Processing (NLP), also der Verarbeitung der menschlichen Sprache, zuzuschreiben sind, beschreibt das Reinforcement Learning eine Methode des maschinellen Lernens. Hierbei soll das System selbstständig durch Interaktion mit der Umwelt eine Strategie erlernen, welche zur Problemlösung beitragen kann. Positives/richtiges Verhalten wird belohnt, negatives/falsches bestraft.

Die Grundidee eines Convolutional Neural Network wurde dabei den Vorgängen im menschlichen Gehirn, genauer dem visuellen Cortex, nachempfunden. Erstellt werden können solche CNN beispielsweise in der Programmiersprache Python mithilfe der Programmbibliotheken Keras oder PyTorch, welche passende Bibliotheken für die Erstellung dieses und eine Schnittstelle zum Framework TensorFlow bieten. Auch mit Matlab in Verbindung mit Deep Learning Toolbox können CNNs erstellt, trainiert und angewandt werden. 

Wie ist ein CNN aufgebaut? 

Das architektonische Grundprinzip eines Convolutional Neural Network ist ein Convolutional Layer, gefolgt von einem Pooling Layer. Diese beiden Layer können sich bei der Berechnung des Outputs beliebig oft wiederholen. Abgeschlossen wird das Modell durch einen Fully-connected Layer.

Im ersten Schritt wird die Eingabe in Matrizenform (am Beispiel eines Bildes in Form einer dreidimensionalen Matrix mit den Dimensionen Breite, Höhe und Anzahl der Farbkanäle) eingelesen. Im Convolutional Layer wird über die beschriebene Faltung die Aktivität der einzelnen Neuronen berechnet. Die so ermittelten Inputgrößen werden wie bei einem herkömmlichen neuronalen Netz über eine Aktivierungsfunktion in einen Output umgewandelt. Im Normalfall wird hierfür ein Rectifier (ReLu Funktion (Rectified Linear Unit)) oder die Sigmoidfunktion angewandt. Beide sind nicht-lineare Funktionen und als Positivteil ihres Arguments definiert. Dies bedeutet, dass der Output stets größer gleich null ist. Beide Aktivierungsfunktionen sind beispielsweise in den Bibliotheken Keras oder PyTorch implementiert und können darüber aufgerufen werden. Der Convolutional Layer hat im Gebiet der Bilderkennung die Aufgabe, Kanten, Formen oder andere Merkmale zu erkennen.

In der nächsten Schicht des Convolutional Neural Network, dem Pooling bzw. Subsampling Layer, werden zur Datenreduktion und Performancesteigerung überflüssige Informationen verworfen. Denn beispielsweise für die Bilderkennung ist eine ungefähre Lokalisierung von Objekten völlig ausreichend, die exakte Lage hingegen nicht von großem weiteren Nutzen. Anwendbare Methoden sind hierfür etwa das Max-Pooling oder das Mittelwert-Pooling. In diesem Diskretisierungsprozess werden in definierten Bereichen von Neuronen des Convolutional Layers (z. B. 2×2-Matrix) nur die aktivsten/maximalen Neuronen in diesem Bereich für die Weiterverarbeitung verwendet bzw. die „durchschnittlichsten Neuronen“ beim Mittelwert-Pooling. Im biologischen Sinne können die beiden Layer mit Bereichen auf der Netzhaut des menschlichen Auges verglichen werden. Dort findet im rezeptiven Feld ein Konvergieren einer Vielzahl von Stäbchen und Zapfen auf wenige sogenannter Ganglienzellen sowie eine Reduktion der Informationsflut und Reizen (laterale Hemmung) zur Weiterverarbeitung statt.

Im letzten Schritt, dem Fully-connected Layer, wird die Klassifizierung der Daten vorgenommen. Dieser Layer unterscheidet sich oftmals nicht von einem mehrlagigen Perzeptron eines herkömmlichen neuronalen Netzes. Die Klassifizierung bzw. Überführung in einen eindimensionalen Vektor geschieht im Normalfall durch eine Softmax- und Normalisierungsfunktion, wobei die Daten abschließend in eine Wahrscheinlichkeitsverteilung einfließen. 

Wo werden Convolutional Neural Network genutzt? 

Convolutional Neural Networks werden vor allem im Bereich der Bilderkennung, Texterkennung, Spracherkennung sowie im Reinforcement Learning angewendet. Beispielsweise nutzt das Spiel AlphaGo (eine Computerversion des Brettspiels Go) CNNs zur Lokalisierung von Spielsteinen.

Auch zur Schadenserkennung bei Naturkatastrophen können Convolutional Neural Networks eingesetzt werden, indem sie Anomalien in Umgebungen oder beispielsweise Schäden an Hausdächern erkennen. Gleiches gilt im medizinischen Bereich zur Krebszellenerkennung.

In der Texterkennung werden CNNs zur Handschrifterkennung eingesetzt, aber auch zur Detektion von relevanten Merkmalen in Bildern wie der Postleitzahl oder Vertragsnummer in einem Dokument oder zur Kfz-Kennzeichenerkennung.