Fonction de Perte
Lors de l'entraînement d'un réseau de neurones, il est nécessaire de mesurer la performance du modèle. Cela se fait à l'aide d'une fonction de perte, qui quantifie la différence entre les sorties prédites et les valeurs cibles réelles. L'objectif de l'entraînement est de minimiser cette perte, afin que les prédictions soient aussi proches que possible des valeurs réelles.
L'une des fonctions de perte les plus couramment utilisées pour la classification binaire est la perte d'entropie croisée, particulièrement adaptée aux modèles produisant des probabilités.
Dérivation de la perte d'entropie croisée
Pour comprendre la perte d'entropie croisée, il faut commencer par le principe du maximum de vraisemblance. Dans un problème de classification binaire, l'objectif est d'entraîner un modèle qui estime la probabilité y^ qu'une entrée donnée appartienne à la classe 1. L'étiquette réelle y peut être 0 ou 1.
Un bon modèle doit maximiser la probabilité de prédire correctement tous les exemples d'entraînement. Cela signifie que l'on cherche à maximiser la fonction de vraisemblance, qui représente la probabilité d'observer les données en fonction des prédictions du modèle.
Pour un exemple d'entraînement unique, en supposant l'indépendance, la vraisemblance peut s'écrire :
P(y∣x)=y^y(1−y^)1−yCette expression signifie simplement :
- Si y=1, alors P(y∣x)=y^, ce qui implique que l'on souhaite maximiser y^ (la probabilité attribuée à la classe 1) ;
- Si y=0, alors P(y∣x)=1−y^, ce qui implique que l'on souhaite maximiser 1−y^ (la probabilité attribuée à la classe 0).
P(y∣x) signifie la probabilité d'observer la véritable étiquette de classe y étant donné les entrées x.
Pour faciliter l'optimisation, on utilise la log-vraisemblance au lieu de la vraisemblance elle-même (puisque les logarithmes transforment les produits en sommes, ce qui simplifie la différentiation) :
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Puisque l'objectif est la maximisation, on définit la fonction de perte comme la négative log-vraisemblance, que l'on souhaite minimiser :
L=−(ylog(y^)+(1−y)log(1−y^))Il s'agit de la fonction de perte binaire par entropie croisée, couramment utilisée pour les problèmes de classification.
Étant donné que la variable output
représente y^ pour un exemple d'entraînement particulier, et que la variable target
représente y pour cet exemple, cette fonction de perte peut être implémentée comme suit :
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Pourquoi cette formule ?
La perte par entropie croisée possède une interprétation intuitive claire :
- Si y=1, la perte se simplifie en −log(y^), ce qui signifie que la perte est faible lorsque y^ est proche de 1 et très élevée lorsque y^ est proche de 0 ;
- Si y=0, la perte se simplifie en −log(1−y^), ce qui signifie que la perte est faible lorsque y^ est proche de 0 et très élevée lorsqu'elle est proche de 1.
Puisque les logarithmes deviennent très négatifs lorsque leur entrée approche zéro, les prédictions incorrectes sont fortement pénalisées, ce qui encourage le modèle à effectuer des prédictions correctes et confiantes.
Si plusieurs exemples sont passés lors de la propagation avant, la perte totale est calculée comme la perte moyenne sur l'ensemble des exemples :
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))où N est le nombre d'échantillons d'entraînement.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain how cross-entropy loss differs from mean squared error?
Why do we use the negative log-likelihood instead of just the likelihood?
Can you show how this loss function is used during neural network training?
Awesome!
Completion rate improved to 4
Fonction de Perte
Glissez pour afficher le menu
Lors de l'entraînement d'un réseau de neurones, il est nécessaire de mesurer la performance du modèle. Cela se fait à l'aide d'une fonction de perte, qui quantifie la différence entre les sorties prédites et les valeurs cibles réelles. L'objectif de l'entraînement est de minimiser cette perte, afin que les prédictions soient aussi proches que possible des valeurs réelles.
L'une des fonctions de perte les plus couramment utilisées pour la classification binaire est la perte d'entropie croisée, particulièrement adaptée aux modèles produisant des probabilités.
Dérivation de la perte d'entropie croisée
Pour comprendre la perte d'entropie croisée, il faut commencer par le principe du maximum de vraisemblance. Dans un problème de classification binaire, l'objectif est d'entraîner un modèle qui estime la probabilité y^ qu'une entrée donnée appartienne à la classe 1. L'étiquette réelle y peut être 0 ou 1.
Un bon modèle doit maximiser la probabilité de prédire correctement tous les exemples d'entraînement. Cela signifie que l'on cherche à maximiser la fonction de vraisemblance, qui représente la probabilité d'observer les données en fonction des prédictions du modèle.
Pour un exemple d'entraînement unique, en supposant l'indépendance, la vraisemblance peut s'écrire :
P(y∣x)=y^y(1−y^)1−yCette expression signifie simplement :
- Si y=1, alors P(y∣x)=y^, ce qui implique que l'on souhaite maximiser y^ (la probabilité attribuée à la classe 1) ;
- Si y=0, alors P(y∣x)=1−y^, ce qui implique que l'on souhaite maximiser 1−y^ (la probabilité attribuée à la classe 0).
P(y∣x) signifie la probabilité d'observer la véritable étiquette de classe y étant donné les entrées x.
Pour faciliter l'optimisation, on utilise la log-vraisemblance au lieu de la vraisemblance elle-même (puisque les logarithmes transforment les produits en sommes, ce qui simplifie la différentiation) :
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Puisque l'objectif est la maximisation, on définit la fonction de perte comme la négative log-vraisemblance, que l'on souhaite minimiser :
L=−(ylog(y^)+(1−y)log(1−y^))Il s'agit de la fonction de perte binaire par entropie croisée, couramment utilisée pour les problèmes de classification.
Étant donné que la variable output
représente y^ pour un exemple d'entraînement particulier, et que la variable target
représente y pour cet exemple, cette fonction de perte peut être implémentée comme suit :
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Pourquoi cette formule ?
La perte par entropie croisée possède une interprétation intuitive claire :
- Si y=1, la perte se simplifie en −log(y^), ce qui signifie que la perte est faible lorsque y^ est proche de 1 et très élevée lorsque y^ est proche de 0 ;
- Si y=0, la perte se simplifie en −log(1−y^), ce qui signifie que la perte est faible lorsque y^ est proche de 0 et très élevée lorsqu'elle est proche de 1.
Puisque les logarithmes deviennent très négatifs lorsque leur entrée approche zéro, les prédictions incorrectes sont fortement pénalisées, ce qui encourage le modèle à effectuer des prédictions correctes et confiantes.
Si plusieurs exemples sont passés lors de la propagation avant, la perte totale est calculée comme la perte moyenne sur l'ensemble des exemples :
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))où N est le nombre d'échantillons d'entraînement.
Merci pour vos commentaires !