fonction d'activation tanh vs fonction d'activation sigmoïde

82

La fonction d'activation de tanh est:

tanh(x)=2σ(2x)1

Où , la fonction sigmoïde, est définie comme suit: .σ(x)

σ(x)=ex1+ex

Des questions:

  • Est-ce vraiment important d'utiliser ces deux fonctions d'activation (tanh vs sigma)?
  • Quelle fonction est meilleure dans quels cas?
Satya
la source
12
tanh(x)=2σ(2x)1
Roman Shapovalov
Les réseaux de neurones profonds ont évolué. La préférence actuelle est la fonction RELU.
Paul Nord
7
@PaulNord Tant tanh que sigmoids sont toujours utilisés conjointement avec d'autres activations comme RELU, cela dépend de ce que vous essayez de faire.
Tahlor

Réponses:

80

Oui, c'est important pour des raisons techniques. Fondamentalement pour l'optimisation. Il vaut la peine de lire Efficient Backprop de LeCun et al.

Ce choix a deux raisons (en supposant que vous ayez normalisé vos données, ce qui est très important):

  1. Avoir des gradients plus forts: puisque les données sont centrées sur 0, les dérivées sont plus élevées. Pour voir cela, calculez la dérivée de la fonction tanh et notez que sa plage (valeurs de sortie) est [0,1].

La plage de la fonction tanh est [-1,1] et celle de la fonction sigmoïde est [0,1]

  1. Éviter les biais dans les gradients. Ceci est très bien expliqué dans le document et sa lecture vaut la peine pour comprendre ces problèmes.
jpmuc
la source
J'ai un petit doute dans le document que vous avez suggéré. Dans la page 14, "Lorsque les MLP ont des poids partagés (par exemple, des réseaux de convolution), le taux d'apprentissage doit être choisi de telle sorte qu'il soit proportionnel à la racine carrée du nombre de connexions partageant le poids." Pouvez-vous s'il vous plaît expliquer pourquoi?
Samedi
Cette question a déjà été répondue ici stats.stackexchange.com/questions/47590/…
jpmuc
1
C'est une question très générale. Longue histoire courte: la fonction de coût détermine ce que le réseau de neurones doit faire: la classification ou la régression et comment. Si vous pouviez obtenir une copie de "Neural Networks for Pattern Recognition" de Christopher Bishop, ce serait formidable. Aussi "Machine Learning" de Mitchell vous donne une bonne explication à un niveau plus fondamental.
jpmuc
1
Je suis désolé, Satya, je suis généralement très occupé pendant la semaine. Comment normalisez-vous vos données exactement? en.wikipedia.org/wiki/Whitening_transformation Je ne sais pas vraiment quel peut être votre problème. Le moyen le plus simple consiste à soustraire la moyenne, puis à l'égaliser avec la matrice de covariance. Evtl. vous devez ajouter des composants pour les hautes fréquences (voir la transformation ZCA dans la référence ci-dessus)
jpmuc
1
Merci beaucoup juampa. Tu m'aides vraiment beaucoup. Les lectures suggérées sont très bonnes. Je suis en train de faire un projet sur l’exploration de données climatiques. 50% de mes caractéristiques d'entrée sont en température (plage 200K-310K) et 50% de mes caractéristiques d'entrée sont des valeurs de pression (plage 50000pa à 100000pa). Je suis en train de blanchir. Avant PCA, est-il nécessaire de le normaliser? Si oui, comment devrais-je le normaliser? Devrais-je normaliser avant de soustraire par moyenne ou après soustraction par moyenne? J'obtiens des résultats différents si je normalise par différentes méthodes ...
vendredi
32

Merci beaucoup @jpmuc! Inspiré par votre réponse, j'ai calculé et tracé séparément la dérivée de la fonction tanh et la fonction sigmoïde standard. Je voudrais partager avec vous tous. Voici ce que j'ai C'est la dérivée de la fonction tanh. Pour une entrée comprise entre [-1,1], nous avons une dérivée entre [0.42, 1]. entrez la description de l'image ici

C'est la dérivée de la fonction sigmoïde standard f (x) = 1 / (1 + exp (-x)). Pour une entrée comprise entre [0,1], nous avons une dérivée entre [0,20, 0,25]. entrez la description de l'image ici

Apparemment, la fonction tanh fournit des gradients plus forts.

Mina HE
la source
6
Une autre façon de voir les choses est que σ (2x) est identique à σ (x), mais avec un étirement horizontal appliqué, le facteur d'échelle 1/2 (c'est-à-dire le même graphique mais avec tout écrasé vers l'axe des y). Quand vous écrasez dedans, la pente devient plus raide
rbennett485
2
Je ne vois pas pourquoi cela ferait une différence. L'échelle et l'écrasement seront aléatoires pour chaque nœud et (avec des décalages et des pondérations en entrée et en sortie), les deux seront des approximateurs universels convergeant vers le même résultat.
endolith