web-dev-qa-db-fra.com

Pourquoi utiliser tanh pour la fonction d'activation de MLP?

Im étudiant personnellement les théories du réseau neuronal et a obtenu quelques questions.

Dans de nombreux livres et références, pour la fonction d'activation de la couche cachée, des fonctions hyper-tangentes ont été utilisées.

Les livres ont proposé une raison très simple: les combinaisons linéaires de fonctions tanh peuvent décrire presque toutes les formes de fonctions avec une erreur donnée.

Mais, une question est venue.

  1. Est-ce une vraie raison pour laquelle la fonction tanh est utilisée?
  2. Si c'est le cas, est-ce la seule raison pour laquelle la fonction tanh est utilisée?
  3. si c'est le cas, la fonction tanh est-elle la seule fonction qui puisse le faire?
  4. sinon, quelle est la vraie raison? ..

Je stock ici continue de penser ... s'il vous plaît aidez-moi à sortir de ce piège mental (? ...)!

19
forsythia

En vérité, les fonctions tanh et logistiques peuvent être utilisées. L'idée est que vous pouvez mapper n'importe quel nombre réel ([-Inf, Inf]) à un nombre compris entre [-1 1] ou [0 1] pour le tanh et la logistique respectivement. De cette manière, il peut être démontré qu'une combinaison de ces fonctions peut approximer n'importe quelle fonction non linéaire. En ce qui concerne la préférence pour le tanh sur la fonction logistique, le premier est symétrique par rapport au 0 tandis que le second ne l'est pas. Cela rend la seconde plus sujette à la saturation des couches ultérieures, ce qui rend l'entraînement plus difficile.

12
ASantosRibeiro

La plupart du temps, tanh converge rapidement que la fonction sigmoïde et logistique, et assure une meilleure précision [1] . Cependant, l'unité linéaire récemment rectifiée (ReLU) est proposée par Hinton [2] qui montre le train ReLU six fois plus rapide que tanh [3] pour atteindre la même erreur d'entraînement. Et vous pouvez vous référer à [4] pour voir quels avantages ReLU offre.


Conformément à environ 2 ans d'expérience en apprentissage automatique. Je veux partager quelques stratégies les plus utilisées et mon expérience sur la vision par ordinateur.

La normalisation de l'entrée est très importante

Une bonne normalisation pourrait améliorer les performances et converger rapidement. La plupart du temps, nous soustraireons la valeur moyenne pour que la moyenne d'entrée soit égale à zéro pour éviter que les poids changent dans les mêmes directions de sorte que convergent lentement [5] . apprentissage, et ils ont proposé la normalisation par lots [6] afin de normaliser chaque vecteur ayant une moyenne et une variance unitaire nul.

Plus de données plus de précision

Davantage de données d'entraînement pourraient bien générer l'espace des fonctionnalités et empêcher le sur-ajustement. En vision par ordinateur, si les données de formation ne suffisent pas, la plupart des compétences utilisées pour augmenter l'ensemble de données de formation sont l'argumentation des données et la synthèse des données de formation.

Le choix d'une bonne fonction d'activation permet une formation meilleure et efficace.

L'acitivation non linéaire ReLU a mieux fonctionné et a donné des résultats de pointe en apprentissage profond et MLP. De plus, il présente certains avantages, par exemple simple à mettre en œuvre et à moindre coût en rétropropagation pour former efficacement un réseau neuronal plus profond. Cependant, ReLU obtiendra un gradient nul et ne s'entraînera pas lorsque l'unité est à zéro active. Par conséquent, certains ReLU modifiés sont proposés, par exemple Leaky ReLU, et Noise ReLU, et la méthode la plus populaire est PReLU [7] proposée par Microsoft qui a généralisé l'unité traditionnelle recitifed.

Autres

  • choisissez un taux d'apprentissage initial élevé s'il n'oscille pas ou ne diverge pas afin de trouver un meilleur minimum global.
  • mélange des données
27
RyanLiu

Pour additionner à la réponse déjà existante , la préférence pour la symétrie autour de 0 n'est pas seulement une question d'esthétique. Un excellent texte de LeCun et al " Efficient BackProp " montre en détail pourquoi c'est une bonne idée que les couches d'entrée, de sortie et cachées ont des valeurs moyennes de 0 et un écart type de 1.

9
Boris Gorelik

Mise à jour pour tenter d'apaiser les commentateurs: basées uniquement sur l'observation, plutôt que sur la théorie décrite ci-dessus, les fonctions d'activation de Tanh et ReLU sont plus performantes que sigmoïdes. Sigmoid semble également être plus sujet aux optima locaux ou à des problèmes de "ligne plate" moins étendus. Par exemple, essayez de limiter le nombre de fonctionnalités pour forcer la logique dans les nœuds du réseau dans XOR et sigmoïde réussit rarement tandis que Tanh et ReL ont plus de succès.

Tanh semble peut-être plus lent que ReLU pour la plupart des exemples donnés, mais produit des ajustements d'apparence plus naturels pour les données en utilisant uniquement des entrées linéaires, comme vous le décrivez. Pour exemple un cercle vs un chose carrée/hexagonale .

http://playground.tensorflow.org/ <- ce site est une visualisation fantastique des fonctions d'activation et d'autres paramètres du réseau neuronal. Pas une réponse directe à votre question, mais l'outil "fournit l'intuition" comme dirait Andrew Ng.

2
Andrew

De nombreuses réponses décrivent ici pourquoi tanh (c'est-à-dire (1 - e ^ 2x)/(1 + e ^ 2x)) est préférable à la fonction sigmoïde/logistique (1/(1 + e ^ -x)), mais il devrait a noté qu'il y a une bonne raison pour laquelle ce sont les deux alternatives les plus courantes qui doivent être comprises, c'est que lors de la formation d'un MLP à l'aide de l'algorithme de propagation inverse, l'algorithme nécessite la valeur de la dérivée de la fonction d'activation au point de activation de chaque nœud du réseau. Bien que cela puisse généralement être calculé pour la plupart des fonctions d'activation plausibles (à l'exception de celles avec des discontinuités, ce qui est un peu un problème pour celles-ci), cela nécessite souvent des calculs coûteux et/ou le stockage de données supplémentaires (par exemple, la valeur d'entrée de la fonction d'activation). , qui n'est pas autrement requis après le calcul de la sortie de chaque nœud). Tanh et la fonction logistique, cependant, ont tous les deux des calculs très simples et efficaces pour leurs dérivés qui peuvent être calculés à partir de sortie des fonctions; c'est-à-dire que si la somme pondérée des entrées du nœud est v et sa sortie est u, nous devons savoir du/dv qui peut être calculé à partir de plutôt que du plus traditionnel v: pour tanh c'est 1 - u ^ 2 et pour la fonction logistique c'est u * (1 - u). Ce fait rend ces deux fonctions plus efficaces à utiliser dans un réseau de rétropropagation que la plupart des alternatives, de sorte qu'une raison impérieuse serait généralement requise pour s'en écarter.

2
Periata Breatta

En théorie, je suis d'accord avec les réponses ci-dessus. D'après mon expérience, certains problèmes ont une préférence pour sigmoïde plutôt que tanh, probablement en raison de la nature de ces problèmes (car il y a des effets non linéaires, il est difficile de comprendre pourquoi).

Compte tenu d'un problème, j'optimise généralement les réseaux à l'aide d'un algorithme génétique. La fonction d'activation de chaque élément de la population est choisie randonm entre un ensemble de possibilités (sigmoïde, tanh, linéaire, ...). Pour 30% des problèmes de classification, le meilleur élément trouvé par l'algorithme génétique a la fonction d'activation sigmoïde.