Convolutional Neural Networks (CNNs) sind neuronale Netze mit architektonischen Einschränkungen, um die Komplexität der Berechnungen zu verringern und die translatorische Invarianz sicherzustellen (das Netz interpretiert Eingabemuster unabhängig von der Übersetzung gleich - in Bezug auf die Bilderkennung: Eine Banane ist eine Banane, unabhängig davon, wo sie sich in der befindet Bild). Faltungs-Neuronale Netze weisen drei wichtige Architekturmerkmale auf.
Lokale Konnektivität: Neuronen in einer Schicht werden nur mit Neuronen in der nächsten Schicht verbunden, die sich räumlich in ihrer Nähe befinden. Durch dieses Design werden die meisten Verbindungen zwischen aufeinanderfolgenden Ebenen gekürzt, aber diejenigen, die die nützlichsten Informationen enthalten, bleiben erhalten. Hierbei wird davon ausgegangen, dass die Eingabedaten räumlich bedeutsam sind, oder dass im Beispiel der Computersicht die Beziehung zwischen zwei entfernten Pixeln wahrscheinlich weniger bedeutsam ist als bei zwei nahen Nachbarn.
Geteilte Gewichte: Dies ist das Konzept, das CNNs "Faltung" macht. Indem die Neuronen einer Schicht gezwungen werden, Gewichtungen zu teilen, wird der Vorwärtsdurchlauf (Zuführen von Daten durch das Netzwerk) gleichbedeutend mit dem Falten eines Filters über dem Bild, um ein neues Bild zu erzeugen. Das Training von CNNs wird dann zur Aufgabe des Lernens von Filtern (Entscheiden, nach welchen Merkmalen Sie in den Daten suchen sollten).
Pooling und ReLU: CNNs weisen zwei Nichtlinearitäten auf: Pooling-Layer und ReLU-Funktionen. Pooling-Layer betrachten einen Block von Eingabedaten und geben einfach den Maximalwert weiter. Dadurch wird die Größe der Ausgabe reduziert und es müssen keine zusätzlichen Parameter gelernt werden. Daher werden häufig Pooling-Layer verwendet, um die Größe des Netzwerks zu regulieren und das System unter einem Rechengrenzwert zu halten. Die ReLU-Funktion nimmt eine Eingabe, x, und gibt das Maximum von {0, x} zurück. ReLU(x) = argmax(x, 0)
. Dies führt einen ähnlichen Effekt wie tanh (x) oder sigmoid (x) als Nichtlinearitäten ein, um die Ausdruckskraft des Modells zu erhöhen.
Weitere Lektüre
Wie bereits erwähnt, wird dies in Stanfords CS 231n-Kurs ausführlich behandelt. Weitere Informationen finden Sie in diesem schriftlichen Leitfaden und in dieser Vorlesung . Blog-Posts wie dieser und dieser sind ebenfalls sehr hilfreich.
Wenn Sie immer noch neugierig sind, warum CNNs die Struktur haben, die sie haben, dann schlage ich vor, das Papier zu lesen , in dem sie vorgestellt wurden, obwohl dies ziemlich lang ist, und die Diskussion zwischen Yann Lecun und Christopher Manning über angeborene Vorgänger (die Annahmen, die wir machen, wenn Wir entwerfen die Architektur eines Modells.