Der Learn-Hub-Artikel „Neuronale Netze“ erläutert Folgendes: Neuronale Netze sind eine Teilmenge des maschinellen Lernens und das Herzstück von Deep-Learning-Algorithmen. Sie bestehen aus Knotenschichten, die eine Eingabeschicht, eine oder mehrere verborgene Schichten sowie eine Ausgabeschicht enthalten. Jeder Knoten ist mit einem anderen Knoten verbunden und verfügt über eine bestimmte Gewichtung und einen Schwellenwert. Wenn die Ausgabe eines einzelnen Knotens über dem angegebenen Schwellenwert liegt, wird dieser Knoten aktiviert und sendet Daten an die nächste Schicht des Netzes. Andernfalls werden keine Daten an die nächste Schicht des Netzes weitergegeben.
Wir haben uns in diesem Artikel hauptsächlich auf Feedforward-Netze konzentriert. Es gibt jedoch verschiedene Arten von neuronalen Netzen, die für unterschiedliche Anwendungsfälle und Datentypen eingesetzt werden. Zum Beispiel werden rekurrente neuronale Netze häufig für die Verarbeitung natürlicher Sprache und Spracherkennung verwendet, während konvolutionale neuronale Netze (ConvNets oder CNNs) häufiger für Klassifizierungs- und Computer-Vision-Aufgaben eingesetzt werden. Vor CNNs wurden manuelle, zeitaufwändige Merkmalextraktionsmethoden verwendet, um Objekte in Bildern zu identifizieren. Konvolutionale neuronale Netze bieten jetzt jedoch einen skalierbareren Ansatz für Bildklassifizierungs- und Objekterkennungsaufgaben, indem sie Prinzipien der linearen Algebra, insbesondere die Matrixmultiplikation, nutzen, um Muster in einem Bild zu erkennen. Sie können allerdings rechenintensiv sein und erfordern grafische Verarbeitungseinheiten (GPUs), um Modelle zu trainieren.
Konvolutionale neuronale Netze unterscheiden sich von anderen neuronalen Netzen durch ihre überlegene Leistung bei Bild-, Sprach- oder Audiosignaleingaben. Sie verfügen im Wesentlichen über folgende drei Arten von Schichten:
Die konvolutionale Schicht ist die erste Schicht eines konvolutionalen Netzes. Auf konvolutionale Schichten können weitere konvolutionale Schichten oder Pooling-Schichten folgen; die vollständig verbundene Schicht ist die letzte Schicht. Mit jeder Schicht nimmt die Komplexität des CNN zu, sodass immer größere Teile des Bildes identifiziert werden. Frühere Schichten konzentrieren sich auf einfache Merkmale wie Farben und Kanten. Wenn die Bilddaten die Schichten des CNN durchlaufen, beginnt das konvolutionale Netz, größere Elemente oder Formen des Objekts zu erkennen, bis schließlich das beabsichtigte Objekt identifiziert wird.
Die konvolutionale Schicht ist der Kernbaustein eines CNN und dort findet der Großteil der Berechnungen statt. Sie erfordert einige Komponenten, nämlich Eingabedaten, einen Filter und eine Feature-Map. Nehmen wir an, dass es sich bei der Eingabe um ein Farbbild handelt, das aus einer Pixelmatrix in 3D besteht. Das bedeutet, dass die Eingabe drei Dimensionen (Höhe, Breite und Tiefe) aufweist, die RGB in einem Bild entsprechen. Zudem gibt es einen Merkmalsdetektor, der auch als Kernel oder Filter bezeichnet wird. Er bewegt sich über die rezeptiven Felder des Bildes und prüft, ob das jeweilige Merkmal vorhanden ist. Dieser Prozess wird als Konvolution bezeichnet.
Der Merkmalsdetektor ist ein zweidimensionales (2-D) Array von Gewichten, das einen Teil des Bildes darstellt. Sie können zwar unterschiedlich groß sein, die Filtergröße ist jedoch typischerweise eine 3x3-Matrix; dies bestimmt auch die Größe des rezeptiven Feldes. Der Filter wird dann auf einen Bereich des Bildes angewendet und es wird ein Skalarprodukt aus den Eingabepixeln und dem Filter berechnet. Dieses Skalarprodukt wird dann in ein Ausgabearray eingespeist. Danach verschiebt sich der Filter Schritt für Schritt und wiederholt den Vorgang, bis der Kernel das gesamte Bild erfasst hat. Die endgültige Ausgabe aus der Reihe von Skalarprodukten aus der Eingabe und dem Filter wird als Feature-Map (Merkmalskarte), Aktivierungskarte oder konvolviertes Merkmal bezeichnet.
Nach jedem Konvolutionsvorgang wendet ein CNN eine ReLU (Rectified Linear Unit)-Transformation auf die Feature-Map an und führt so Nichtlinearität in das Modell ein.
Wie bereits erwähnt, kann auf die erste Konvolutionsschicht eine weitere Konvolutionsschicht folgen. In diesem Fall kann die Struktur des CNN hierarchisch werden, da die späteren Schichten die Pixel innerhalb der rezeptiven Felder der vorherigen Schichten sehen können. Nehmen wir beispielsweise an, dass wir ermitteln möchten, ob ein Bild ein Fahrrad enthält. Man kann sich das Fahrrad als eine Summe von Teilen vorstellen. Es besteht aus einem Rahmen, einem Lenker, Rädern, Pedalen und so weiter. Jedes einzelne Teil des Fahrrads bildet ein niedriger gelagertes Muster in dem neuronalen Netz und die Kombination aller Teile stellt ein höher gelagertes Muster dar. So entsteht eine Merkmalshierarchie innerhalb des CNN.
Durch das Pooling von Schichten, auch „Downsampling“ genannt, wird eine Dimensionsreduktion erzielt, d. h. es wird die Anzahl der Parameter in der Eingabe reduziert. Ähnlich wie bei der konvolutionalen Schicht wird beim Pooling ein Filter über die gesamte Eingabe gezogen. Der Unterschied besteht jedoch darin, dass dieser Filter keine Gewichtungen hat. Stattdessen wendet der Kernel eine Aggregationsfunktion auf die Werte innerhalb des rezeptiven Feldes an und füllt so das Ausgabearray. Es gibt im Wesentlichen zwei Arten von Pooling:
In der Pooling-Schicht gehen zwar viele Informationen verloren, doch das Pooling bietet auch einige Vorteile für das CNN. Die Komplexität wird reduziert, die Effizienz wird verbessert und das Risiko einer Überanpassung (Overfitting) wird verringert.
Der Name der vollständig verbundenen Schicht lässt bereits darauf schließen, was sie auszeichnet. Wie bereits erwähnt, sind die Pixelwerte des Eingabebildes in teilweise verbundenen Schichten nicht direkt mit der Ausgabeschicht verbunden. In der vollständig verbundenen Schicht ist jedoch jeder Knoten in der Ausgabeschicht direkt mit einem Knoten in der vorherigen Schicht verbunden.
Diese Schicht führt die Klassifizierungsaufgabe basierend auf den Merkmalen, die durch die vorherigen Schichten und ihre verschiedenen Filter extrahiert wurden, aus. Während konvolutionale und Pooling-Schichten in der Regel ReLu-Funktionen verwenden, nutzen FC-Schichten für gewöhnlich eine Softmax-Aktivierungsfunktion, um Eingaben angemessen zu klassifizieren und eine Wahrscheinlichkeit zwischen 0 und 1 zu erzeugen.
Kunihiko Fukushima und Yann LeCun legten mit ihren Arbeiten aus dem Jahr 1980 (PDF, 1,1 MB) (Link liegt außerhalb von IBM) und „Backpropagation Applied to Handwritten Zip Code Recognition“ im Jahr 1989 den Grundstein für die Forschung im Bereich der konvolutionalen neuronalen Netze. Bekannter ist, dass Yann LeCun erfolgreich Rückwärtspropagierung (Backpropagation) anwendete, um neuronale Netze zu trainieren, die Muster in einer Reihe von handgeschriebenen Postleitzahlen identifizieren und erkennen können. Er setzte seine Forschungsarbeiten mit seinem Team im Laufe der 1990er Jahren fort. Diese gipfelten in „LeNet-5“, das die gleichen Prinzipien früherer Forschung auf die Dokumentenerkennung anwendete. Seitdem sind im Zuge der Einführung neuer Datensätze wie MNIST und CIFAR-10 sowie Wettbewerben wie ImageNet Large Scale Visual Recognition Challenge (ILSVRC) verschiedene Varianten von CNN-Architekturen entstanden. Zu diesen anderen Architekturen gehören:
LeNet-5 ist jedoch als die klassische CNN-Architektur bekannt.
Konvolutionale neuronale Netze unterstützen Bilderkennungs- und Computer Vision-Aufgaben. Computer Vision ist ein Bereich der künstlichen Intelligenz (KI), der es Computern und Systemen ermöglicht, aus digitalen Bildern, Videos und anderen visuellen Eingaben aussagekräftige Informationen abzuleiten und auf der Grundlage dieser Eingaben Maßnahmen zu ergreifen. Durch diese Fähigkeit, Empfehlungen zu geben, unterscheidet sie sich von Bilderkennungsaufgaben. Gängige Computer-Vision-Anwendungen sind aktuell in diesen Bereichen anzutreffen:
IBM SPSS Neural Networks kann Ihnen helfen, komplexe Zusammenhänge zu entdecken und einen höheren Wert aus Ihren Daten zu ziehen.
Erstellen und skalieren Sie vertrauenswürdige KI in jeder Cloud. Automatisieren Sie den KI-Lebenszyklus für ModelOps.