Faltungsschicht
Beim Deep Learning ist ein Convolutional Neural Network (CNN oder auch ConvNet) eine Klasse von „tiefen“ neuronalen Netzen, die typischerweise zur Erkennung von Mustern in Bildern, aber auch für die Analyse räumlicher Daten, für maschinelles Sehen, zur Verarbeitung natürlicher Sprache (Natural Language Processing, NLP), für die Signalverarbeitung und verschiedene andere Zwecke verwendet werden. Die CNN-Architektur ähnelt dem Konnektivitätsmuster von Neuronen im menschlichen Gehirn und wurde vom Aufbau des visuellen Cortex inspiriert. Dieser spezielle Typ eines künstlichen neuronalen Netzes hat seinen Namen von einer der wichtigsten Operationen im Netz: der Faltung (engl. convolution).
Was ist die Faltung?
Die Faltung ist ein geordnetes Verfahren, bei dem zwei Informationsquellen miteinander verflochten werden – ein Vorgang, bei dem eine Funktion in eine andere umgewandelt wird. Faltungen werden schon lange verwendet – vor allem in der Bildverarbeitung, um Bilder unscharf zu machen oder die Bildschärfe zu verbessern, aber auch zur Durchführung anderer Operationen wie Kantenoptimierung oder Stanzeffekte. CNNs erzwingen ein lokales Konnektivitätsmuster zwischen Neuronen benachbarter Schichten. CNNs erkennen mithilfe von FilternConvolutional Layer (auch als „Kernels“ bezeichnet), welche Merkmale, wie z. B. Kanten, in einem Bild vorhanden sind. Es gibt vier wesentliche Vorgänge in einem CNN:
- Faltung
- Nichtlinearität (ReLU)
- Pooling oder Subsampling
- Klassifizierung (vollständig vernetzte Schicht)
Die erste Schicht eines Convolutional Neural Network ist immer eine Faltungsschicht.Faltungsschichten wenden eine Faltungsoperation auf die Eingabe an und übergeben das Ergebnis dann an die nächste Schicht. Bei der Faltung werden alle Pixel im Empfangsfeld auf einen einzigen Wert gebracht. Wenn Sie z. B. eine Faltung auf ein Bild anwenden, reduzieren Sie nicht einfach nur die Bildgröße, sondern führen alle Informationen im Feld in einem einzigen Pixel zusammen. Die finale Ausgabe der Faltungsschicht ist ein Vektor. Je nach Art des Problems, das wir lösen wollen, und der Merkmale, die wir in Erfahrung bringen möchten, können wir unterschiedliche Faltungsformen verwenden.
Die 2D-Faltungsschicht
Der meistverwendete Faltungstyp ist die 2D-Faltungschicht, die üblicherweise als „conv2D“ abgekürzt wird. Ein Filter oder Kernel in einer conv2D-Schicht „überstreicht“ die 2D-Eingabedaten und führt je Element eine Multiplikation aus. Die Ergebnisse werden dann zu einem einzigen Ausgabepixel addiert. Der Kernel führt für jede Stelle, die er überstreicht, dieselbe Operation durch und macht so aus einer 2D-Matrix mit Merkmalen eine andere 2D-Matrix mit Merkmalen.
Erweiterte oder Atrous-Faltung
Bei dieser Operation wird die Fenstergröße erweitert, ohne die Anzahl der Gewichte zu erhöhen. Zu diesem Zweck werden Nullwerte in die Faltungs-Kernels eingefügt. Erweiterte oder Atrous-Faltungen können in Echtzeitanwendungen sowie in Anwendungen mit geringerer Verarbeitungsleistung verwendet werden, da die RAM-Anforderungen weniger hoch sind.
Trennbare Faltungen
Es gibt zwei Haupttypen trennbarer Faltungen: räumlich trennbare Faltungen und in die Tiefe trennbare Faltungen. Bei der räumlich trennbaren Faltung geht es in erster Linie um die räumlichen Abmessungen (d. h. Breite und Höhe) eines Bildes und Kernels. Im Vergleich zu räumlich trennbaren Faltungen arbeiten in die Tiefe trennbare Faltungen mit Kerneln, die nicht in zwei kleinere Kernels „faktoriert“ werden können. Daher wird sie häufiger eingesetzt.
Transponierte Faltungen
Derartige Faltungen werden auch als Entfaltungen oder fraktionierte Faltungen bezeichnet. Eine transponierte Faltungsschicht führt eine reguläre Faltung durch, kehrt aber ihre räumliche Transformation um.