Anzahl und Größe der dichten Schichten in einem CNN

10

Die meisten Netzwerke, die ich gesehen habe, haben eine oder zwei dichte Schichten vor der endgültigen Softmax-Schicht.

  • Gibt es eine prinzipielle Möglichkeit, die Anzahl und Größe der dichten Schichten zu wählen?
  • Sind zwei dichte Schichten bei gleicher Anzahl von Parametern repräsentativer als eine?
  • Sollte Dropout vor jeder dichten Schicht oder nur einmal angewendet werden?
geometrisch
quelle

Antworten:

14

Als erstes:

Es gibt keine Möglichkeit, eine gute Netzwerktopologie nur anhand der Anzahl der Ein- und Ausgänge zu bestimmen. Dies hängt entscheidend von der Anzahl der Trainingsbeispiele und der Komplexität der Klassifizierung ab, die Sie lernen möchten. [1]

und Yoshua Bengio hat eine sehr einfache Regel vorgeschlagen:

Füge einfach weitere Ebenen hinzu, bis sich der Testfehler nicht mehr verbessert. [2]

Außerdem:

Die früheren Funktionen eines ConvNet enthalten allgemeinere Funktionen (z. B. Kantendetektoren oder Farbkleckendetektoren), die für viele Aufgaben nützlich sein sollten. Spätere Ebenen des ConvNet werden jedoch zunehmend spezifischer für die Details der im Originaldatensatz enthaltenen Klassen. [ 3]

Zum Beispiel in einer Methode zum Lernen von Merkmalsdetektoren:

Die erste Schicht lernt Kantendetektoren und die nachfolgenden Schichten lernen komplexere Merkmale, und Schichten höherer Ebenen codieren abstraktere Merkmale. [4]

Die Verwendung von zwei dichten Schichten ist daher ratsamer als eine Schicht.

Schließlich:

Das Originalpapier zu Dropout enthält eine Reihe nützlicher Heuristiken, die bei der praktischen Verwendung von Dropout zu berücksichtigen sind. Eine davon ist: Verwenden Sie Dropout sowohl für eingehende (sichtbare) als auch für versteckte Einheiten. Die Anwendung von Dropout auf jeder Schicht des Netzwerks hat gute Ergebnisse gezeigt. [5]

In CNN wird normalerweise nach jeder Pooling-Ebene und auch nach Ihrer dichten Ebene eine Dropout-Ebene angewendet. Ein gutes Tutorial ist hier [6]

Verweise:

[1] https://www.cs.cmu.edu/Groups/AI/util/html/faqs/ai/neural/faq.html

[2] Bengio, Yoshua. "Praktische Empfehlungen für das gradientenbasierte Training tiefer Architekturen." Neuronale Netze: Tricks des Handels. Springer Berlin Heidelberg, 2012. 437-478.

[3] http://cs231n.github.io/transfer-learning/

[4] http://learning.eng.cam.ac.uk/pub/Public/Turner/Teaching/ml-lecture-3-slides.pdf

[5] https://machinelearningmastery.com/dropout-regularization-deep-learning-models-keras/

[6] https://cambridgespark.com/content/tutorials/convolutional-neural-networks-with-keras/index.html

moh
quelle