Loss Function
Une fonction de perte évalue l’écart entre les prédictions d’un modèle et la vérité terrain, et l’entraînement vise à le minimiser. Découvre les pertes courantes et quand utiliser chacune.
Une fonction de perte mesure l’écart entre les prédictions d’un modèle et les étiquettes de référence dans ses données d’entraînement, puis condense cette erreur en un seul nombre, dont la baisse est souhaitable. Entraîner un réseau neuronal consiste à ajuster ses poids de modèle pour minimiser ce nombre. « Fonction de coût » et « fonction objectif » sont des synonymes courants, même si certains textes réservent le terme « perte » à l’erreur sur un exemple et le terme « coût » à la moyenne sur un lot ou un jeu de données.
Comment la perte guide l’entraînement#
L’entraînement répète le même cycle pour chaque lot de données. Le modèle produit des prédictions, la fonction de perte les évalue par rapport aux étiquettes et la rétropropagation calcule le gradient de la perte par rapport à chaque poids. Un optimiseur, tel que la descente de gradient stochastique (SGD) ou l’optimiseur Adam, déplace ensuite chaque poids d’un petit pas dans le sens opposé à son gradient ; la vitesse d’apprentissage détermine la taille du pas. Ce processus reposant sur les gradients, la fonction de perte doit être différentiable presque partout. Tracer la perte d’entraînement et la perte de validation après chaque époque est la méthode standard pour suivre une exécution : une perte de validation qui augmente alors que la perte d’entraînement continue de baisser est le signe classique de surapprentissage.
Fonctions de perte courantes#
La fonction de perte appropriée dépend de ce que prédit le modèle, et des frameworks tels que PyTorch proposent la plupart des options standard :
- Erreur quadratique moyenne (MSE) : Moyenne des carrés des écarts entre les valeurs prédites et réelles, utilisée pour la régression. Le carré donne plus de poids aux grandes erreurs, de sorte que les valeurs aberrantes ont une forte influence.
- Erreur absolue moyenne (L1) et perte de Huber : Fonctions de perte de régression qui augmentent linéairement pour les grandes erreurs, ce qui les rend moins sensibles aux valeurs aberrantes. La perte de Huber est quadratique pour les petites erreurs et linéaire au-delà d’un seuil.
- Entropie croisée : Fonction de perte standard pour la classification d’images, calculée sur les probabilités softmax de classes mutuellement exclusives.
- Entropie croisée binaire (BCE) : Évalue chaque classe comme une prédiction indépendante de type oui ou non au moyen d’une sigmoïde, ce qui convient aux problèmes mult-étiquettes et aux scores de classe des détecteurs.
- Perte focale : Variante de l’entropie croisée qui réduit le poids des exemples faciles, afin que les exemples rares et difficiles guident l’apprentissage en cas de fort déséquilibre des classes.
- Pertes fondées sur IoU : Pertes de régression de boîtes fondées sur l’intersection sur l’union (IoU), avec des variantes comme DIoU et CIoU qui ajoutent des pénalités pour la distance entre les centres et, dans le cas de CIoU, pour le rapport d’aspect.
- Perte Dice : Perte de recouvrement pour la segmentation d’images, qui reste informative lorsque l’avant-plan ne couvre qu’une faible fraction des pixels.
- Pertes contrastives : Pertes pour l’apprentissage contrastif, qui rapprochent les paires correspondantes dans l’espace des plongements et éloignent les paires qui ne correspondent pas.
L’entropie croisée utilise le logarithme négatif de la probabilité attribuée à la classe réelle : une erreur commise avec confiance coûte donc bien plus cher qu’une réponse hésitante, tandis qu’une réponse correcte et assurée coûte presque rien. L’exemple PyTorch CrossEntropyLoss illustre cet effet sur deux prédictions de même confiance :
import torch
from torch import nn
# CrossEntropyLoss applies softmax to raw scores (logits) internally
loss_fn = nn.CrossEntropyLoss()
# Logits for 3 classes; the true class is index 0
target = torch.tensor([0])
confident_right = torch.tensor([[4.0, 0.5, -1.0]])
confident_wrong = torch.tensor([[-1.0, 4.0, 0.5]])
print(f"Confident and right: {loss_fn(confident_right, target).item():.4f}")
print(f"Confident and wrong: {loss_fn(confident_wrong, target).item():.4f}")La prédiction correcte et assurée coûte 0,0363, tandis que la même confiance attribuée à la mauvaise classe coûte 5,0363, soit environ 139 fois plus.
Pertes composites en détection d’objets#
Les modèles de détection d’objets prédisent la position et l’identité de chaque objet ; leur perte d’entraînement est donc une somme pondérée de plusieurs termes. YOLO26 combine une perte de boîte CIoU, une perte de classification BCE et une perte L1 sur les distances de boîte normalisées, qui remplace la Distribution Focal Loss des anciens modèles YOLO. Ces pertes sont pondérées par les arguments d’entraînement box, cls et dfl (valeurs par défaut : 7,5, 0,5 et 1,5). Sa perte progressive transfère également, au fil de l’entraînement, le poids de la tête un-vers-plusieurs vers la tête un-vers-un utilisée pour l’inférence sans NMS.
Fonction de perte et termes apparentés#
- Métriques d’évaluation : Des métriques comme l’exactitude et la précision moyenne (mAP) rendent compte des performances à l’aide de mesures utiles, mais la plupart évoluent par sauts discrets et ne fournissent pas de gradients. L’entraînement minimise une perte différentiable qui sert d’approximation à ces métriques.
- Régularisation : Termes de pénalité ajoutés à la perte pour limiter la complexité. La régularisation L2 ajoute un coefficient multiplié par la somme des carrés des poids, ce qui pousse l’optimiseur vers des poids plus petits qui généralisent mieux.
- Fonction de récompense : Objectif de l’apprentissage par renforcement, dans lequel un agent maximise la récompense cumulée au lieu de minimiser une perte ; la récompense joue donc le rôle d’une perte négative.










