Dans la couche de sortie d'un réseau de neurones, il est typique d'utiliser la fonction softmax pour approximer une distribution de probabilité:
Cela coûte cher à calculer à cause des exposants. Pourquoi ne pas simplement effectuer une transformée en Z pour que toutes les sorties soient positives, puis normaliser simplement en divisant toutes les sorties par la somme de toutes les sorties?
Réponses:
Il y a un attribut intéressant de Softmax par rapport à la normalisation standard.
Il réagit à une faible stimulation (pensez à une image floue) de votre réseau neuronal avec une distribution plutôt uniforme et à une stimulation élevée (c'est-à-dire un grand nombre, pensez à une image nette) avec des probabilités proches de 0 et 1.
Alors que la normalisation standard ne se soucie pas tant que les proportions sont les mêmes.
Regardez ce qui se passe lorsque soft max a une entrée 10 fois plus grande, c'est-à-dire que votre réseau neuronal a une image nette et que de nombreux neurones sont activés
Et puis comparez-le avec la normalisation standard
la source
J'ai cette question depuis des mois. Il semble que nous venons de deviner intelligemment le softmax comme une fonction de sortie, puis d'interpréter l'entrée du softmax comme des probabilités log. Comme vous l'avez dit, pourquoi ne pas simplement normaliser tous les extrants en les divisant par leur somme? J'ai trouvé la réponse dans le livre Deep Learning de Goodfellow, Bengio et Courville (2016) dans la section 6.2.2.
Disons que notre dernière couche cachée nous donne z comme activation. Ensuite, le softmax est défini comme
Explication très courte
L'exp dans la fonction softmax annule grossièrement le log de la perte d'entropie croisée, ce qui fait que la perte est à peu près linéaire dans z_i. Cela conduit à un gradient à peu près constant, lorsque le modèle est erroné, lui permettant de se corriger rapidement. Ainsi, un softmax saturé incorrect ne provoque pas de gradient de fuite.
Brève explication
La méthode la plus populaire pour former un réseau de neurones est l'estimation du maximum de vraisemblance. Nous estimons les paramètres thêta de manière à maximiser la probabilité des données d'apprentissage (de taille m). Étant donné que la probabilité de l'ensemble de données d'apprentissage est un produit des probabilités de chaque échantillon, il est plus facile de maximiser la log-vraisemblance de l'ensemble de données et donc la somme de la log-vraisemblance de chaque échantillon indexé par k:
Maintenant, nous nous concentrons uniquement sur le softmax ici avec z déjà donné, nous pouvons donc remplacer
avec i étant la classe correcte du kème échantillon. Maintenant, nous voyons que lorsque nous prenons le logarithme du softmax, pour calculer la log-vraisemblance de l'échantillon, nous obtenons:
, qui pour de grandes différences de z se rapproche approximativement de
Tout d'abord, nous voyons ici la composante linéaire z_i. Deuxièmement, nous pouvons examiner le comportement de max (z) pour deux cas:
Nous voyons que la log-vraisemblance globale sera dominée par les échantillons, où le modèle est incorrect. Aussi, même si le modèle est vraiment incorrect, ce qui conduit à un softmax saturé, la fonction de perte ne sature pas. Il est approximativement linéaire dans z_j, ce qui signifie que nous avons un gradient à peu près constant. Cela permet au modèle de se corriger rapidement. Notez que ce n'est pas le cas pour l'erreur quadratique moyenne par exemple.
Explication longue
Si le softmax vous semble toujours être un choix arbitraire, vous pouvez jeter un œil à la justification de l'utilisation du sigmoïde dans la régression logistique:
Pourquoi la fonction sigmoïde au lieu de toute autre chose?
Le softmax est la généralisation du sigmoïde pour des problèmes multi-classes justifiés de manière analogue.
la source
J'ai trouvé l'explication ici très bonne: CS231n: Réseaux de neurones convolutionnels pour la reconnaissance visuelle.
En surface, l'algorithme softmax semble être une simple normalisation non linéaire (nous étalons les données avec exponentielle). Cependant, il y a plus que cela.
Plus précisément, il existe plusieurs vues différentes ( même lien que ci-dessus ):
Théorie de l'information - du point de vue de la théorie de l'information, la fonction softmax peut être considérée comme une tentative de minimiser l'entropie croisée entre les prédictions et la vérité.
Vue probabiliste - de ce point de vue, nous examinons en fait les log-probabilités, donc lorsque nous effectuons l'exponentiation, nous nous retrouvons avec les probabilités brutes. Dans ce cas, l'équation softmax trouve le MLE (Maximum Likelihood Estimate)
En résumé, même si l'équation softmax semble être arbitraire, elle ne l'est PAS. C'est en fait une façon plutôt raisonnée de normaliser les classifications pour minimiser l'entropie croisée / la probabilité négative entre les prédictions et la vérité.
la source
Les valeurs de q_i représentent les log-vraisemblances. Afin de récupérer les valeurs de probabilité, vous devez les exponentiellement.
L'une des raisons pour lesquelles les algorithmes statistiques utilisent souvent des fonctions de perte de probabilité logarithmique est qu'ils sont numériquement plus stables: un produit de probabilités peut être représenté par un très petit nombre à virgule flottante. En utilisant une fonction de perte log-vraisemblable, un produit de probabilités devient une somme.
Une autre raison est que les log-vraisemblances se produisent naturellement lors de la dérivation d'estimateurs pour des variables aléatoires qui sont supposées être tirées de distributions gaussiennes multivariées. Voir par exemple l'estimateur du maximum de vraisemblance (ML) et la façon dont il est connecté aux moindres carrés.
En passant, je pense que cette question est plus appropriée pour la théorie CS ou les échanges de piles de science computationnelle.
la source
Nous examinons un problème de classification multiclasse. Autrement dit, la variable prédite
y
peut prendre l'une desk
catégories, oùk > 2
. En théorie des probabilités, cela est généralement modélisé par une distribution multinomiale. La distribution multinomiale fait partie des distributions familiales exponentielles. On peut reconstruire la probabilité enP(k=?|x)
utilisant les propriétés des distributions familiales exponentielles, elle coïncide avec la formule softmax.Si vous pensez que le problème peut être modélisé par une autre distribution, autre que multinomiale, alors vous pourriez arriver à une conclusion différente de softmax.
Pour plus d'informations et une dérivation formelle, veuillez vous référer aux notes de cours CS229 (9.3 Régression Softmax) .
De plus, une astuce utile généralement effectuée pour softmax est: softmax (x) = softmax (x + c) , softmax est invariant aux décalages constants dans l'entrée.
la source
softmax
n'est pas à proprement parler une fonction d'activation. La fonction d'activation est une opération élément par élément - donnant à un élément tenseur effectuant judicieusement une opération non linéaire pour produire un autre tenseur. Maissoftmax
c'est une opération vectorielle, cela vous produit un vecteur normalisé, il y a des dépendances internes entre chaque élément.Je pense que l'une des raisons peut être de traiter les nombres négatifs et la division par zéro, car exp (x) sera toujours positive et supérieure à zéro.
Par exemple pour que
a = [-2, -1, 1, 2]
la somme soit 0, nous pouvons utiliser softmax pour éviter la division par zéro.la source
[0, 1, 3, 4]
alors une division.Supposons que nous changions la fonction softmax de sorte que les activations de sortie soient données par
où
c
est une constante positive. Notez que celac=1
correspond à la fonction softmax standard. Mais si nous utilisons une valeur différente de,c
nous obtenons une fonction différente, qui est néanmoins qualitativement assez similaire au softmax. En particulier, montrez que les activations de sortie forment une distribution de probabilité, tout comme pour le softmax habituel. Supposons que nous permettonsc
de devenir grand, à savoirc→∞
. Quelle est la valeur limite pour les activations de sortiea^L_j
? Après avoir résolu ce problème, vous devriez comprendre pourquoi nous considérons lac=1
fonction comme une version "adoucie" de la fonction maximale. C'est à l'origine du terme "softmax". Vous pouvez suivre les détails de cette source (équation 83).la source
En ajoutant à la réponse Piotr Czapla, plus les valeurs d'entrée sont élevées, plus la probabilité pour l'entrée maximale, pour la même proportion et par rapport aux autres entrées, est grande:
la source
Extrait de " Une exploration des alternatives Softmax appartenant à la famille des pertes sphériques " https://arxiv.org/abs/1511.05042
Les auteurs ont exploré d'autres fonctions parmi lesquelles l'expansion de Taylor
exp
et le soi-disant softmax sphérique et ont découvert que parfois ils pouvaient fonctionner mieux que d'habitudesoftmax
.la source