Quelle est la différence entre l'initialiseur de mise à l'échelle de variance et l'initialiseur xavier?

20

Dans l'implémentation de ResNet par Tensorflow , je trouve qu'ils utilisent l'initialiseur de mise à l'échelle de la variance, je trouve également que l'initialiseur xavier est populaire. Je n'ai pas trop d'expérience à ce sujet, ce qui est mieux en pratique?

Hanamichi
la source
Pour une explication plus détaillée de l'initialisation de Xavier, vous pouvez visiter ce lien: prateekvjoshi.com/2016/03/29/… Il comprend une dérivation appropriée de l'initialisation de Xavier et de son intuition.
Himanshu Singh

Réponses:

31

Perspective historique

L'initialisation de Xavier , initialement proposée par Xavier Glorot et Yoshua Bengio dans "Comprendre la difficulté de former des réseaux de neurones profonds à action directe" , est la technique d'initialisation des poids qui essaie de rendre la variance des sorties d'une couche égale à la variance de ses entrées . Cette idée s'est avérée très utile dans la pratique. Naturellement, cette initialisation dépend de la fonction d'activation de couche. Et dans leur article, Glorot et Bengio ont considéré la fonction d'activation sigmoïde logistique , qui était le choix par défaut à ce moment-là.

Plus tard, l'activation sigmoïde a été dépassée par ReLu, car elle a permis de résoudre le problème des gradients de fuite / explosion. Par conséquent, une nouvelle technique d'initialisation est apparue, qui a appliqué la même idée (équilibrage de la variance de l'activation) à cette nouvelle fonction d'activation. Il a été proposé par Kaiming He et al dans "Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification" , et maintenant il est souvent appelé initialisation He .

Dans tensorflow, l'initialisation de He est implémentée en variance_scaling_initializer()fonction (qui est, en fait, un initialiseur plus général, mais effectue par défaut l'initialisation de He), tandis que l'initialiseur Xavier l'est logiquement xavier_initializer().

Sommaire

En résumé, la principale différence pour les praticiens de l'apprentissage automatique est la suivante:

  • L'initialisation fonctionne mieux pour les couches avec l' activation ReLu .
  • L'initialisation de Xavier fonctionne mieux pour les couches avec activation sigmoïde .
Maxime
la source
dans pytorch quelle initialisation est utilisée? cela dépend-il de l'activation?
Charlie Parker
2
Salut, pour la tanh()fonction d'activation, quelle fonction d'initialisation dois-je utiliser.
GoingMyWay
@GoingMyWay, selon ce pytorch.org/docs/stable/… , vous pouvez utiliser l'initialisation He avec le gain 5/3. Je ne sais pas d'où cela vient.
Podgorskiy
3

La mise à l'échelle de la variance n'est qu'une généralisation de Xavier: http://tflearn.org/initializations/ . Ils fonctionnent tous deux sur le principe que l'échelle des gradients doit être similaire dans toutes les couches. Xavier est probablement plus sûr à utiliser car il a résisté à l'épreuve expérimentale du temps; essayer de choisir vos propres paramètres pour la mise à l'échelle de la variance peut empêcher la formation ou empêcher votre réseau de gagner du tout.

liangjy
la source
Merci. Que voulez-vous dire choisir vos propres paramètres de variance?
Hanamichi
Dans la mise en œuvre de TF, ce serait le paramètre de facteur (qui détermine le rapport de la variance d'entrée à la variance de sortie)
liangjy