Alors que le choix des fonctions d'activation pour la couche cachée est assez clair (principalement sigmoïde ou tanh), je me demande comment décider de la fonction d'activation pour la couche en sortie. Les choix courants sont les fonctions linéaires, les fonctions sigmoïdes et les fonctions softmax. Cependant, quand devrais-je utiliser lequel?
neural-networks
julien
la source
la source
Réponses:
Utilisez sigmoïde simple uniquement si votre sortie admet plusieurs "vraies" réponses, par exemple un réseau qui vérifie la présence de divers objets dans une image. En d'autres termes, la sortie n'est pas une distribution de probabilité (il n'est pas nécessaire que la somme soit égale à 1).
la source
Je serai peut-être en retard pour le parti, mais il semble que certaines choses doivent être clarifiées ici.
Tout d'abord: la fonction d'activation au niveau de la couche en sortie dépend souvent de votre fonction de coût . Ceci est fait pour rendre la dérivée de la fonction de coût par rapport aux entrées de la dernière couche facile à calculer.g(x) ∂C∂z C z
À titre d' exemple , nous pourrions utiliser la perte d'erreur quadratique moyenne dans un paramètre de régression. En définissant (fonction d'activation linéaire), on trouve pour la dérivée Vous obtenez la même expression simple pour si vous combinez la perte d'entropie croisée avec les fonctions d'activation logistique sigmoïde ou softmax.C(y,g(z))=12(y−g(z))2 g(x)=x ∂C(y,g(z))∂z=∂C(y,g(z))∂g(z)⋅∂g(z)∂z=∂∂g(z)(12(y−g(z))2)⋅∂∂z(z)=−(y−g(z))⋅1=g(z)−y ∂C∂z
C'est la raison pour laquelle les activations linéaires sont souvent utilisées pour les activations de régression et logistiques / softmax pour la classification binaire / multi-classes. Cependant, rien ne vous empêche d'essayer différentes combinaisons. Bien que l’expression de ne soit probablement pas si agréable, elle n’implique pas pour autant que votre fonction d’activation produise de moins bonnes performances.∂C∂z
Deuxièmement, j'aimerais ajouter qu'il existe de nombreuses fonctions d'activation pouvant être utilisées pour les couches masquées. Sigmoids (comme la fonction logistique et la tangente hyperbolique) s’est avéré efficace, mais comme l’a indiqué Jatin , ils présentent des gradients qui s’évanouissent lorsque vos réseaux deviennent trop profonds. Dans ce cas, les ReLU sont devenues populaires. Ce que je voudrais cependant souligner, c’est qu’il ya beaucoup plus de fonctions d’activation disponibles et que différents chercheurs continuent à en rechercher de nouvelles (par exemple, Unités linéaires exponentielles (ELU), Unités linéaires à erreur gaussienne (GELU), ...) avec des meilleures propriétés
Pour conclure: lorsque vous recherchez les meilleures fonctions d'activation, soyez simplement créatif. Essayez différentes choses et voyez quelles combinaisons permettent la meilleure performance.
Addendum: Pour plus de paires de fonctions de perte et d'activations, vous souhaiterez probablement rechercher des fonctions de lien (canoniques) .
la source
Sigmoid et tanh ne doivent pas être utilisés comme fonction d'activation pour la couche cachée. Ceci est dû au problème du gradient qui disparaît, c'est-à-dire que si votre entrée est située sur un côté supérieur (où sigmoïde devient plat), le gradient sera proche de zéro. Cela entraînera un apprentissage très lent ou inexistant pendant la rétropropagation, car les poids seront mis à jour avec de très petites valeurs.
Explication détaillée ici: http://cs231n.github.io/neural-networks-1/#actfun
La meilleure fonction pour les couches cachées est donc ReLu.
la source
Les sorties Softmax produisent un vecteur non négatif et une somme égale à 1. C'est utile lorsque vous avez des catégories mutuellement exclusives ("ces images ne contiennent que des chats ou des chiens, pas les deux"). Vous pouvez utiliser softmax si vous avez des étiquettes mutuellement exclusives .2,3,4,5,...
En utilisant sorties sigmoïdes produisent un vecteur où chaque élément est une probabilité. Cela est utile lorsque vous avez des catégories qui ne s'excluent pas mutuellement ("ces images peuvent contenir des chats, des chiens ou des chats et des chiens à la fois"). Vous utilisez autant de neurones sigmoïdes que vous avez de catégories et vos étiquettes ne doivent pas s’exclure mutuellement.2,3,4,...
Le truc mignon est que vous pouvez également utiliser une seule unité sigmoïde si vous rencontrez un problème binaire s'excluant mutuellement. puisqu’une seule unité sigmoïde peut être utilisée pour estimer , les axiomes de Kolmogorov impliquent que .p(y=1) 1−p(y=1)=p(y=0)
L'utilisation de la fonction d' identité en tant que sortie peut être utile lorsque vos sorties ne sont pas liées. Le bénéfice ou la perte d’un quart de la société pourrait être illimité de part et d’autre.
Les unités ReLU ou des variantes similaires peuvent être utiles lorsque la sortie est liée au-dessus ou au-dessous. Si la sortie est uniquement limitée à une valeur non négative, il serait judicieux d’utiliser une activation ReLU comme fonction de sortie.
De même, si les sorties sont d'une certaine manière contraintes de se trouver dans , tanh pourrait avoir un sens.[−1,1]
La bonne chose à propos des réseaux de neurones est qu'ils sont des outils incroyablement flexibles.
la source