Quelle fonction d'activation pour la couche de sortie?

44

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?

julien
la source
3
Plus récemment, ReLU est devenu populaire en tant que fonction d'activation pour les unités cachées.
Juin

Réponses:

39
  • Régression: linéaire (parce que les valeurs ne sont pas liées)
  • Classification: softmax (sigmoïde simple fonctionne aussi mais softmax fonctionne mieux)

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).

rcpinto
la source
2
Softmax est également important si vous avez plusieurs groupes pour la classification
jeudi
15
Je pense qu'il est incorrect de dire que softmax fonctionne "mieux" qu'un sigmoïde, mais vous pouvez utiliser softmax dans les cas où vous ne pouvez pas utiliser de sigmoïde. Pour la classification binaire, la fonction logistique (un sigmoïde) et softmax fonctionneront aussi bien, mais la fonction logistique est mathématiquement plus simple et constitue donc un choix naturel. Cependant, lorsque vous avez plus de deux classes, vous ne pouvez pas utiliser une fonction scalaire telle que la fonction logistique, car vous avez besoin de plusieurs sorties pour connaître les probabilités de toutes les classes. Par conséquent, vous utilisez softmax.
HelloGoodbye
1
Je ne pense pas que softmax est une activation. De manière générale, vous devez l'activer avant de le normaliser (softmax).
Aaron
23

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)CzCz

À 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(yg(z))2g(x)=x

C(y,g(z))z=C(y,g(z))g(z)g(z)z=g(z)(12(yg(z))2)z(z)=(yg(z))1=g(z)y
Cz

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.Cz

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) .

Mr Tsjolder
la source
pourquoi n'est-ce pas la meilleure réponse? joli sacré intuitif et complètement scientifique
Vikram Murthy
13

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.

Jatin
la source
11
La question demande la couche de sortie. -1
Euler_Salter
1
D'accord. Ajout de la réponse basée sur la première ligne de question. Cela aurait peut-être dû être un commentaire plutôt qu'une réponse.
Juillet
Bien, mais alors vous ne deviendriez pas aussi un "problème de neurones ReLU morts?" De plus, le problème de gradient de vanishijg peut être "résolu" par la normalisation par lots. Si vous souhaitez toujours "désactiver" certains neurones comme le font les activations de ReLU, vous pouvez simplement désactiver les neurones de manière aléatoire. Donc, je pense qu'à la fin, tout dépend du problème et utilise ce qui fonctionne le mieux
Kevvy Kim
5

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)1p(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.

Rétablir Monica
la source