116 votes

Qu'est-ce que la cross-entropy ?

Je sais qu'il existe de nombreuses explications de ce qu'est l'entropie croisée, mais je suis toujours confus.

Est-ce seulement une méthode pour décrire la fonction de perte? Pouvons-nous utiliser l'algorithme de descente de gradient pour trouver le minimum en utilisant la fonction de perte?

13 votes

Non adapté pour SO. Voici une question similaire sur le site sœur de datascience : datascience.stackexchange.com/questions/9302/…

0 votes

Pour une explication simple et non mathématique, consultez towardsdatascience.com/…

280voto

stackoverflowuser2010 Points 3978

L'entropie croisée est couramment utilisée pour quantifier la différence entre deux distributions de probabilité. Dans le contexte de l'apprentissage automatique, c'est une mesure d'erreur pour les problèmes de classification multiclasse catégoriques. Généralement, la distribution "vraie" (celle que votre algorithme d'apprentissage automatique essaie de reproduire) est exprimée en termes d'une distribution un-hot.

Par exemple, supposons que pour une instance d'entraînement spécifique, l'étiquette vraie est B (parmi les étiquettes A, B et C). La distribution un-hot pour cette instance d'entraînement est donc :

Pr(Classe A)  Pr(Classe B)  Pr(Classe C)
        0,0          1,0          0,0

Vous pouvez interpréter la distribution vraie ci-dessus comme signifiant que l'instance d'entraînement a une probabilité de 0% d'être de la classe A, une probabilité de 100% d'être de la classe B, et une probabilité de 0% d'être de la classe C.

Maintenant, supposons que votre algorithme d'apprentissage automatique prédit la distribution de probabilité suivante :

Pr(Classe A)  Pr(Classe B)  Pr(Classe C)
      0,228        0,619        0,153

À quel point la distribution prédite est-elle proche de la distribution vraie ? C'est ce que détermine la perte d'entropie croisée. Utilisez cette formule :

Formule de perte d'entropie croisée

p(x) est la distribution de probabilité vraie (un-hot) et q(x) est la distribution de probabilité prédite. La somme est sur les trois classes A, B et C. Dans ce cas, la perte est de 0,479 :

H = - (0,0*ln(0,228) + 1,0*ln(0,619) + 0,0*ln(0,153)) = 0,479

Base du logarithme

Remarquez qu'il n'est pas nécessaire d'utiliser la même base de logarithme tant que vous utilisez toujours la même. En fait, la fonction log() de Python Numpy calcule le logarithme naturel (log base e).

Code Python

Voici l'exemple ci-dessus exprimé en Python en utilisant Numpy :

import numpy as np

p = np.array([0, 1, 0])             # Probabilité vraie (un-hot)
q = np.array([0,228, 0,619, 0,153]) # Probabilité prédite

perte_entropie_croisee = -np.sum(p * np.log(q))
print(perte_entropie_croisee)
# 0,47965000629754095

Voilà à quel point votre prédiction est "fausse" ou "éloignée" de la distribution vraie. Un optimiseur d'apprentissage automatique tentera de minimiser la perte (c'est-à-dire qu'il essaiera de réduire la perte de 0,479 à 0,0).

Unités de perte

Nous voyons dans l'exemple ci-dessus que la perte est de 0,4797. Étant donné que nous utilisons le logarithme naturel (log base e), les unités sont en nats, donc nous disons que la perte est de 0,4797 nats. Si le logarithme était plutôt log base 2, alors les unités seraient en bits. Voir cette page pour plus d'explications.

Plus d'exemples

Pour avoir une meilleure intuition de ce que ces valeurs de perte reflètent, regardons quelques exemples extrêmes.

Encore une fois, supposons que la distribution vraie (un-hot) est :

Pr(Classe A)  Pr(Classe B)  Pr(Classe C)
        0,0          1,0          0,0

Imaginons maintenant que votre algorithme d'apprentissage automatique a fait un excellent travail et prédit la classe B avec une probabilité très élevée :

Pr(Classe A)  Pr(Classe B)  Pr(Classe C)
      0,001        0,998        0,001

Lorsque nous calculons la perte d'entropie croisée, nous pouvons voir que la perte est minuscule, seulement 0,002 :

p = np.array([0, 1, 0])
q = np.array([0,001, 0,998, 0,001])
print(-np.sum(p * np.log(q)))
# 0,0020020026706730793

Dans l'extrême opposé, supposons maintenant que votre algorithme d'apprentissage automatique a très mal fait son travail et a prédit la classe C avec une forte probabilité à la place. La perte résultante de 6,91 reflètera l'erreur plus importante.

Pr(Classe A)  Pr(Classe B)  Pr(Classe C)
      0,001        0,001        0,998

p = np.array([0, 1, 0])
q = np.array([0,001, 0,001, 0,998])
print(-np.sum(p * np.log(q)))
# 6,907755278982137

Enfin, que se passe-t-il entre ces deux extrêmes ? Supposons que votre algorithme d'apprentissage automatique n'arrive pas à se décider et prédit les trois classes avec une probabilité presque égale.

Pr(Classe A)  Pr(Classe B)  Pr(Classe C)
      0,333        0,333        0,334

La perte résultante est 1,10.

p = np.array([0, 1, 0])
q = np.array([0,333, 0,333, 0,334])
print(-np.sum(p * np.log(q)))
# 1,0996127890016931

Intégration dans la descente de gradient

L'entropie croisée est l'une des nombreuses fonctions de perte possibles (une autre populaire est la perte de charnière SVM). Ces fonctions de perte sont généralement écrites sous la forme J(theta) et peuvent être utilisées dans la descente de gradient, qui est un algorithme itératif pour déplacer les paramètres (ou coefficients) vers les valeurs optimales. Dans l'équation ci-dessous, vous remplaceriez J(theta) par H(p, q). Mais notez que vous devez d'abord calculer la dérivée de H(p, q) par rapport aux paramètres.

descente de gradient

Pour répondre directement à vos questions originales :

Est-ce seulement une méthode pour décrire la fonction de perte ?

Exact, l'entropie croisée décrit la perte entre deux distributions de probabilité. C'est l'une des nombreuses fonctions de perte possibles.

Ensuite, nous pouvons utiliser, par exemple, l'algorithme de descente de gradient pour trouver le minimum.

Oui, la fonction de perte d'entropie croisée peut être utilisée dans le cadre de la descente de gradient.

Lecture supplémentaire : l'une de mes autres réponses liée à TensorFlow.

0 votes

Donc, la cross-entropie décrit la perte par la somme des probabilités pour chaque exemple X.

0 votes

Alors, pouvons-nous plutôt décrire l'erreur comme un angle entre deux vecteurs (similarité de cosinus / distance angulaire) et essayer de minimiser l'angle?

0 votes

@l'athéiste: Utiliser la similarité (dis)cosinus n'est généralement pas courant.

5voto

Harsh Malra Points 61

En bref, la cross-entropy (CE) est la mesure de la distance entre la valeur prédite et la vraie étiquette.

Ici, le terme "cross" fait référence au calcul de l'entropie entre deux ou plusieurs caractéristiques / vraies étiquettes (comme 0, 1).

Et le terme entropie lui-même fait référence à la randomité, donc une grande valeur de celle-ci signifie que votre prédiction est très éloignée des vraies étiquettes.

Les poids sont donc modifiés pour réduire la CE et conduire ainsi finalement à une réduction de la différence entre la prédiction et les vraies étiquettes, et donc à une meilleure précision.

3voto

Sandipan Dey Points 13663

Ajoutant aux messages ci-dessus, la forme la plus simple de perte d'entropie croisée est connue sous le nom de perte d'entropie croisée binaire (utilisée comme fonction de perte pour la classification binaire, par exemple, avec la régression logistique), tandis que la version généralisée est la perte d'entropie croisée catégorique (utilisée comme fonction de perte pour les problèmes de classification multi-classes, par exemple, avec les réseaux neuronaux).

L'idée reste la même :

  1. lorsque la probabilité de classe (softmax) calculée par le modèle devient proche de 1 pour l'étiquette cible pour une instance d'entraînement (représentée par le codage one-hot, par exemple), la perte CCE correspondante diminue à zéro

  2. sinon, elle augmente à mesure que la probabilité prédite correspondant à la classe cible devient plus petite.

La figure suivante illustre le concept (remarquez sur la figure que BCE devient faible lorsque y et p sont tous les deux élevés ou tous les deux bas simultanément, c'est-à-dire, il y a un accord) :

entrer la description de l'image ici

L'entropie croisée est étroitement liée à l'entropie relative ou à la divergence KL qui calcule la distance entre deux distributions de probabilité. Par exemple, entre deux pmfs discrets, la relation entre eux est montrée dans la figure suivante :

entrer la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X