Dans la couche de sortie d'un réseau de neurones, il est typique d'utiliser la fonction softmax pour approcher une distribution de probabilité:
C'est cher à calculer à cause des exposants. Pourquoi ne pas simplement effectuer une transformation Z pour que toutes les sorties soient positives, puis normaliser en divisant simplement toutes les sorties par la somme de toutes les sorties?
Il existe un attribut Nice 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 forte stimulation (par exemple, de grands nombres, une image nette) avec des probabilités proches de 0 et 1.
Tandis que la normalisation standard ne s’inquiète pas tant que les proportions sont les mêmes.
Regardez ce qui se passe quand soft max a une entrée 10 fois plus importante, c'est-à-dire que votre réseau neuronal a une image nette et que de nombreux neurones sont activés.
>>> softmax([1,2]) # blurry image of a ferret
[0.26894142, 0.73105858]) # it is a cat perhaps !?
>>> softmax([10,20]) # crisp image of a cat
[0.0000453978687, 0.999954602]) # it is definitely a CAT !
Et ensuite, comparez-le avec la normalisation standard
>>> std_norm([1,2]) # blurry image of a ferret
[0.3333333333333333, 0.6666666666666666] # it is a cat perhaps !?
>>> std_norm([10,20]) # crisp image of a cat
[0.3333333333333333, 0.6666666666666666] # it is a cat perhaps !?
J'ai cette question depuis des mois. Il semble que nous ayons simplement deviné intelligemment la softmax en tant que fonction de sortie, puis que nous interprétons l'entrée dans softmax comme des probabilités log. Comme vous l'avez dit, pourquoi ne pas simplement normaliser toutes les sorties en les divisant par leur somme? J'ai trouvé la réponse dans livre d'apprentissage en profondeur de Goodfellow, Bengio et Courville (2016) à la section 6.2.2.
Disons que notre dernière couche cachée nous donne z comme activation. Alors le softmax est défini comme
La fonction exp de la fonction softmax annule grossièrement le journal de la perte d'entropie croisée, ce qui la rend sensiblement 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é erroné ne provoque pas un gradient disparaissant.
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 vraisemblance des données d'apprentissage (de taille m). Parce que la probabilité de l’ensemble des données de formation 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 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à indiqué, nous pouvons donc remplacer
avec i étant la classe correcte du kème échantillon. Nous voyons maintenant que lorsque nous prenons le logarithme de softmax, pour calculer le log-vraisemblance de l'échantillon, nous obtenons:
, qui pour les grandes différences dans 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) dans deux cas:
Nous voyons que la probabilité de log globale sera dominée par des é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 approximativement 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.
Si la softmax vous semble toujours un choix arbitraire, vous pouvez examiner la justification de l'utilisation du sigmoïde dans la régression logistique:
Pourquoi la fonction sigmoïde au lieu de quoi que ce soit d'autre?
Le softmax est la généralisation du sigmoïde pour des problèmes multi-classes justifiés de manière analogue.
J'ai trouvé l'explication 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 répandons les données avec exponentielle). Cependant, il y a plus que cela.
Plus précisément, il existe deux 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 vue 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 les probabilités logarithmiques. Ainsi, lorsque nous effectuons une exponentiation, nous nous retrouvons avec les probabilités brutes. Dans ce cas, l’équation softmax recherche le MLE (estimation de vraisemblance maximale)
En résumé, même si l'équation de softmax semble être arbitraire, elle ne l'est PAS. Il s’agit en fait d’une méthode plutôt normalisée de normalisation des classifications visant à minimiser l’entropie croisée/la probabilité négative entre les prédictions et la vérité.
Les valeurs de q_i représentent log-vraisemblance. Afin de récupérer les valeurs de probabilité, vous devez les exposer.
L'une des raisons pour lesquelles les algorithmes statistiques utilisent souvent des fonctions de perte log-vraisemblance est leur plus grande stabilité numérique: un produit de probabilités peut être représenté sous la forme d'un très petit nombre à virgule flottante. En utilisant une fonction de perte de log-vraisemblance, un produit de probabilités devient une somme.
Une autre raison est que les log-vraisemblances se produisent naturellement lorsque des estimateurs sont dérivés pour des variables aléatoires supposées être tirées de distributions gaussiennes multivariées. Voir, par exemple, l'estimateur de vraisemblance maximale (ML) et la manière dont il est connecté aux moindres carrés.
Sidenote, je pense que cette question est plus appropriée pour les échanges théoriques de la théorie CS ou de la science informatique.
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 positif et supérieur à zéro.
Par exemple pour a = [-2, -1, 1, 2]
la somme sera 0, nous pouvons utiliser softmax pour éviter la division par zéro.
Nous examinons un problème de classification multiple. La variable prédite y
peut prendre l'une des catégories k
, où k > 2
. En théorie des probabilités, il s'agit d'une distribution multinomiale, et la distribution multinomiale appartient à une grande famille appelée famille exponentielle. Selon la propriété des distributions de familles exponentielles, nous reconstruisons la probabilité de P(k=?|x)
, elle coïncide avec la formule softmax.
Pour plus d'informations et une preuve formelle, reportez-vous à notes de conférence CS229 (Softmax Regression) .
Une astuce utile fonctionne généralement avec softmax: softmax (x) = softmax (x + c) , c’est-à-dire que softmax est invariant aux décalages constants dans l’entrée .
Supposons que nous changions la fonction softmax afin que les activations de sortie soient données par
où c
est une constante positive. Notez que c=1
correspond à la fonction standard softmax. Mais si nous utilisons une valeur différente de c
, nous obtenons une fonction différente, qui est néanmoins assez similaire qualitativement au softmax. En particulier, montrez que les activations de sortie forment une distribution de probabilité, tout comme pour le softmax habituel. Supposons que nous permettions à c
de devenir volumineux, c'est-à-dire c→∞
. Quelle est la valeur limite pour les activations de sortie a^L_j
? Après avoir résolu ce problème, vous devez comprendre pourquoi nous pensons à la c=1
fonctionne comme une version "adoucie" de la fonction maximum. C'est l'origine du terme "softmax". Vous pouvez suivre les détails de cette source (équation 83).
Le choix de la fonction softmax semble quelque peu arbitraire car il existe de nombreuses autres fonctions de normalisation possibles. On ne voit donc pas pourquoi la perte log-softmax fonctionnerait mieux que d’autres solutions de rechange.
From " 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’extension de Taylor de exp
et le softmax dit sphérique, et ont découvert qu’elles pouvaient parfois donner de meilleurs résultats que la moyenne softmax
.