Was ist der Unterschied zwischen dem Varianzskalierungsinitialisierer und dem Xavier-Initialisierer?


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?


Eine detailliertere Erklärung der Initialisierung von Xavier finden Sie unter folgendem Link: prateekvjoshi.com/2016/03/29/… Es enthält eine korrekte Ableitung der Initialisierung und der Intuition von Xavier.
Himanshu Singh

Antworten:


31

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 ist xavier_initializer().

Zusammenfassung

Zusammenfassend ist der Hauptunterschied für Praktiker des maschinellen Lernens der folgende:

  • Die Initialisierung funktioniert besser für Ebenen mit ReLu- Aktivierung.
  • Die Xavier-Initialisierung funktioniert besser für Ebenen mit Sigmoid- Aktivierung.

In Pytorch welche Initialisierung wird verwendet? Kommt es auf die Aktivierung an?
Charlie Parker

2
Hallo, für die tanh()Aktivierungsfunktion, welche Initialisierungsfunktion soll ich verwenden.
GoingMyWay

@GoingMyWay, gemäß diesem pytorch.org/docs/stable/… können Sie die He-Initialisierung mit einer Verstärkung von 5/3 verwenden. Ich bin mir nicht sicher, woher das kommt.
Podgorskiy

3

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.


Vielen Dank. Was meinst du damit, deine eigenen Parameter für die Varianz auszuwählen?
Hanamichi

In der TF-Implementierung wäre dies der Faktor-Parameter (der das Verhältnis der Eingangsvarianz zur Ausgangsvarianz bestimmt)
am
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.