Dans le classificateur softmax, pourquoi utiliser la fonction exp pour effectuer la normalisation?

30

Pourquoi utiliser softmax par opposition à la normalisation standard? Dans la zone de commentaire de la première réponse à cette question, @Kilian Batzner a soulevé 2 questions qui me déroutent également beaucoup. Il semble que personne ne donne d'explication à l'exception des avantages numériques.

J'ai les raisons d'utiliser la perte d'entropie croisée, mais comment cela se rapporte-t-il au softmax? Vous avez dit que "la fonction softmax peut être considérée comme essayant de minimiser l'entropie croisée entre les prédictions et la vérité". Supposons que j'utilise la normalisation standard / linéaire, mais que j'utilise toujours la perte d'entropie croisée. Ensuite, j'essaierais également de minimiser l'entropie croisée. Alors, comment le softmax est-il lié à l'entropie croisée, à l'exception des avantages numériques?

Quant à la vue probabiliste: quelle est la motivation pour regarder les probabilités logarithmiques? Le raisonnement semble être un peu comme "Nous utilisons e ^ x dans le softmax, parce que nous interprétons x comme log-probabilties". Avec le même raisonnement que nous pourrions dire, nous utilisons e ^ e ^ e ^ x dans le softmax, parce que nous interprétons x comme log-log-log-probabilités (exagérer ici, bien sûr). J'obtiens les avantages numériques de softmax, mais quelle est la motivation théorique pour l'utiliser?

Hans
la source
Elle est différenciable, conduit à des résultats non négatifs (comme cela serait nécessaire pour une probabilité afin que l'entropie croisée puisse être calculée), et se comporte comme la fonction max, qui est appropriée dans un cadre de classification. Bienvenue sur le site!
Emre
@Emre Merci! Mais que signifie "se comporte comme la fonction max"? De plus, si j'ai une autre fonction qui est également différenciable, qui augmente monotone et conduit à des résultats non négatifs, puis-je l'utiliser pour remplacer la fonction exp dans la formule?
Hans
max

Réponses:

37

C'est plus que numérique. Un rappel rapide du softmax:

P(y=j|x)=exjk=1Kexk

Où est un vecteur d'entrée avec une longueur égale au nombre de classes . La fonction softmax a 3 propriétés très intéressantes: 1. elle normalise vos données (génère une distribution de probabilité appropriée), 2. est différentiable, et 3. elle utilise l'exp que vous avez mentionnée. Quelques points importants:KxK

  1. La fonction de perte n'est pas directement liée au softmax. Vous pouvez utiliser la normalisation standard et toujours utiliser l'entropie croisée.

  2. Une fonction "hardmax" (ie argmax) n'est pas différenciable. Le softmax donne au moins une quantité minimale de probabilité à tous les éléments dans le vecteur de sortie, et est donc bien différenciable, d'où le terme "soft" dans softmax.

  3. J'arrive maintenant à votre question. Le dans softmax est la fonction exponentielle naturelle. Avant de normaliser, nous transformons comme dans le graphe de :ee xxex

fonction exponentielle naturelle

Si est 0 alors , si est 1, alors , et si est 2, maintenant ! Un pas énorme! C'est ce qu'on appelle une transformation non linéaire de nos scores de log non normalisés. La propriété intéressante de la fonction exponentielle combinée à la normalisation dans le softmax est que les scores élevés en deviennent beaucoup plus probables que les scores faibles.y = 1 x y = 2,7 x y = 7 xxy=1xy=2.7xy=7x

Un exemple . DitesK=4 et votre score de log est vecteur [ 2 , 4 , 2 , 1 ] . La fonction simple argmax génère:x[2,4,2,1]

[0,1,0,0]

L'argmax est l'objectif, mais il n'est pas différenciable et nous ne pouvons pas entraîner notre modèle avec lui :( Une simple normalisation, qui est différenciable, génère les probabilités suivantes:

[0.2222,0.4444,0.2222,0.1111]

C'est vraiment loin de l'argmax! :( Alors que les sorties softmax:

[0.1025,0.7573,0.1025,0.0377]

C'est beaucoup plus proche de l'argmax! Parce que nous utilisons l'exponentielle naturelle, nous augmentons énormément la probabilité du score le plus élevé et diminuons la probabilité des scores les plus bas par rapport à la normalisation standard. D'où le "max" en softmax.

vega
la source
3
Grande info. Cependant, au lieu d'utiliser e, qu'en est-il de l'utilisation d'une constante disons 3 ou 4? Le résultat sera-t-il le même?
Cheok Yan Cheng
7
@CheokYanCheng, oui. Mais ea un dérivé plus agréable;)
vega
J'ai vu que le résultat de softmax est généralement utilisé comme probabilités d'appartenance à chaque classe. Si le choix de «e» au lieu d'une autre constante est arbitraire, cela n'a pas de sens de le voir en termes de probabilité, non?
javierdvalle
@vega Désolé, mais je ne vois toujours pas comment cela répond à la question: pourquoi ne pas utiliser e ^ e ^ e ^ e ^ e ^ x pour les mêmes raisons? Veuillez expliquer
Gulzar
@jvalle ce n'est pas ecela qui le rend interprétable comme une probabilité, c'est le fait que chaque élément de la sortie softmax est borné en [0,1] et les sommes entières à 1.
vega
2

En plus de l'explication de Vega,

P(y=j|x)=ψxjk=1Kψxk
ψ

ψ=1

ψ=10010308ψ=e100C

Donc, vous voulez choisir une constante suffisamment grande pour bien approcher argmax, et aussi assez petite pour exprimer ces grands et petits nombres dans les calculs.

e

komunistbakkal
la source
2

Cette question est très intéressante. Je ne connais pas la raison exacte, mais je pense que la raison suivante pourrait être utilisée pour expliquer l'utilisation de la fonction exponentielle. Ce billet s'inspire de la mécanique statistique et du principe d'entropie maximale.

Nn1C1n2C2nKCKEk

E¯Ek

NE¯=k=1KnkEk.()

Dans le même temps, nous voyons que la quantité totale d'images peut être calculée comme la somme suivante

N=k=1Knk.()

n1

Nn1n2nK

(N!n1!,n2!,,nK!)=N!k=1Knk!.

N()()βαL(n1,n2,,nk;α,β)

L(n1,n2,,nk;α,β)=N!k=1Knk!+β[k=1KnkEkNE¯]+α[Nk=1Knk]

Nnk

lnn!=nlnnn+O(lnn).

lnn!n

nk~

Lnk~=lnnk~1α+βEk~.

Si nous mettons cette dérivée partielle à zéro, nous pouvons trouver

nk~=exp(βEk~)exp(1+α).()

()

exp(1+α)=1Nk=1Kexp(βEk).

()

nk~=exp(βEk~)1Nk=1Kexp(βEk).

nk~/NCk~pk~

pk~=exp(βEk~)k=1Kexp(βEk).

βEk~=wkTxkth

MachineLearner
la source