Que sont softmax et l’entropie croisée ? Transformer des logits en probabilités et en perte d’entraînement
Softmax et l’entropie croisée forment une combinaison qui permet à un réseau de neurones multiclasse d’exprimer sous forme de probabilités quelle classe est correcte parmi plusieurs candidates et d’évaluer numériquement l’écart entre cette prédiction et la bonne réponse. Softmax convertit les sorties brutes du modèle, appelées logits, en une distribution de probabilités dont la somme vaut 1. L’entropie croisée calcule comme perte la différence entre cette distribution de probabilités et la distribution cible. L’entraînement consiste à ajuster les poids du modèle afin de réduire cette perte.
Par exemple, supposons que vous classiez une image comme chat, chien ou oiseau. Au départ, le modèle ne répond généralement pas par quelque chose comme « 70 % de probabilité qu’il s’agisse d’un chat ». Il produit plutôt des logits : des scores comparatifs pour les trois classes. Softmax normalise ces scores en probabilités comparables, et l’entropie croisée attribue une pénalité selon la probabilité que le modèle a accordée à la véritable réponse. Comprendre leur fonctionnement conjoint permet de réduire les confusions fréquentes concernant la couche de sortie finale, les formats d’étiquettes et la configuration de la fonction de perte.
Que fait la fonction softmax ?
Softmax est une fonction qui convertit un vecteur de logits pour classes en probabilités de classes . La probabilité de la classe est calculée comme suit.
Ici, la fonction exponentielle donne un poids relatif plus important aux classes dont les scores sont plus élevés. Comme le dénominateur est la somme des scores exponentiés de toutes les classes, chaque sortie est comprise entre 0 et 1 et la somme des probabilités vaut 1. La sortie de softmax représente donc la vraisemblance relative qu’une entrée appartienne à chaque classe sous la forme d’une unique distribution de probabilités. La documentation PyTorch décrit également softmax comme une fonction qui redimensionne chaque élément d’entrée dans l’intervalle de 0 à 1 afin que les éléments aient une somme égale à 1. docs.pytorch.org
Softmax est particulièrement appropriée lorsque les candidates sont mutuellement exclusives. Autrement dit, si l’une est vraie, les autres ne peuvent pas être la bonne réponse. Cela comprend par exemple la classification d’une image dont l’animal principal est exactement un chat, un chien ou un oiseau, ou l’attribution d’une phrase à exactement une catégorie de sentiment prédéfinie.
À l’inverse, les probabilités softmax ne sont pas indépendantes les unes des autres. Si la probabilité de chat augmente, celle de chien ou d’oiseau doit diminuer relativement afin que les trois probabilités continuent de totaliser 1. Cette caractéristique ne convient généralement pas aux cas où plusieurs étiquettes peuvent être vraies simultanément, comme un problème dans lequel une personne et un vélo peuvent tous deux apparaître dans une image. Dans ce cas, envisagez d’appliquer sigmoïde indépendamment à chaque classe.
En quoi les logits diffèrent-ils des probabilités ?
Un logit est un score non normalisé produit par une couche linéaire finale ou un composant similaire. Les logits peuvent être négatifs ou supérieurs à 1, et la somme des logits entre les classes n’a pas de signification particulière. Par exemple, peut être un ensemble de logits pour trois classes, mais ce n’est pas un vecteur de probabilités.
Une caractéristique importante des logits est que les différences entre les classes comptent davantage que leurs valeurs absolues. Ajouter une même constante à chaque logit ne modifie pas le résultat de softmax.
Cela s’explique par le fait que le numérateur et le dénominateur sont tous deux multipliés par le facteur commun , qui s’annule. Ainsi, les logits et peuvent sembler être des scores bruts différents, mais produisent les mêmes probabilités softmax. Softmax convertit les différences relatives entre les candidates, et non le point de référence des scores, en probabilités.
Que mesure l’entropie croisée ?
L’entropie croisée est une perte indiquant à quel point la distribution cible réelle diffère de la distribution prédite par le modèle. Sa forme multiclasse de base est la suivante.
Ici, est le poids que l’étiquette réelle attribue à la classe , et est la probabilité prédite par le modèle pour la classe . Une perte plus faible signifie que la distribution prédite est plus proche de la distribution cible. Lorsque le logarithme naturel est utilisé, l’unité est le nat.
Cette formule ne se limite pas à une séparation des bonnes et des mauvaises réponses en 0 ou 1. Elle reflète non seulement si le modèle a donné la bonne réponse, mais aussi à quel point il était confiant dans le fait que cette réponse était correcte. Une prédiction qui attribue 0,51 à la classe correcte et une autre qui lui attribue 0,99 peuvent avoir la même exactitude si la classe de probabilité maximale est correcte dans les deux cas. Cependant, l’entropie croisée attribue une perte plus faible à la seconde. C’est pourquoi l’entraînement encourage le modèle non seulement à classer la bonne réponse en première position, mais aussi à lui attribuer une probabilité plus élevée.
Pourquoi la formule se simplifie-t-elle avec des étiquettes one-hot ?
Les cibles de classification mutuellement exclusive sont souvent représentées par des vecteurs one-hot. Si la première classe est correcte parmi trois classes, l’étiquette est . Comme seule la classe cible a et que les autres ont la valeur 0, l’entropie croisée se réduit à la formule suivante.
Autrement dit, la perte est déterminée uniquement par la probabilité prédite de la classe correcte. Lorsque se rapproche de 1, se rapproche de 0. À l’inverse, lorsque diminue, la perte augmente rapidement. En raison de cette propriété, les prédictions qui attribuent une faible probabilité à la bonne réponse — en particulier celles qui prédisent une réponse erronée avec une très forte confiance — reçoivent une pénalité élevée durant l’entraînement.
En théorie, si la probabilité de la classe correcte est exactement 0, est indéfini et la perte diverge vers l’infini. Les implémentations réelles de réseaux de neurones utilisent généralement des calculs stables fondés sur les logits, en évitant de produire explicitement une probabilité de 0 avant d’en calculer le logarithme.
Comment softmax et l’entropie croisée sont-elles liées ?
La partie finale d’un modèle multiclasse typique peut être comprise en trois étapes.
- La couche linéaire finale produit les logits de classe .
- Softmax convertit les logits en probabilités .
- L’entropie croisée compare les probabilités à l’étiquette cible pour calculer la perte .
Pour une cible one-hot, ce lien peut être développé comme suit.
Cette expression est souvent appelée softmax cross-entropy ou entropie croisée catégorielle. Le premier terme, , diminue à mesure que le logit de la classe correcte augmente, tandis que le second terme, , prend également en compte les scores de chaque classe concurrente. Le modèle apprend donc à augmenter le score de la classe correcte tout en le rendant relativement plus marqué que ceux des classes incorrectes.
Ici, softmax et l’entropie croisée doivent être distinguées sur le plan conceptuel. Softmax est une fonction qui modifie la représentation des sorties, tandis que l’entropie croisée est une perte qui quantifie l’objectif d’entraînement. Dans les frameworks pratiques, cependant, les deux étapes sont souvent proposées sous la forme d’une seule fonction de perte combinée, ce qui peut donner l’impression qu’il s’agit d’une fonction unique.
Que révèle le calcul avec des nombres ?
Considérons un problème à trois classes avec les logits . L’application de softmax donne des probabilités approximatives de . L’exemple softmax de TensorFlow présente les mêmes probabilités approximatives pour ces logits. docs.pytorch.org
Si la première classe est correcte, l’étiquette one-hot est et la perte est la suivante.
La première classe possède la probabilité la plus élevée parmi les trois candidates, et cette probabilité est d’environ 0,665 ; la perte est donc relativement faible. Toutefois, « faible » n’indique pas un seuil de réussite absolu. Une amplitude de perte appropriée peut varier selon le nombre de classes, la difficulté des données, l’incertitude des étiquettes et selon que la perte est additionnée ou moyennée sur un lot.
Si, pour les mêmes logits, la troisième classe était en réalité correcte, la perte serait et serait donc bien plus élevée. Le modèle considérait la troisième classe comme la candidate la moins probable. L’entropie croisée reflète ainsi de manière sensible non seulement le fait qu’une prédiction est erronée, mais aussi le degré de confiance avec lequel elle est erronée.
Pourquoi faut-il considérer ensemble le classement des probabilités et la valeur de perte ?
L’exactitude sélectionne généralement la classe ayant la plus grande probabilité et vérifie si elle correspond à la bonne réponse. Ainsi, une prédiction de lorsque la première classe est correcte et une prédiction de lorsque la première classe est correcte comptent toutes deux comme une prédiction correcte.
L’entropie croisée ne les traite pas de la même manière. La première prédiction distingue à peine les trois classes, alors que la seconde attribue une très forte probabilité à la bonne réponse. Inversement, lorsque la classe de probabilité maximale est incorrecte, la perte varie également selon le niveau de faiblesse de la probabilité de la classe correcte. C’est pourquoi l’entraînement minimise généralement l’entropie croisée, tandis que l’évaluation vérifie aussi des métriques distinctes telles que l’exactitude, en fonction de l’objectif de la tâche.
Pourquoi faut-il transmettre directement les logits à la fonction de perte d’entraînement ?
Les fonctions de perte combinées de nombreux frameworks de deep learning reçoivent des logits, et non des probabilités softmax, en entrée. Par exemple, softmax_cross_entropy_with_logits de TensorFlow, comme son nom l’indique, accepte des logits et effectue en interne les calculs correspondant à softmax et à l’entropie croisée. Sa documentation avertit qu’il ne faut pas lui fournir des sorties auxquelles softmax a déjà été appliquée. www.tensorflow.org
Si vous enfreignez cette règle en appliquant softmax à la fin du modèle puis en transmettant le résultat à une fonction de perte conçue pour des logits, les probabilités peuvent être interprétées à nouveau comme des logits au lieu de recevoir l’unique application de softmax attendue. Cela modifie la signification de la perte et de ses gradients, ce qui rend la configuration d’entraînement incorrecte. Il faut vérifier si une perte « inclut softmax en interne » ou « accepte des probabilités déjà converties » à partir du contrat d’entrée de l’API, et non du seul nom de la fonction.
L’objectif de l’inférence ou de l’affichage est différent. Après l’entraînement, vous pouvez appliquer softmax aux logits lorsque vous souhaitez afficher des probabilités de classes ou effectuer un post-traitement fondé sur les probabilités. L’essentiel n’est pas de ne jamais utiliser softmax, mais de l’appliquer exactement une fois à l’étape d’entrée attendue par la perte d’entraînement.
Pourquoi la stabilité numérique est-elle importante ?
La formule softmax contient des exponentielles et des logarithmes. Si les logits sont extrêmement grands ou petits, le calcul de peut dépasser la plage représentable par un ordinateur, ce qui crée un risque de dépassement ou de sous-dépassement numérique. Calculer d’abord les probabilités, puis appliquer séparément les logarithmes, peut être vulnérable à ces problèmes.
Les fonctions de perte combinées et les implémentations de la famille log_softmax utilisent généralement des méthodes stables pour calculer . La documentation PyTorch explique également que log_softmax possède de meilleures propriétés numériques que le calcul séparé de softmax et du logarithme. docs.pytorch.org
La propriété de décalage constant décrite précédemment peut également servir à la stabilisation. Soustraire la valeur maximale de chaque logit ne modifie pas le résultat de softmax.
Le plus grand terme exponentiel devient ainsi , ce qui réduit la nécessité de manipuler des nombres inutilement grands. Dans le code de production, il est toutefois généralement préférable d’utiliser une perte combinée fournie par le framework et fondée sur les logits, ou une opération log-softmax stable, plutôt que d’implémenter soi-même les composants séparément.
Les étiquettes doivent-elles être des vecteurs one-hot ou des entiers ?
La représentation des étiquettes est liée au contrat d’entrée de la fonction de perte. Les formats courants incluent les étiquettes one-hot ou probabilistes, et les étiquettes entières creuses.
| Format d’étiquette | Exemple lorsque la première classe est correcte sur trois | Caractéristiques |
|---|---|---|
| Étiquette one-hot | [1, 0, 0] | Un vecteur de même longueur que le nombre de classes ; seule la position correcte vaut 1. |
| Étiquette probabiliste | [0.8, 0.1, 0.1] | Une distribution cible dont les éléments sont non négatifs et dont la somme vaut 1. |
| Étiquette entière creuse | 0 | Stocke uniquement l’indice de la classe correcte. |
Les étiquettes one-hot correspondent directement à la formule de base de l’entropie croisée. Les étiquettes entières creuses permettent de stocker la même information de façon plus compacte, ce qui peut être utile lorsqu’il y a de nombreuses classes. Toutefois, les deux formats ont des formes de tenseurs et des types de données différents ; vous devez donc utiliser le format exigé par une fonction de perte donnée.
La documentation de TensorFlow sur l’entropie croisée softmax fondée sur les logits explique que les vecteurs d’étiquettes doivent être des distributions de probabilités valides et distingue les formats d’étiquettes associés pour la classification mutuellement exclusive. www.tensorflow.org Par exemple, transmettre directement un seul entier à une fonction de perte one-hot, ou transmettre un vecteur one-hot à une fonction prévue pour des étiquettes entières creuses, peut ne pas calculer la quantité voulue.
Les étiquettes probabilistes relâchent l’hypothèse selon laquelle exactement une classe doit avoir la valeur 1. Cela ne signifie toutefois pas la même chose qu’un problème multilabel dans lequel plusieurs classes peuvent être vraies indépendamment. En classification softmax, les étiquettes probabilistes représentent toujours une distribution unique dont les éléments totalisent 1.
En quoi la classification binaire, la classification multiclasse et la classification multilabel diffèrent-elles ?
Les fonctions de sortie et les pertes ne doivent pas être choisies en regardant uniquement le nombre de classes. Déterminez d’abord si les événements cibles peuvent se produire en même temps. La distinction suivante est utile en pratique.
| Structure du problème | Exemple | Représentation de sortie typique | Perte typique |
|---|---|---|---|
| Classification multiclasse mutuellement exclusive | Un chat, un chien ou un oiseau | Softmax sur toutes les classes | Entropie croisée softmax |
| Classification binaire | Vrai/faux, approuver/rejeter | Une sigmoïde ou softmax à deux classes | Entropie croisée binaire ou entropie croisée softmax |
| Classification multilabel | Une photo contient à la fois une personne et un vélo | Sigmoïde par classe | Entropie croisée binaire par classe |
En classification multiclasse, il est naturel que les probabilités de classes totalisent 1. Si la probabilité qu’une image soit un chat augmente, la probabilité que cette même image soit un chien ou un oiseau doit diminuer relativement. La documentation TensorFlow distingue également l’utilisation de l’entropie croisée softmax lorsque les étiquettes sont mutuellement exclusives des situations comportant plusieurs étiquettes indépendantes, qui nécessitent une configuration différente. www.tensorflow.org
En classification multilabel, chaque sortie s’apparente davantage à une question distincte : « Y a-t-il une personne ? », « Y a-t-il un vélo ? » et « Y a-t-il un arbre ? » peuvent toutes recevoir une réponse affirmative simultanément. Si softmax impose un total de 1, l’augmentation de la probabilité d’une étiquette fait diminuer les probabilités des autres, ce qui peut ne pas correspondre à la structure du problème. Appliquer une sigmoïde à chaque classe permet de gérer indépendamment la probabilité de chaque élément.
La classification binaire peut être particulièrement déroutante, car les deux approches semblent possibles. Appliquer une sigmoïde à une sortie représente directement la probabilité de la classe positive. Appliquer softmax à deux logits représente le positif et le négatif comme une distribution à deux classes totalisant 1. Quelle que soit l’approche choisie, l’encodage des étiquettes et la fonction de perte doivent correspondre à ce format de sortie.
Minimiser l’entropie croisée signifie-t-il faire correspondre des distributions ?
Lorsque la cible et la prédiction sont toutes deux des distributions de probabilités valides, l’entropie croisée peut être exprimée par sa relation avec l’entropie et la divergence de KL comme suit.
Ici, est l’entropie qui représente l’incertitude de la véritable distribution elle-même, et est la divergence de KL qui représente la différence entre la véritable distribution et la distribution prédite . Si la distribution cible des données d’entraînement est fixe, ne change pas avec les paramètres du modèle. Par conséquent, à cette constante près, réduire l’entropie croisée peut être interprété comme une réduction de la divergence de KL entre et .
Cette interprétation montre pourquoi l’entropie croisée est largement utilisée comme objectif d’apprentissage pour les distributions de probabilités. Le modèle est incité non seulement à placer la classe correcte en tête, mais aussi à distribuer les probabilités de manière proche de la distribution cible observée.
Cette équation repose toutefois sur des hypothèses. et doivent toutes deux être des distributions de probabilités : leurs composantes doivent être dans la plage appropriée et leur somme doit valoir 1. Les logits ne sont pas eux-mêmes des distributions de probabilités ; ils ne sont donc pas directement substitués dans cette relation. Les logits sont reliés aux calculs de distributions de probabilités par softmax ou par une perte combinée fondée sur les logits.
Quelles sont les idées reçues et les erreurs fréquentes ?
La première idée reçue est que les logits sont des probabilités. La classe ayant le plus grand logit possède aussi la plus grande probabilité softmax, mais les valeurs de logits elles-mêmes ne peuvent pas être lues comme des pourcentages. La manière dont une différence de logits telle que 2 contre 1 se traduit en différence de probabilités n’est déterminée qu’après l’application de softmax avec tous les autres logits.
La deuxième idée reçue est que l’entraînement de classification ne fonctionne que si softmax est ajoutée à la fin du modèle. Si vous utilisez une perte d’entropie croisée combinée qui accepte des logits, il est courant de ne pas ajouter explicitement softmax à la sortie finale pendant l’entraînement. Cela permet le calcul interne et la stabilité numérique. www.tensorflow.orgdocs.pytorch.org
La troisième idée reçue est que l’entropie croisée softmax convient à tout problème de classification. Cette combinaison de perte est naturelle lorsque les classes sont mutuellement exclusives. Si plusieurs étiquettes correctes peuvent coexister pour un même échantillon, softmax, qui contraint la somme des probabilités de classes à 1, peut ne pas représenter correctement la signification des données.
La quatrième idée reçue est que l’entropie croisée et l’exactitude sont la même métrique. L’exactitude examine généralement uniquement la classe à probabilité maximale, tandis que l’entropie croisée reflète la probabilité complète attribuée à la bonne réponse. Deux modèles ayant la même exactitude peuvent donc présenter des valeurs d’entropie croisée différentes. C’est aussi une raison pour laquelle la perte d’entraînement peut diminuer sans que l’exactitude augmente de manière monotone à chaque étape.
La cinquième erreur consiste à déterminer si un modèle est bon ou mauvais à partir d’une seule valeur de perte. Les valeurs d’entropie croisée sont influencées par le nombre de classes, la difficulté de la tâche, le format des étiquettes et la méthode d’agrégation. Il est plus approprié de considérer les évolutions dans les mêmes conditions de tâche et de configuration, la perte sur les données de validation, ainsi que des métriques d’évaluation distinctes adaptées à la tâche.
Que devez-vous vérifier avant de configurer le modèle ?
Avant d’appliquer softmax et l’entropie croisée, il est utile de vérifier les questions suivantes dans l’ordre.
- Chaque échantillon possède-t-il exactement une classe correcte ? Si oui, une classification multiclasse fondée sur softmax est une option. Si plusieurs étiquettes peuvent être vraies simultanément, envisagez d’abord une sigmoïde par classe et une perte binaire.
- La sortie finale du modèle est-elle constituée de logits ou déjà de probabilités ? Les logits sont des scores bruts non contraints, tandis que les probabilités sont des valeurs normalisées. Si la perte combinée attend des logits, n’appliquez pas softmax à l’avance.
- Le format des étiquettes correspond-il à la fonction de perte ? Vérifiez si elle accepte des vecteurs one-hot ou probabilistes, ou des indices entiers. Outre le format, vérifiez la dimension du lot et la position de la dimension des classes.
- Avez-vous distingué les objectifs de l’entraînement et de l’inférence ? Pendant l’entraînement, calculez avec une perte stable fondée sur les logits. Pendant l’inférence, utilisez softmax lorsque vous devez afficher des probabilités ou appliquer des règles basées sur les probabilités.
- Interprétez-vous séparément la perte et les métriques d’évaluation ? L’entropie croisée est un objectif d’entraînement qui reflète la qualité des prédictions probabilistes, tandis que l’exactitude mesure si le choix final correspond à la cible. Interprétez-les ensemble selon la tâche.
Cette liste de contrôle ne se limite pas à une bibliothèque particulière. Toutefois, même lorsque les noms d’API sont similaires, ils peuvent différer selon qu’ils attendent des logits, des probabilités ou des étiquettes entières en entrée. Juste avant l’implémentation, consultez la documentation officielle de la fonction utilisée pour confirmer le format d’entrée et savoir si elle comprend une fonction d’activation interne.
Conclusion : comprendre la conversion en probabilités et le calcul de perte selon leurs rôles
Softmax convertit plusieurs logits en une distribution de probabilités totalisant 1, qui représente la vraisemblance relative de classes mutuellement exclusives. L’entropie croisée calcule comme perte la différence entre cette distribution prédite et la distribution cible, en attribuant une pénalité plus élevée aux prédictions qui donnent une faible probabilité à la bonne réponse. Pour une cible one-hot, la perte se simplifie en , ce qui rend clair l’objectif d’apprentissage consistant à augmenter la probabilité de la classe correcte.
En pratique, softmax et l’entropie croisée ne sont souvent pas calculées séparément. On utilise plutôt une fonction de perte combinée qui accepte des logits. Cela préserve l’objectif mathématique tout en permettant un calcul plus stable numériquement. Cette combinaison est toutefois particulièrement naturelle lorsque la structure du problème est une « classification multiclasse avec exactement une bonne réponse ». Lors de la sélection des sorties et des pertes, le point essentiel est de vérifier si les étiquettes sont mutuellement exclusives et ce que la fonction de perte attend en entrée avant de considérer le nombre de classes.