Grundlagen des Faltungs-Neuronalen Netzwerks: Was Sie wissen müssen
Veröffentlicht: 2024-09-10Faltungs-Neuronale Netze (CNNs) sind grundlegende Werkzeuge in der Datenanalyse und im maschinellen Lernen (ML). Dieser Leitfaden erklärt, wie CNNs funktionieren, wie sie sich von anderen neuronalen Netzen unterscheiden, welche Anwendungen sie haben und welche Vor- und Nachteile mit ihrer Verwendung verbunden sind.
Inhaltsverzeichnis
- Was ist ein CNN?
- Wie CNNs funktionieren
- CNNs vs. RNNs und Transformatoren
- Anwendungen von CNNs
- Vorteile
- Nachteile
Was ist ein Faltungs-Neuronales Netzwerk?
Ein Convolutional Neural Network (CNN) ist ein neuronales Netzwerk, das integraler Bestandteil von Deep Learning ist und für die Verarbeitung und Analyse räumlicher Daten konzipiert ist. Es verwendet Faltungsschichten mit Filtern, um wichtige Merkmale innerhalb der Eingabe automatisch zu erkennen und zu lernen, was es besonders effektiv für Aufgaben wie Bild- und Videoerkennung macht.
Lassen Sie uns diese Definition etwas entschlüsseln. Bei räumlichen Daten handelt es sich um Daten, bei denen die Teile über ihre Position miteinander in Beziehung stehen. Bilder sind das beste Beispiel dafür.
In jedem Bild oben ist jedes weiße Pixel mit jedem umgebenden weißen Pixel verbunden: Sie bilden die Ziffer. Die Pixelpositionen verraten dem Betrachter auch, wo sich die Ziffer im Bild befindet.
Merkmale sind im Bild vorhandene Attribute. Diese Attribute können alles sein, von einer leicht geneigten Kante über das Vorhandensein einer Nase oder eines Auges bis hin zu einer Komposition aus Augen, Mündern und Nasen. Entscheidend ist, dass Merkmale aus einfacheren Merkmalen bestehen können (z. B. besteht ein Auge aus einigen gekrümmten Kanten und einem zentralen dunklen Fleck).
Filter sind der Teil des Modells, der diese Merkmale im Bild erkennt. Jeder Filter sucht im gesamten Bild nach einem bestimmten Merkmal (z. B. einer von links nach rechts gekrümmten Kante).
Schließlich bezieht sich „Faltung“ im Faltungs-Neuronalen Netzwerk darauf, wie ein Filter auf ein Bild angewendet wird. Das erklären wir im nächsten Abschnitt.
CNNs haben bei verschiedenen Bildaufgaben, wie der Objekterkennung und Bildsegmentierung, eine starke Leistung gezeigt. Ein CNN-Modell (AlexNet) spielte 2012 eine wichtige Rolle beim Aufstieg des Deep Learning.
Wie CNNs funktionieren
Lassen Sie uns die Gesamtarchitektur eines CNN anhand des Beispiels der Bestimmung der Zahl (0–9) in einem Bild untersuchen.
Bevor das Bild in das Modell eingespeist wird, muss das Bild in eine numerische Darstellung (oder Kodierung) umgewandelt werden. Bei Schwarzweißbildern wird jedem Pixel eine Zahl zugewiesen: 255, wenn es vollständig weiß ist, und 0, wenn es vollständig schwarz ist (manchmal auf 1 und 0 normalisiert). Bei Farbbildern werden jedem Pixel drei Zahlen zugewiesen: eine für den Anteil an Rot, Grün und Blau, der als RGB-Wert bezeichnet wird. Ein Bild mit 256 x 256 Pixeln (mit 65.536 Pixeln) hätte also 65.536 Werte in seiner Schwarz-Weiß-Kodierung und 196.608 Werte in seiner Farbkodierung.
Das Modell verarbeitet das Bild dann über drei Arten von Ebenen:
1 Faltungsschicht:Diese Schicht wendet Filter auf ihre Eingabe an. Jeder Filter ist ein Zahlengitter einer definierten Größe (z. B. 3×3). Dieses Raster wird von oben links beginnend über das Bild gelegt; Es werden die Pixelwerte aus den Zeilen 1–3 in den Spalten 1–3 verwendet. Diese Pixelwerte werden mit den Werten im Filter multipliziert und dann summiert. Diese Summe wird dann im Filterausgaberaster in Zeile 1, Spalte 1 platziert. Anschließend verschiebt sich der Filter um ein Pixel nach rechts und wiederholt den Vorgang, bis alle Zeilen und Spalten im Bild abgedeckt sind. Durch das Verschieben eines Pixels nach dem anderen kann der Filter Merkmale überall im Bild finden, eine Eigenschaft, die als Translationsinvarianz bezeichnet wird. Jeder Filter erstellt sein eigenes Ausgabegitter, das dann an die nächste Ebene gesendet wird.
2 Pooling-Schicht: Diese Schicht fasst die Merkmalsinformationen aus der Faltungsschicht zusammen. Die Faltungsschicht gibt eine Ausgabe zurück, die größer ist als ihre Eingabe (jeder Filter gibt eine Feature-Map zurück, die ungefähr die gleiche Größe wie die Eingabe hat, und es gibt mehrere Filter). Der Pooling-Layer nimmt jede Feature-Map und wendet ein weiteres Raster darauf an. Dieses Raster nimmt entweder den Durchschnitt oder das Maximum der darin enthaltenen Werte und gibt diesen aus. Dieses Raster bewegt sich jedoch nicht um jeweils ein Pixel; Es wird zum nächsten Pixelfeld gesprungen. Beispielsweise bearbeitet ein 3×3-Pooling-Raster zunächst die Pixel in den Zeilen 1–3 und den Spalten 1–3. Dann bleibt es in derselben Zeile, wechselt aber in die Spalten 4–6. Nachdem alle Spalten im ersten Zeilensatz (1–3) abgedeckt wurden, geht es nach unten zu den Zeilen 4–6 und befasst sich mit diesen Spalten. Dadurch wird die Anzahl der Zeilen und Spalten in der Ausgabe effektiv reduziert. Die Pooling-Schicht trägt dazu bei, die Komplexität zu reduzieren, macht das Modell robuster gegenüber Rauschen und kleinen Änderungen und hilft dem Modell, sich auf die wichtigsten Merkmale zu konzentrieren.
3 Vollständig verbundene Schicht: Nach mehreren Runden von Faltungs- und Pooling-Schichten werden die endgültigen Feature-Maps an eine vollständig verbundene neuronale Netzwerkschicht übergeben, die die Ausgabe zurückgibt, die uns wichtig ist (z. B. die Wahrscheinlichkeit, dass das Bild eine bestimmte Zahl ist). Die Feature-Maps müssen abgeflacht (jede Zeile einer Feature-Map wird zu einer langen Zeile verkettet) und dann kombiniert werden (jede lange Feature-Map-Zeile wird zu einer Mega-Zeile verkettet).
Hier ist eine visuelle Darstellung der CNN-Architektur, die veranschaulicht, wie jede Ebene das Eingabebild verarbeitet und zur endgültigen Ausgabe beiträgt:
Noch ein paar Anmerkungen zum Ablauf:
- Jede nachfolgende Faltungsschicht findet Merkmale höherer Ebene. Die erste Faltungsschicht erkennt Kanten, Flecken oder einfache Muster. Die nächste Faltungsschicht verwendet die gepoolte Ausgabe der ersten Faltungsschicht als Eingabe und ermöglicht so die Erkennung von Zusammensetzungen aus Merkmalen auf niedrigerem Niveau, die Merkmale auf höherer Ebene bilden, beispielsweise eine Nase oder ein Auge.
- Das Modell erfordert eine Schulung. Während des Trainings wird ein Bild durch alle Ebenen geleitet (zunächst mit zufälligen Gewichtungen) und die Ausgabe wird generiert. Die Differenz zwischen der Ausgabe und der tatsächlichen Antwort wird verwendet, um die Gewichtungen leicht anzupassen, sodass die Wahrscheinlichkeit steigt, dass das Modell in Zukunft richtig antwortet. Dies erfolgt durch Gradientenabstieg, wobei der Trainingsalgorithmus berechnet, wie viel jedes Modellgewicht zur endgültigen Antwort beiträgt (unter Verwendung partieller Ableitungen) und es leicht in Richtung der richtigen Antwort verschiebt. Die Pooling-Schicht hat keine Gewichtungen und wird daher vom Trainingsprozess nicht beeinflusst.
- CNNs können nur mit Bildern arbeiten, die dieselbe Größe haben wie die, auf denen sie trainiert wurden. Wenn ein Modell auf Bildern mit 256 x 256 Pixeln trainiert wurde, muss für jedes größere Bild ein Downsampling und für jedes kleinere Bild ein Upsampling durchgeführt werden.
CNNs vs. RNNs und Transformatoren
Faltungs-Neuronale Netze werden häufig neben rekurrenten neuronalen Netzen (RNNs) und Transformatoren erwähnt. Wie unterscheiden sie sich?
CNNs vs. RNNs
RNNs und CNNs agieren in unterschiedlichen Domänen. RNNs eignen sich am besten für sequentielle Daten wie Text, während CNNs sich besonders für räumliche Daten wie Bilder eignen. RNNs verfügen über ein Speichermodul, das zuvor gesehene Teile einer Eingabe verfolgt, um den nächsten Teil zu kontextualisieren. Im Gegensatz dazu kontextualisieren CNNs Teile der Eingabe, indem sie ihre unmittelbaren Nachbarn betrachten. Da CNNs über kein Speichermodul verfügen, eignen sie sich nicht gut für Textaufgaben: Sie würden das erste Wort in einem Satz vergessen, wenn sie das letzte Wort erreichen.
CNNs vs. Transformatoren
Transformatoren werden auch häufig für sequentielle Aufgaben verwendet. Sie können jeden Teil der Eingabe verwenden, um neue Eingaben zu kontextualisieren, was sie für Aufgaben der Verarbeitung natürlicher Sprache (NLP) beliebt macht. In letzter Zeit werden jedoch auch Transformatoren auf Bilder angewendet, und zwar in Form von Vision-Transformatoren. Diese Modelle nehmen ein Bild auf, zerlegen es in Patches, lenken die Aufmerksamkeit (der Kernmechanismus in Transformer-Architekturen) auf die Patches und klassifizieren dann das Bild. Vision-Transformatoren können CNNs bei großen Datensätzen übertreffen, ihnen fehlt jedoch die Translationsinvarianz, die CNNs innewohnt. Die translatorische Invarianz in CNNs ermöglicht es dem Modell, Objekte unabhängig von ihrer Position im Bild zu erkennen, wodurch CNNs äußerst effektiv für Aufgaben sind, bei denen die räumliche Beziehung von Merkmalen wichtig ist.
Anwendungen von CNNs
CNNs werden aufgrund ihrer Translationsinvarianz und räumlichen Merkmale häufig mit Bildern verwendet. Aber mit geschickter Verarbeitung können CNNs auch in anderen Bereichen funktionieren (häufig indem sie sie zuerst in Bilder konvertieren).
Bildklassifizierung
Die Bildklassifizierung ist die Hauptanwendung von CNNs. Gut trainierte, große CNNs können Millionen verschiedener Objekte erkennen und nahezu jedes Bild bearbeiten, das ihnen übermittelt wird. Trotz des Aufstiegs von Transformatoren sind CNNs aufgrund ihrer Recheneffizienz eine praktikable Option.
Spracherkennung
Aufgezeichnete Audiodaten können über Spektrogramme, bei denen es sich um visuelle Darstellungen von Audiodaten handelt, in räumliche Daten umgewandelt werden. Ein CNN kann ein Spektrogramm als Eingabe verwenden und lernen, verschiedene Wellenformen verschiedenen Wörtern zuzuordnen. Ebenso kann ein CNN Musikbeats und Samples erkennen.
Bildsegmentierung
Bei der Bildsegmentierung geht es darum, verschiedene Objekte in einem Bild zu identifizieren und Grenzen um sie herum zu ziehen. CNNs sind für diese Aufgabe aufgrund ihrer starken Leistung bei der Erkennung verschiedener Objekte beliebt. Sobald ein Bild segmentiert ist, können wir seinen Inhalt besser verstehen. Beispielsweise könnte ein anderes Deep-Learning-Modell die Segmente analysieren und diese Szene beschreiben: „Zwei Personen gehen in einem Park spazieren. Rechts von ihnen steht ein Laternenpfahl und vor ihnen ein Auto.“ Im medizinischen Bereich kann die Bildsegmentierung in Scans Tumore von normalen Zellen unterscheiden. Bei autonomen Fahrzeugen können Fahrbahnmarkierungen, Verkehrsschilder und andere Fahrzeuge identifiziert werden.
Vorteile von CNNs
CNNs werden in der Branche aus mehreren Gründen häufig verwendet.
Starke Bildleistung
Angesichts der Fülle an verfügbaren Bilddaten werden Modelle benötigt, die bei verschiedenen Bildtypen eine gute Leistung erbringen. CNNs sind hierfür gut geeignet. Ihre Translationsinvarianz und die Fähigkeit, aus kleineren größere Merkmale zu erzeugen, ermöglichen es ihnen, Merkmale im gesamten Bild zu erkennen. Für unterschiedliche Bildtypen sind keine unterschiedlichen Architekturen erforderlich, da ein grundlegendes CNN auf alle Arten von Bilddaten angewendet werden kann.
Kein manuelles Feature-Engineering
Vor CNNs erforderten die leistungsstärksten Bildmodelle erheblichen manuellen Aufwand. Fachexperten mussten Module erstellen, um bestimmte Arten von Merkmalen zu erkennen (z. B. Filter für Kanten), ein zeitaufwändiger Prozess, dem es an Flexibilität für verschiedene Bilder mangelte. Jeder Bildsatz benötigte einen eigenen Funktionssatz. Im Gegensatz dazu konnte das erste berühmte CNN (AlexNet) 20.000 Bildtypen automatisch kategorisieren, wodurch der Bedarf an manueller Feature-Entwicklung verringert wurde.
Nachteile von CNNs
Natürlich gibt es bei der Verwendung von CNNs Kompromisse.
Viele Hyperparameter
Das Training eines CNN erfordert die Auswahl vieler Hyperparameter. Wie bei jedem neuronalen Netzwerk gibt es Hyperparameter wie die Anzahl der Schichten, die Stapelgröße und die Lernrate. Darüber hinaus erfordert jeder Filter einen eigenen Satz von Hyperparametern: Filtergröße (z. B. 3×3, 5×5) und Schrittweite (die Anzahl der Pixel, die nach jedem Schritt bewegt werden müssen). Hyperparameter können während des Trainingsprozesses nicht einfach angepasst werden. Stattdessen müssen Sie mehrere Modelle mit unterschiedlichen Hyperparametersätzen (z. B. Satz A und Satz B) trainieren und ihre Leistung vergleichen, um die beste Auswahl zu ermitteln.
Empfindlichkeit gegenüber der Eingabegröße
Jedes CNN ist darauf trainiert, ein Bild einer bestimmten Größe (z. B. 256 x 256 Pixel) zu akzeptieren. Viele Bilder, die Sie verarbeiten möchten, entsprechen möglicherweise nicht dieser Größe. Um dieses Problem zu beheben, können Sie Ihre Bilder vergrößern oder verkleinern. Diese Größenänderung kann jedoch zum Verlust wertvoller Informationen führen und die Leistung des Modells beeinträchtigen.