Bei der Anwendung von Dropout in künstlichen neuronalen Netzen muss die Tatsache kompensiert werden, dass zum Zeitpunkt des Trainings ein Teil der Neuronen deaktiviert wurde. Dazu gibt es zwei gemeinsame Strategien:
- Skalieren der Aktivierung zur Testzeit
- Umkehren des Aussetzers während der Trainingsphase
Die beiden Strategien sind in den folgenden Folien aus Standford CS231n zusammengefasst: Faltungsneurale Netze für die visuelle Erkennung .
Welche Strategie ist vorzuziehen und warum?
Skalieren der Aktivierung zur Testzeit:
Ausfall des Schulabbrechers während der Trainingsphase:
neural-networks
deep-learning
dropout
Franck Dernoncourt
quelle
quelle
Antworten:
"Umkehren des Aussetzers während der Trainingsphase" sollte vorzuziehen sein.
Theoretisch ist es besser, wenn das Bernoulli-Dropout als Methode zum Hinzufügen von Rauschen zum Netzwerk betrachtet wird, dass das Rauschen einen Mittelwert von Null hat. Wenn wir die Skalierung zur Trainingszeit durchführen, um den Teil der deaktivierten Einheiten aufzuheben, wäre der Mittelwert des Rauschens Null.
Es gibt andere Arten von Dropout / Noise-Methoden, die später herauskamen (z. B. Gaußscher multiplikativer Dropout, Gaußsches additives Rauschen ), die ebenfalls einen Mittelwert von Null besitzen.
In Bezug auf das Training und Testen neuronaler Netze in der Praxis gibt es einen Grund, eine solche Implementierung ebenfalls zu bevorzugen. Angenommen, ich möchte die Leistung von zwei Modellen mit derselben Architektur vergleichen, eines wird durch Dropout trainiert und eines nicht.
Wenn ich "die Aktivierung zur Testzeit skaliere", benötige ich zur Testzeit zwei verschiedene Netzwerke. Wenn ich die "invertierte Version" verwende, kann ich einfach dasselbe Testnetzwerk (Code) auf beide Sätze trainierter Parameter anwenden.
quelle
Ein weiterer Vorteil des invertierten Dropouts (abgesehen davon, dass der Code zur Testzeit nicht geändert werden muss) besteht darin, dass man während des Trainings Lust bekommen und die Dropout-Rate dynamisch ändern kann. Dies wurde als "geglühter" Ausfall bezeichnet. Im Wesentlichen besteht die Logik darin, dass das Hinzufügen von Dropout- "Rauschen" zu Beginn des Trainings dazu beiträgt, dass die Optimierung nicht in einem lokalen Minimum hängen bleibt, während sie am Ende auf Null abfällt, was zu einem fein abgestimmten Netzwerk mit besserer Leistung führt.
ANNEALED DROPOUT TRAINING VON TIEFEN NETZWERKEN
Modifizierter Dropout für das Training des neuronalen Netzwerks
quelle
Andrew hat in seinem Deep Learning-Kurs zu dieser Sitzung eine sehr gute Erklärung abgegeben. Dropout Regularization :
Sagen Sie
a3 = a3 / keep_prob
im letzten Schritt der Implementierung:Z [4] = W [4] * a [3] + b [4] , die Elementgröße von a [3] wurde
keep_prob
von D3 um (ein Prozentsatz der Elemente wurde durch D3 weggelassen) verringert , also der Wert von Z [4] wird ebenfalls reduziert. Um dies grob zu kompensieren, werden wir die Änderung durch Teilen umkehrenkeep_prob
, um sicherzustellen, dass der Wert von Z [4] nicht beeinflusst wird.quelle