Pourquoi utiliser softmax par opposition à la normalisation standard?

160

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é:

entrez la description de l'image ici

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?

À M
la source
8
La fonction n'est pas chère à calculer à cause des exposants, mais parce que vous devez calculer chaque qj. L'exponentiation est bon marché par rapport à la quantité totale de calcul nécessaire.
Seppo Enarvi
De quel genre de transformation en Z parlez-vous? La signification du traitement du signal du terme ne convient pas ici, et le remplacement des valeurs par leur score z produit une sortie négative si l'entrée est inférieure à la moyenne.
David Cian le
Voir aussi: Stats.SE
Martin Thoma

Réponses:

166

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

>>> 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 puis 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 !?
Piotr Czapla
la source
16
Cette réponse illustre le mieux l' impact de l'utilisation de l'exponentiation plutôt que de se concentrer sur les fondements théoriques. (qui est genial). Il doit être inclus au début de la première réponse. Après avoir vu comment et dans quelle mesure l'exponentiation répartit les valeurs, la première réponse aide à expliquer pourquoi vous le souhaitez.
Ian Danforth
@IanDanforth je suis d'accord avec vous. devrait être au début.
Hitesh le
11
Je ne sais pas pourquoi cette réponse est la plus votée. Pourquoi [1,2] correspond-il à une image floue alors que [10,20] correspond à une image plus nette? C'est simplement une question de mise à l'échelle et les deux cas sont essentiellement les mêmes. Si quoi que ce soit, cela devrait sembler prendre en charge la normalisation standard, qui considère correctement les deux cas comme équivalents.
user118967
Lorsqu'il est déjà garanti que les valeurs sont dans [0, 1], y a-t-il encore un avantage à prendre softmax au lieu de simplement diviser par la somme?
Martin Thoma
59

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:

  1. Si le modèle est correct, alors max (z) sera z_i. Ainsi, la log-vraisemblance asymptote zéro (c'est-à-dire une probabilité de 1) avec une différence croissante entre z_i et les autres entrées de z.
  2. Si le modèle est incorrect, alors max (z) sera un autre z_j> z_i. Ainsi, l'ajout de z_i n'annule pas complètement -z_j et la log-vraisemblance est approximativement (z_i - z_j). Cela indique clairement au modèle ce qu'il faut faire pour augmenter la log-vraisemblance: augmenter z_i et diminuer z_j.

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.

Kilian Batzner
la source
Bonjour, pouvez-vous s'il vous plaît expliquer cette déclaration et comment avez-vous pu faire une approximation? ", qui pour de grandes différences de z se rapproche à peu près de"
London guy
45

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

  1. 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é.

  2. 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é.

Brett
la source
2
Pour ajouter aux commentaires précédents, le dérivé de la fonction softmax est juste softmax (1-softmax)
Rouzbeh
11
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 vue comme une tentative 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?
Kilian Batzner
18
Quant à la vision probabiliste: quelle est la motivation pour examiner les probabilités log? Le raisonnement semble être un peu comme "Nous utilisons e ^ x dans le softmax, car nous interprétons x comme des log-probabilités". Avec le même raisonnement que nous pourrions dire, nous utilisons e ^ e ^ e ^ x dans le softmax, car nous interprétons x comme des probabilités log-log-log (exagérant ici, bien sûr). J'obtiens les avantages numériques de softmax, mais quelle est la motivation théorique pour l'utiliser?
Kilian Batzner
5
@KilianBatzner Si la sortie d'un neurone est une probabilité logarithmique, alors la somme des sorties de nombreux neurones est une multiplication de leurs probabilités. C'est plus souvent utile qu'une somme de probabilités.
alltom le
1
@KilianBatzner Si vos fonctionnalités proviennent de différents clusters gaussiens (sur un cluster par classe), vous pouvez dériver un classificateur parfait (régression logistique). Il y a quelques conditions supplémentaires, mais essentiellement vous pouvez justifier / dériver softmax et logits en supposant que vous voulez séparer les clusters gaussiens.
maxy
16

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.

Victor May
la source
12
q_i ne représente pas implicitement les log-vraisemblances. ce n'est que lorsque nous utilisons le softmax que nous supposons explicitement qu'ils le font.
Tom
6

Nous examinons un problème de classification multiclasse. Autrement dit, la variable prédite ypeut prendre l'une des kcaté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é en P(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.

entrez la description de l'image herse

GabrielChu
la source
Comment cela fonctionne-t-il en tant que fonction d'activation, car il renvoie la même valeur pour «x» et «x + c»?
Suresh Pokharel
1
Ce softmaxn'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. Mais softmaxc'est une opération vectorielle, cela vous produit un vecteur normalisé, il y a des dépendances internes entre chaque élément.
GabrielChu
5

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.

torayeff
la source
3
Normalement, vous soustrayez le minimum puis divisez par le maximum / somme. Dans votre cas, cela ferait [0, 1, 3, 4]alors une division.
ubershmekel
1
@ubershmekel Cela se heurte au problème que la classe avec le plus petit score se verra toujours attribuer une probabilité de 0.
Alessandro Power le
4

Supposons que nous changions la fonction softmax de sorte que les activations de sortie soient données par entrez la description de l'image ici

cest une constante positive. Notez que cela c=1correspond à la fonction softmax standard. Mais si nous utilisons une valeur différente de, cnous 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 permettons cde devenir grand, à savoir c→∞. Quelle est la valeur limite pour les activations de sortie a^L_j? Après avoir résolu ce problème, vous devriez comprendre pourquoi nous considérons la c=1fonction 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).

OMG
la source
Pour moi, l'idée de version "adoucie" de la fonction maximum est le meilleur moyen simple de justifier l'utilisation de softmax.
tashuhka
3

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:

entrez la description de l'image ici

négas
la source
2

Le choix de la fonction softmax semble quelque peu arbitraire car il existe de nombreuses autres fonctions de normalisation possibles. On ne sait donc pas pourquoi la perte log-softmax fonctionnerait mieux que les autres alternatives de perte.

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 expet le soi-disant softmax sphérique et ont découvert que parfois ils pouvaient fonctionner mieux que d'habitude softmax.

Roman Kh
la source