In Tensorflows Implementierung von ResNet wird der Varianzskalierungsinitialisierer verwendet . Ich finde auch, dass der Xavier-Initialisierer beliebt ist. Ich habe nicht zu viel Erfahrung damit, was ist in der Praxis besser?
20
In Tensorflows Implementierung von ResNet wird der Varianzskalierungsinitialisierer verwendet . Ich finde auch, dass der Xavier-Initialisierer beliebt ist. Ich habe nicht zu viel Erfahrung damit, was ist in der Praxis besser?
Antworten:
Historische Perspektive
Die Xavier-Initialisierung , die ursprünglich von Xavier Glorot und Yoshua Bengio in "Das Verständnis der Schwierigkeit, tiefe vorwärtsgerichtete neuronale Netze zu trainieren" vorgeschlagen wurde , ist die Gewichtungsinitialisierungstechnik, die versucht, die Varianz der Ausgaben einer Schicht gleich der Varianz ihrer Eingaben zu machen . Diese Idee hat sich in der Praxis als sehr nützlich erwiesen. Diese Initialisierung hängt natürlich von der Funktion der Ebenenaktivierung ab. Und in ihrer Arbeit betrachteten Glorot und Bengio die logistische Sigmoid- Aktivierungsfunktion, die zu diesem Zeitpunkt die voreingestellte Wahl war.
Später wurde die Sigmoidaktivierung von ReLu übertroffen, da es möglich war, das Problem der verschwundenen / explodierenden Gradienten zu lösen. Infolgedessen erschien eine neue Initialisierungstechnik, die dieselbe Idee (Ausgleich der Varianz der Aktivierung) auf diese neue Aktivierungsfunktion anwendete. Es wurde von Kaiming He ua in "Eintauchen in Gleichrichter: Leistung auf menschlicher Ebene bei der ImageNet-Klassifizierung übertreffen" vorgeschlagen und wird nun häufig als He-Initialisierung bezeichnet .
In tensorflow wird die He-Initialisierung in
variance_scaling_initializer()
function implementiert (was in der Tat ein allgemeinerer Initialisierer ist, aber standardmäßig eine He-Initialisierung durchführt), während Xavier-Initialisierer logisch istxavier_initializer()
.Zusammenfassung
Zusammenfassend ist der Hauptunterschied für Praktiker des maschinellen Lernens der folgende:
quelle
tanh()
Aktivierungsfunktion, welche Initialisierungsfunktion soll ich verwenden.Varianzskalierung ist nur eine Verallgemeinerung von Xavier: http://tflearn.org/initializations/ . Sie arbeiten beide nach dem Prinzip, dass die Skalierung der Farbverläufe in allen Ebenen gleich sein sollte. Xavier ist wahrscheinlich sicherer in der Anwendung, da es dem experimentellen Test der Zeit standhält. Der Versuch, eigene Parameter für die Varianzskalierung auszuwählen, kann das Training beeinträchtigen oder dazu führen, dass Ihr Netzwerk überhaupt keine Einnahmen erzielt.
quelle