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?
20
Réponses:
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 logiquementxavier_initializer()
.Sommaire
En résumé, la principale différence pour les praticiens de l'apprentissage automatique est la suivante:
la source
tanh()
fonction d'activation, quelle fonction d'initialisation dois-je utiliser.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.
la source