Ein convolutional neural network, kurz CNN, ist ein neuronales Netz, das nach kleinen lokalen Mustern sucht und sie dann zu größeren Mustern kombiniert. Bei Bildern erkennen frühe Schichten oft Kanten oder Ecken, mittlere Schichten Texturen oder Teile, und tiefere Schichten nutzen diese Signale für eine endgültige Vorhersage.

Die zentrale Idee ist geteilte Gewichtung. Statt für jedes Pixel-Positions-Paar ein eigenes Gewicht zu lernen, verwendet ein CNN denselben kleinen Filter an vielen Positionen wieder. Dadurch ist es viel günstiger als eine Dense-Schicht auf dem Rohbild und kann dieselbe Art von Muster an mehreren Stellen erkennen.

Was ein convolutional neural network macht

In einer vollständig verbundenen Schicht kann jede Ausgabe gleichzeitig von allen Eingabewerten abhängen. Ein CNN ist stärker strukturiert. Es verwendet kleine Kernel, oft Filter genannt, die jeweils nur einen lokalen Ausschnitt betrachten.

Für eine einkanalige Eingabe xx und einen k×kk \times k-Kernel KK kann ein Ausgabeeintrag geschrieben werden als

yi,j=m=0k1n=0k1Km,nxi+m,j+n.y_{i,j} = \sum_{m=0}^{k-1} \sum_{n=0}^{k-1} K_{m,n} x_{i+m,j+n}.

Das ist die Idee der lokalen gewichteten Summe hinter einer Faltungsschicht. In vielen Machine-Learning-Bibliotheken ist die implementierte Operation technisch gesehen eher eine Kreuzkorrelation als eine mathematische Faltung mit umgedrehtem Kernel, aber die praktische Intuition ist dieselbe: Der Kernel wandert über die Eingabe und erzeugt eine Feature-Map.

Die Feature-Map zeigt dir, wo das gelernte Muster stark auftritt.

Warum geteilte Filter helfen

Wenn dieselbe vertikale Kante nahe der linken oberen Ecke eines Bildes oder nahe der Mitte erscheint, möchten wir normalerweise, dass das Modell sie in beiden Fällen erkennt. Ein CNN unterstützt das, indem es dieselben Filterparameter an allen Positionen wiederverwendet.

Das hat zwei praktische Effekte:

  • Es verringert die Anzahl der gelernten Parameter im Vergleich zu einer Dense-Schicht auf dem Rohbild.
  • Es fördert, dass das Netz wiederkehrende lokale Muster erkennt, statt sich nur eine feste Position zu merken.

Diese Wiederverwendung ist ein Grund, warum CNNs für Bildaufgaben so erfolgreich wurden.

Wie eine grundlegende CNN-Architektur aussieht

Ein einfaches CNN folgt oft diesem Muster:

  1. Faltungsschicht
  2. Aktivierung wie ReLU
  3. optionales Pooling oder Downsampling
  4. weitere Faltungsblöcke
  5. letzte Vorhersageschicht

Frühe Schichten erfassen meist einfache lokale Strukturen. Tiefere Schichten kombinieren diese Reaktionen zu größeren, aufgabenspezifischeren Merkmalen.

Pooling ist nicht zwingend nötig, aber wenn es verwendet wird, verkleinert es die räumlichen Dimensionen, sodass spätere Schichten mit einer kompakteren Darstellung arbeiten können. Ein häufiges Beispiel ist Max-Pooling, bei dem in jeder kleinen Region der größte Wert behalten wird.

Wenn die Schrittweite 11 und das Padding 00 ist, dann erzeugt eine n×nn \times n-Eingabe mit einem k×kk \times k-Kernel eine (nk+1)×(nk+1)(n-k+1) \times (n-k+1)-Ausgabe. Diese Größenregel ist nützlich, wenn du prüfst, ob ein Rechenbeispiel sinnvoll ist.

Durchgerechnetes Beispiel: wie eine CNN-Feature-Map entsteht

Nimm dieses 4×44 \times 4-Eingabebild:

X=[3300330000330033]X = \begin{bmatrix} 3 & 3 & 0 & 0 \\ 3 & 3 & 0 & 0 \\ 0 & 0 & 3 & 3 \\ 0 & 0 & 3 & 3 \end{bmatrix}

Verwende diesen 2×22 \times 2-Kernel:

K=[1111]K = \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix}

Angenommen, die Schrittweite ist 11 und es gibt kein Padding. Da die Eingabe 4×44 \times 4 und der Kernel 2×22 \times 2 groß ist, muss die Ausgabe 3×33 \times 3 sein. Jeder Ausgabeeintrag ist die Summe eines 2×22 \times 2-Ausschnitts, weil jeder Kerneintrag gleich 11 ist.

Der Ausgabewert oben links ist

y1,1=3(1)+3(1)+3(1)+3(1)=12.y_{1,1} = 3(1) + 3(1) + 3(1) + 3(1) = 12.

Der Ausschnitt einen Schritt weiter rechts ist

[3030],\begin{bmatrix} 3 & 0 \\ 3 & 0 \end{bmatrix},

also

y1,2=3+0+3+0=6.y_{1,2} = 3 + 0 + 3 + 0 = 6.

Wenn man alle gültigen Positionen durchrechnet, erhält man

Y=[12606660612].Y = \begin{bmatrix} 12 & 6 & 0 \\ 6 & 6 & 6 \\ 0 & 6 & 12 \end{bmatrix}.

Diese Ausgabe ist die Feature-Map. Große Werte zeigen, wo der Kernel eine starke Übereinstimmung gefunden hat. Hier reagiert der Filter am stärksten dort, wo ein vollständiger heller 2×22 \times 2-Block erscheint.

Wenn du jetzt ReLU anwendest, ändert sich nichts, weil alle Einträge bereits nichtnegativ sind. Wenn du danach 2×22 \times 2-Max-Pooling mit Schrittweite 11 verwendest, wird die gepoolte Ausgabe zu

[126612].\begin{bmatrix} 12 & 6 \\ 6 & 12 \end{bmatrix}.

Dadurch entstehen keine neuen Informationen. Es bleiben die stärksten benachbarten Reaktionen erhalten, und das räumliche Gitter wird verkleinert.

Dieses Beispiel ist einfach, zeigt aber den Kernmechanismus klar: Ein Filter gleitet über die Eingabe, berechnet lokale gewichtete Summen und erzeugt eine Karte davon, wo ein Muster erscheint.

Was ein CNN beim Training lernt

Der Kernel oben wurde von Hand gewählt, aber in einem echten CNN werden die Filterwerte aus Daten gelernt. Das Training passt diese Werte so an, dass die entstehenden Feature-Maps für die Aufgabe nützlich werden.

Wenn die Aufgabe Bildklassifikation ist, lernt das Netz Filter, die helfen, Klassen zu unterscheiden. Wenn die Aufgabe Segmentierung oder Objekterkennung ist, werden die späteren Schichten stattdessen auf diese Ausgaben trainiert. Der Grundmechanismus bleibt gleich: Forward Pass, Loss, Backpropagation, Parameter-Update.

Häufige Fehler beim Lernen von CNNs

Zu denken, ein CNN bedeute einfach nur „Bildklassifikator“

Bilder sind das Standardbeispiel, aber bei CNNs geht es eigentlich um lokale Struktur und geteilte Filter. Wenn benachbarte Werte wichtig sind, kann dieselbe Idee auch außerhalb von Bildern nützlich sein.

Anzunehmen, dass Pooling immer nötig ist

Es ist verbreitet, aber nicht universell. Manche Architekturen verkleinern die räumliche Größe stattdessen mit Faltungen mit Schrittweite, und manche behalten räumliche Details länger bei.

Schrittweite und Padding zu ignorieren

Die Größe der Feature-Map hängt von diesen Entscheidungen ab. Wenn du Schrittweite oder Padding änderst, änderst du nicht nur die Form der Ausgabe, sondern auch, welche lokalen Nachbarschaften jede Einheit sehen kann.

Die Schicht nur als Formel zu betrachten

Die Faltungsformel ist wichtig, aber die Architektur ist es auch. Ein CNN funktioniert, weil Faltung, Aktivierung, Stapelung und Training zusammenwirken.

Wann convolutional neural networks nützlich sind

CNNs werden häufig in Computer-Vision-Aufgaben wie Bildklassifikation, Objekterkennung und Segmentierung eingesetzt. Sie kommen auch in manchen Signalverarbeitungs- und Sequenzanwendungen vor, in denen lokale Muster bedeutungsvoll sind.

Sie sind besonders nützlich, wenn die Eingabe eine klare Gitterstruktur oder geordnete Nachbarschaftsstruktur hat. Wenn diese Bedingung nur schwach erfüllt ist, kann eine andere Architektur besser passen.

Ein mentales Modell, das CNNs leichter verständlich macht

Stell dir ein CNN als Mustererkenner vor, der klein beginnt und mit zunehmender Tiefe abstrakter wird. Eine Schicht fragt: „Erscheint dieses kleine Muster hier?“ Spätere Schichten fragen: „Kombinieren sich diese einfacheren Muster zu etwas Bedeutenderem?“

Deshalb versteht man CNNs leichter, wenn man sich auf Feature-Maps konzentriert und nicht nur auf das Wort „Faltung“.

Probiere deine eigene Variante aus

Behalte dieselbe Eingabe bei, aber ändere den Kernel zu

[1111].\begin{bmatrix} 1 & -1 \\ 1 & -1 \end{bmatrix}.

Berechne die Feature-Map erneut und schau, welche Bereiche jetzt große positive oder negative Reaktionen erzeugen. Diese kleine Änderung macht viel klarer, wie unterschiedliche Filter unterschiedliche Muster erkennen.

Brauchst du Hilfe bei einer Aufgabe?

Lade deine Frage hoch und erhalte in Sekunden eine verifizierte Schritt-für-Schritt-Lösung.

GPAI Solver öffnen →