Explication de la perte d'entropie croisée


35

Supposons que je construise un NN pour la classification. La dernière couche est une couche dense avec activation softmax. J'ai cinq classes différentes à classer. Supposons que pour un seul exemple de formation, le true labelsoit [1 0 0 0 0]alors que les prédictions soient [0.1 0.5 0.1 0.1 0.2]. Comment calculer la perte d'entropie croisée pour cet exemple?

Réponses:


50

La formule d' entropie croisée prend deux distributions, , la distribution vraie, et , la distribution estimée, définie sur la variable discrète et est donnée parp(x)q(x)x

H(p,q)=xp(x)log(q(x))

Pour un réseau de neurones, le calcul est indépendant des éléments suivants:

  • Quel type de couche a été utilisé.

  • Quel type d'activation a été utilisé - bien que de nombreuses activations ne soient pas compatibles avec le calcul car leurs sorties ne sont pas interprétables comme des probabilités (c'est-à-dire que leurs sorties sont négatives, supérieures à 1 ou ne totalisent pas 1). Softmax est souvent utilisé pour la classification multiclasse car il garantit une fonction de distribution de probabilité bien comportée.

Pour un réseau de neurones, vous verrez généralement l'équation écrite sous une forme où est le vecteur de vérité fondamentale et (ou une autre valeur prise directement à partir de la sortie de la dernière couche) est le devis. Pour un seul exemple, cela ressemblerait à ceci:yyy^

L=ylog(y^)

où est le produit vectoriel vectoriel.

Votre exemple de vérité fondamentale donne toutes les probabilités à la première valeur, et les autres valeurs sont nulles, donc nous pouvons les ignorer, et utiliser simplement le terme correspondant de vos estimationsyyy^

L=(1×log(0.1)+0×log(0.5)+...)

L=log(0.1)2.303

Un point important des commentaires

Cela signifie que la perte serait la même, peu importe si les prévisions sont ou ?[0.1,0.5,0.1,0.1,0.2][0.1,0.6,0.1,0.1,0.1]

Oui, c'est une caractéristique clé de la perte de journal multiclasse, elle récompense / pénalise les probabilités des classes correctes uniquement. La valeur est indépendante de la façon dont la probabilité restante est répartie entre des classes incorrectes.

N

J=1N(i=1Nyilog(y^i))

De nombreuses implémentations nécessiteront que vos valeurs de vérité au sol soient codées à chaud (avec une seule vraie classe), car cela permet une optimisation supplémentaire. Cependant, en principe, la perte d'entropie croisée peut être calculée - et optimisée - lorsque ce n'est pas le cas.


1
D'accord. Cela signifie que la perte serait la même, peu importe si les prévisions sont [0,1 0,5 0,1 0,1 0,2] ou [0,1 0,6 0,1 0,1 0,1]?
Nain

@Nain: C'est correct pour votre exemple. La perte d'entropie croisée ne dépend pas des valeurs des probabilités de classe incorrectes.
Neil Slater

8

La réponse de Neil est correcte. Cependant, je pense qu'il est important de souligner que même si la perte ne dépend pas de la distribution entre les classes incorrectes (uniquement la distribution entre la classe correcte et les autres), le gradient de cette fonction de perte affecte les classes incorrectes différemment selon la façon dont ils ont tort. Ainsi, lorsque vous utilisez le cross-ent dans l'apprentissage automatique, vous modifiez les pondérations différemment pour [0,1 0,5 0,1 0,1 0,2] et [0,1 0,6 0,1 0,1 0,1]. En effet, le score de la classe correcte est normalisé par les scores de toutes les autres classes pour en faire une probabilité.


3
Pouvez-vous le développer avec un bon exemple?
Nain

@Lucas Adams, pouvez-vous donner un exemple s'il vous plait?
koryakinp

La dérivée de CHAQUE y_i (sortie softmax) par CHAQUE logit z (ou le paramètre w lui-même) dépend de CHAQUE y_i. medium.com/@aerinykim/…
Aaron

2

Voyons comment se comporte le gradient de la perte ... Nous avons l'entropie croisée comme fonction de perte, qui est donnée par

H(p,q)=i=1np(xi)log(q(xi))=(p(x1)log(q(x1))++p(xn)log(q(xn))

xi

xiH(p,q)=xip(xi)log(q(xi)).
xiH(p,q)=p(xi)1q(xi)q(xi)xi.

p(xi)

Je me demande comment les progiciels doivent gérer une valeur prédite de 0, alors que la vraie valeur est supérieure à zéro ... Puisque nous divisons par zéro dans ce cas.


Je pense que ce que vous voulez, c'est prendre le dérivé par rapport au paramètre, pas par rapport à x_i.
Aaron

1

Commençons par comprendre l'entropie dans la théorie de l'information: supposons que vous vouliez communiquer une chaîne d'alphabets "aaaaaaaa". Vous pouvez facilement le faire en 8 * "a". Prenez maintenant une autre chaîne "jteikfqa". Existe-t-il un moyen compressé de communiquer cette chaîne? Il n'y en a pas. On peut dire que l'entropie de la 2ème chaîne est plus car, pour la communiquer, il nous faut plus de "bits" d'informations.

log2(n)log2(1/8)

i=1818log2(18)=3

En entropie "croisée", comme son nom l'indique, nous nous concentrons sur le nombre de bits requis pour expliquer la différence dans deux distributions de probabilité différentes. Le meilleur des cas est que les deux distributions soient identiques, auquel cas le moins de bits est requis, c'est-à-dire une entropie simple. En termes mathématiques,

H(y,y^)=iyiloge(y^i)

y^y

Conclusion: en termes simples, on pourrait penser à l'entropie croisée comme la distance entre deux distributions de probabilité en termes de quantité d'informations (bits) nécessaires pour expliquer cette distance. C'est une bonne façon de définir une perte qui diminue à mesure que les vecteurs de probabilité se rapprochent les uns des autres.


0

Je ne suis pas d'accord avec Lucas. Les valeurs ci-dessus sont déjà des probabilités. Notez que le message d'origine indiquait que les valeurs avaient une activation softmax.

L'erreur ne se propage que sur la classe "chaude" et la probabilité Q (i) ne change pas si les probabilités au sein des autres classes se décalent entre elles.


2
Lucas a raison. Avec l'architecture décrite par l'OP, alors le gradient à tous les logits (par opposition aux sorties) n'est pas nul, car la fonction softmax les relie tous. Ainsi, le [gradient de] l'erreur de la classe "chaude" se propage à tous les neurones de sortie.
Neil Slater

+1 pour Neil et Lucas
Aaron

-1

Le problème est que les probabilités proviennent d'une fonction «compliquée» qui incorpore les autres sorties dans la valeur donnée. Les résultats sont interconnectés, de cette façon, nous ne dérivons pas du résultat réel, mais de toutes les entrées de la dernière fonction d'activation (softmax), pour chaque résultat.

piyi

Autre description soignée sur gombru.github.io/2018/05/23/cross_entropy_loss .

Je pense que l'utilisation d'un simple sigmoïde comme dernière couche d'activation conduirait à la réponse approuvée, mais l'utilisation de softmax indique une réponse différente.


1
Bienvenue sur Stack Exchange. Cependant, ce que vous avez écrit ne semble pas être une réponse à la question du PO sur le calcul de la perte d'entropie croisée.
user12075
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.