Perte D'entropie Croisée: Un Aperçu
Un tutoriel sur la perte d'entropie croisée, avec du code dans PyTorch et Tensorflow et des visualisations interactives.
Created on January 11|Last edited on February 2
Comment
Sections
👋 Introduction à la Perte D'entropie Croisée
L'une des fonctions de perte les plus courantes utilisées pour la formation des réseaux de neurones est l'entropie croisée. Dans ce billet de blog, nous passerons en revue sa dérivation et son implémentation à l'aide de différents frameworks et nous apprendrons comment les enregistrer et les visualiser à l'aide de wandb.
🧑🏻🏫 Qu'est-ce Que la Perte D'entropie Croisée ?
La perte d'entropie croisée est une métrique utilisée pour mesurer la performance d'un modèle de classification en apprentissage automatique. La perte (ou l'erreur) est mesurée par un nombre compris entre 0 et 1, 0 correspondant à un modèle parfait. L'objectif est généralement d'obtenir un modèle aussi proche de 0 que possible.
La perte d'entropie croisée est souvent considérée comme interchangeable avec la perte logistique (ou perte logarithmique, et parfois appelée perte d'entropie croisée binaire), mais ce n'est pas toujours correct.
La perte d'entropie croisée mesure la différence entre la distribution de probabilité découverte d'un modèle de classification par apprentissage automatique et la distribution prédite. Toutes les valeurs possibles de la prédiction sont stockées. Ainsi, par exemple, si vous recherchez les probabilités d'un lancer de pièce de monnaie, le modèle stocke cette information à 0,5 et 0,5 (pile et face).
La perte d'entropie croisée binaire, en revanche, ne stocke qu'une seule valeur. Cela signifie qu'elle ne stocke que 0,5, l'autre 0,5 étant supposé dans un problème différent (si la première probabilité était de 0,7, elle supposerait que l'autre était de 0,3). Il utilise également un logarithme (d'où "perte logarithmique").
C'est pour cette raison que la perte d'entropie croisée binaire (ou perte logarithmique) est utilisée dans les scénarios où il n'y a que deux résultats possibles, bien qu'il soit facile de voir où elle échouerait immédiatement s'il y en avait trois ou plus. C'est là que la perte d'entropie croisée est souvent utilisée : dans les modèles où il y a trois possibilités de classification ou plus.
Théorie
Commençons par les bases. En apprentissage profond, nous utilisons généralement une stratégie d'optimisation basée sur le gradient pour former un modèle (disons ) en utilisant une certaine fonction de perte ou sont des paires d'entrée-sortie. Une fonction de perte est utilisée pour aider le modèle à déterminer à quel point il est "faux" et, en fonction de cette "erreur", à s'améliorer. Il s'agit d'une mesure de l'erreur. Notre objectif, tout au long de la formation, est de minimiser cette erreur/perte.
Le rôle d'une fonction de perte est important. Si elle ne pénalise pas une sortie erronée de manière appropriée à son ampleur, elle peut retarder la convergence et affecter l'apprentissage.
Il existe un paradigme d'apprentissage appelé Estimation du Maximum de Vraisemblance, qui entraîne le modèle à estimer ses paramètres afin d'apprendre la distribution sous-jacente des données. Ainsi, nous utilisons une fonction de perte pour évaluer l'adéquation entre modèle et la distribution des données.
En utilisant l'entropie croisée, nous pouvons mesurer l'erreur (ou la différence) entre deux distributions de probabilité.
Par exemple, dans le cas de la classification binaire, l'entropie croisée est donnée par :
où:
- est la probabilité prédite, et
- est l'indicateur (0 ou 1 dans le cas de la classification binaire).
Voyons ce qui se passe pour un point de données particulier. Supposons que l'indicateur correct soit : y =1. Dans ce cas,
la valeur de la perte ll dépend donc de la probabilité pp. Par conséquent, notre fonction de perte récompensera le modèle pour avoir donné une prédiction correcte (valeur élevée de pp) avec une faible perte. Cependant, si la probabilité est plus faible, la valeur de l'erreur sera élevée (valeur négative plus grande) et elle pénalise donc le modèle pour un résultat erroné.
Une extension simple à un problème de multi-classification (disons N classes) existe comme suit:-
🧑🏼💻 Code
Dans cette section, nous verrons comment utiliser la perte d'entropie croisée dans Tensorflow et PyTorch et comment l'enregistrer dans wandb.
🥕 Implémentation Tensorflow
import tensorflow as tffrom wandb.keras import WandbCallbackdef build_model():...# Define the Model Architecturemodel = tf.keras.Model(inputs = ..., outputs = ...)# Define the Loss Function -> BinaryCrossentropy or CategoricalCrossentropyfn_loss = tf.keras.losses.BinaryCrossentropy()model.compile(optimizer = ..., loss = [fn_loss], metrics= ... )return modelmodel = build_model()# Create a W&B Runrun = wandb.init(...)# Train the model, allowing the Callback to automatically sync lossmodel.fit(... ,callbacks = [WandbCallback()])# Finish the run and sync metricsrun.finish()
🔥 Implémentation PyTorch
import wandbimport torch.nn as nn# Define the Loss Functioncriterion = nn.CrossEntropyLoss()# Create a W&B Runrun = wandb.init(...)def train_step(...):...loss = criterion(output, target)# Back-propagationloss.backward()# Log to Weights and Biaseswandb.log({"Training Loss": loss.item()})# Finish the run and sync metricsrun.finish()
Run set
2
Conclusion
Et voilà qui conclut notre court tutoriel sur la perte par entropie croisée. Pour voir la suite complète des fonctionnalités de wandb, veuillez consulter ce petit guide de 5 minutes.
📚 Quelques Ressources
- Si vous vous demandez pourquoi nous devrions utiliser des probabilités logarithmiques négatives, regardez cette vidéo. 🎥
- Si vous souhaitez une explication mathématique plus rigoureuse, consultez ces blogpost(1) et blogpost(2). 🧾
Voici cette vidéo, pour vous faire gagner un clic :
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.