Pourquoi l'initialisation des poids et biais devrait-elle être choisie autour de 0?

13

J'ai lu ceci:

Pour former notre réseau de neurones, nous initialiserons chaque paramètre W (l) ijWij (l) et chaque b (l) ibi (l) à une petite valeur aléatoire proche de zéro (disons selon un Normal (0, ϵ2) Normal (0 , ϵ2) distribution pour certains petits ϵϵ, disons 0,01)

de Stanford Deep learning tutorials au 7ème paragraphe de l' algorithme de rétropropagation

Ce que je ne comprends pas, c'est pourquoi l'initialisation du poids ou du biais devrait être autour de 0 ?

cinqS
la source

Réponses:

11

En supposant une normalisation des données assez raisonnable, l'attente des pondérations devrait être nulle ou proche de celle-ci. Il pourrait donc être raisonnable de mettre tous les poids initiaux à zéro, car un poids initial positif devra aller plus loin s'il devait en fait être un poids négatif et vice versa. Mais cela ne fonctionne pas. Si tous les poids sont les mêmes, ils auront tous la même erreur et le modèle n'apprendra rien - il n'y a pas de source d'asymétrie entre les neurones.

Ce que nous pourrions faire, à la place, est de garder les poids très proches de zéro, mais de les rendre différents en les initialisant sur de petits nombres non nuls. C'est ce qui est suggéré dans le didacticiel que vous avez lié. Il a le même avantage de l'initialisation à zéro en ce sens qu'il est proche de la valeur d'attente `` meilleure estimation '', mais la symétrie a également été suffisamment brisée pour que l'algorithme fonctionne.

Cette approche présente des problèmes supplémentaires. Il n'est pas nécessairement vrai que de plus petits nombres fonctionneront mieux, surtout si le réseau neuronal est profond. Les gradients calculés en rétropropagation sont proportionnels aux poids; de très petits poids conduisent à de très faibles gradients et peuvent conduire au réseau à prendre beaucoup, beaucoup plus de temps à s'entraîner ou à ne jamais terminer.

sqrt(d)d[1d,1d]

Eumenedies
la source
3

Si vous le définissez sur 0, ils auront tous la même erreur, donc backprop les rendra tous égaux; par conséquent, vous devez avoir une initialisation aléatoire.

Pourquoi environ 0? Je pense que ce message peut bien y répondre: /stats/47590/what-are-good-initial-weights-in-a-neural-network

Landmaster
la source