Frage

Ich suche nach, wie man einen Ausfall im tiefen neuronalen Netzwerk implementiert, und fand etwas kontertuitives. In der Vorwärtsphasen -Dropout -Maskenaktivierungen mit einem zufälligen Tensor von 1 und 0, um Netz zu erzwingen, um den Durchschnitt der Gewichte zu erlernen. Dies hilft dem Netz, besser zu verallgemeinern. Während der Aktualisierungsphase des Gradientenabstiegs sind die Aktivierungen jedoch nicht maskiert. Das scheint mir kontrastiv intuitiv. Wenn ich Verbindungsaktivierungen mit Dropout maskiere, warum sollte ich dann die Phase des Gradientenabstiegs nicht maskieren?

War es hilfreich?

Lösung

Im Abfall wie in beschrieben in http://www.cs.toronto.edu/~Hinton/absps/jmlrdropout.pdf, Gewichte sind nicht maskiert. Stattdessen sind die Neuronaktivierungen maskiert, pro Beispiel, wie es zum Training vorgestellt wird (dh die Maske wird für jeden Run -Vorwärts- und Gradienten -Backprop randomisiert, nicht wiederholt).

Die Aktivierungen werden während des Vorwärtspasses maskiert, und Gradientenberechnungen verwenden dieselbe Maske während der Rückausdauer dieses Beispiels. Dies kann als Modifikator in einer Ebenebeschreibung oder als separate Dropout -Ebene implementiert werden.

Während der Phase der Gewichtsaktualisierung, die normalerweise auf einem Mini-Batch angewendet wurde (wobei jedes Beispiel eine andere Maske angewendet hätte), wird keine weitere Verwendung von Tropfenmasken verwendet. Die für die Aktualisierung verwendeten Gradientenwerte wurden bereits von Masken betroffen, die während der Rückenausbreitung angewendet wurden.

Ich fand eine nützliche Referenz für das Erlernen, wie Tropfen funktioniert, um sich selbst implementieren zu können, das ist das Deep Learn Toolbox für matlab/octave.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top