Bagging vs Dropout in tiefen neuronalen Netzen

17

Bagging ist die Erzeugung mehrerer Prädiktoren, die wie ein einzelner Prädiktor zusammenarbeiten. Dropout ist eine Technik, die neuronalen Netzen beibringt, alle möglichen Teilnetze zu mitteln. Wenn man sich die wichtigsten Kaggle-Wettbewerbe ansieht, scheint es, dass diese beiden Techniken sehr oft zusammen angewendet werden. Ich kann keinen theoretischen Unterschied sehen, abgesehen von der tatsächlichen Implementierung. Wer kann mir erklären, warum wir beide in einer realen Anwendung verwenden sollten? und warum verbessert sich die Leistung, wenn wir beide einsetzen?

Emanuele
quelle

Antworten:

21

Bagging und Dropout erreichen nicht ganz dasselbe, obwohl es sich bei beiden um Arten der Modellmittelung handelt.

Das Absacken ist eine Operation für den gesamten Datensatz, bei der Modelle anhand einer Teilmenge der Trainingsdaten trainiert werden. Daher werden einige Trainingsbeispiele für ein bestimmtes Modell nicht angezeigt.

Dropout hingegen wird auf Funktionen in jedem Trainingsbeispiel angewendet. Es ist wahr, dass das Ergebnis funktional äquivalent ist, exponentiell viele Netzwerke (mit gemeinsamen Gewichten!) Zu trainieren und dann ihre Ausgaben gleich zu gewichten. Dropout funktioniert jedoch im Funktionsbereich, sodass bestimmte Funktionen für das Netzwerk nicht verfügbar sind und keine vollständigen Beispiele. Da sich jedes Neuron nicht vollständig auf eine Eingabe verlassen kann, sind die Darstellungen in diesen Netzwerken tendenziell verteilter und das Netzwerk ist weniger anfällig für Überanpassung.

jamesmf
quelle
+1 für eine nette Erklärung. Kennen Sie Links, in denen eine Python-Implementierung durchgeführt wird? Irgendein Blog oder vielleicht Github?
Dawny33
Hier gibt es eine anständige: deeplearning.net/tutorial/lenet.html , obwohl ich den Stil dieser hier bevorzuge: neuralnetworksanddeeplearning.com/chap6.html . Für die Implementierung und großartige Demos mag ich Keras (ziemlich einfach zu installieren) keras.io
jamesmf
2

Ich habe in Max Out Networks einen Vergleich der beiden Arten von Netzen gefunden, der besagt:

Das Dropout-Training ähnelt dem Bagging (Breiman, 1994), bei dem viele verschiedene Modelle für verschiedene Teilmengen der Daten trainiert werden. Das Dropout-Training unterscheidet sich vom Bagging darin, dass jedes Modell nur für einen Schritt trainiert wird und alle Modelle Parameter gemeinsam nutzen. Damit sich diese Trainingsprozedur (Dropout) so verhält, als würde sie ein Ensemble statt eines einzelnen Modells trainieren, muss jedes Update einen großen Effekt haben, damit das durch µ induzierte Untermodell gut zur aktuellen Eingabe v passt.

Hoffe, es wird nützlich sein.

Emanuele
quelle
0

Dropout ist eine Regularisierungstechnik, die verwendet wird, um eine Überanpassung in großen neuronalen Netzen zu vermeiden, indem einige der Neuronen in verborgenen Schichten (daher der Name Dropout für die ausgelassenen Neuronen) nach dem Training weggelassen werden. Wenn das Netzwerk während des Trainings wirklich etwas gelernt hat, sollte der Ausfall einiger Neuronen die Genauigkeit der Vorhersagen nicht negativ beeinflussen.

Das Absacken ist auch eine effektive Regularisierungstechnik, mit der Abweichungen von den Trainingsdaten verringert und die Genauigkeit Ihres Modells verbessert werden, indem mehrere Kopien davon verwendet werden, die auf verschiedenen Teilmengen von Daten aus dem anfänglichen / größeren Trainingsdatensatz trainiert wurden.

siehe diese Frage

LiNKeR
quelle