Yan LeCun et d'autres soutiennent dans Efficient BackProp que
La convergence est généralement plus rapide si la moyenne de chaque variable d'entrée sur l'ensemble d'apprentissage est proche de zéro. Pour voir cela, considérons le cas extrême où toutes les entrées sont positives. Les poids d'un nœud particulier dans la première couche de poids sont mis à jour d'une quantité proportionnelle à δx où δ est l'erreur (scalaire) à ce nœud et x est le vecteur d'entrée (voir les équations (5) et (10)). Lorsque toutes les composantes d'un vecteur d'entrée sont positives, toutes les mises à jour des poids qui alimentent un nœud auront le même signe (c'est-à-dire signe ( δ )). En conséquence, ces poids ne peuvent que tous diminuer ou augmenter tous ensemblepour un modèle d'entrée donné. Ainsi, si un vecteur de poids doit changer de direction, il ne peut le faire qu'en zigzagant ce qui est inefficace et donc très lent.
C'est pourquoi vous devez normaliser vos entrées afin que la moyenne soit nulle.
La même logique s'applique aux couches intermédiaires:
Cette heuristique doit être appliquée à toutes les couches, ce qui signifie que nous voulons que la moyenne des sorties d'un nœud soit proche de zéro car ces sorties sont les entrées de la couche suivante.
Postscript @craq fait valoir que cette citation n'a pas de sens pour ReLU (x) = max (0, x) qui est devenu une fonction d'activation très populaire. Bien que ReLU évite le premier problème de zigzag mentionné par LeCun, il ne résout pas ce deuxième point de LeCun qui dit qu'il est important de pousser la moyenne à zéro. J'aimerais savoir ce que LeCun a à dire à ce sujet. Dans tous les cas, il existe un document appelé Normalisation par lots , qui s'appuie sur le travail de LeCun et offre un moyen de résoudre ce problème:
On sait depuis longtemps (LeCun et al., 1998b; Wiesler et Ney, 2011) que la formation du réseau converge plus rapidement si ses entrées sont blanchies - c'est-à-dire transformées linéairement pour avoir des moyennes et des variances unitaires nulles et décorrélées. Comme chaque couche observe les entrées produites par les couches ci-dessous, il serait avantageux d'obtenir le même blanchiment des entrées de chaque couche.
Soit dit en passant, cette vidéo de Siraj explique beaucoup de choses sur les fonctions d'activation en 10 minutes amusantes.
@elkout dit "La vraie raison pour laquelle le tanh est préféré par rapport au sigmoïde (...) est que les dérivés du tanh sont plus grands que les dérivés du sigmoïde."
Je pense que ce n'est pas un problème. Je n'ai jamais vu cela être un problème dans la littérature. Si cela vous dérange qu'un dérivé soit plus petit qu'un autre, vous pouvez simplement le mettre à l'échelle.
La fonction logistique a la forme σ(x)=11+e−kx . Habituellement, nous utilisonsk=1, mais rien ne vous interdit d'utiliser une autre valeur pourkpour élargir vos dérivés, si tel était votre problème.
Nitpick: tanh est également une fonction sigmoïde . Toute fonction avec une forme en S est un sigmoïde. Ce que vous appelez sigmoïde, c'est la fonction logistique. La raison pour laquelle la fonction logistique est plus populaire tient aux raisons historiques. Il est utilisé depuis plus longtemps par les statisticiens. En outre, certains estiment que c'est plus biologiquement plausible.