Garden of KnowledgeApplied Sciences › Computer Science › Software › Data Science › Machine Learning
February 12, 2026

Fonctions de pertes

Les fonctions de perte en intelligence artificielle (IA) sont des outils essentiels pour entraîner des modèles, notamment dans les domaines de l’apprentissage supervisé et non supervisé. Elles mesurent la différence entre les prédictions du modèle et les résultats réels. Voici une description des principales fonctions de perte utilisées en IA.

Comment choisir sa fonction de perte ?§

graph TD
    START{"Quel type de<br/>problème ?"}
    START --> REG["Régression<br/>(valeur continue)"]
    START --> CLASSIF["Classification<br/>(catégorie)"]

    REG --> OUTLIERS{"Outliers dans<br/>les données ?"}
    OUTLIERS --> |"Non"| MSE2["MSE"]
    OUTLIERS --> |"Oui"| ROBUST{"Robustesse<br/>souhaitée ?"}
    ROBUST --> |"Maximale"| MAE2["MAE"]
    ROBUST --> |"Équilibrée"| HUBER2["Huber Loss"]

    CLASSIF --> NBCLASS{"Nombre de<br/>classes ?"}
    NBCLASS --> |"2 classes"| MARGIN{"Modèle ?"}
    NBCLASS --> |"N classes"| CE["Cross-Entropy"]
    MARGIN --> |"SVM"| HINGE2["Hinge Loss"]
    MARGIN --> |"Réseau de neurones /<br/>Régression logistique"| LOGLOSS["Log Loss"]

    style START fill:#673AB7,color:#fff
    style MSE2 fill:#2196F3,color:#fff
    style MAE2 fill:#4CAF50,color:#fff
    style HUBER2 fill:#FF9800,color:#fff
    style CE fill:#E91E63,color:#fff
    style HINGE2 fill:#009688,color:#fff
    style LOGLOSS fill:#E91E63,color:#fff

1. Erreur quadratique moyenne (Mean Squared Error, MSE)§

2. Erreur absolue moyenne (Mean Absolute Error, MAE)§

3. Erreur logarithmique (Log Loss) ou Entropie croisée (Cross-Entropy Loss)§

4. Fonction de perte Hinge (Hinge Loss)§

5. Kullback-Leibler Divergence (KL Divergence)§

6. Huber Loss§

7. Focal Loss§

Variante de la Cross-Entropy pour les problèmes avec fort déséquilibre de classes. Réduit le poids des exemples faciles pour forcer le modèle à se concentrer sur les exemples difficiles (objets rares).

$$\text{Focal Loss} = -\alpha_t (1 - p_t)^\gamma \log(p_t)$$

Utilisé dans : RetinaNet (détection d’objets), classification déséquilibrée.

8. Dice Loss (pour la segmentation)§

Mesure le chevauchement entre la prédiction et le masque réel. Particulièrement adapté à la segmentation d’images médicales.

$$\text{Dice Loss} = 1 - \frac{2 |P \cap G|}{|P| + |G|}$$

Où $P$ est le masque prédit et $G$ le masque ground truth.

Utilisé dans : Segmentation sémantique médicale (tumeurs, organes).

9. Contrastive Loss et Triplet Loss§

Pour l’apprentissage de représentations (embedding) où l’objectif est de rapprocher des paires similaires et éloigner des paires dissimilaires.

Contrastive Loss (paires) : $$L = (1-y) \frac{1}{2}D^2 + y \cdot \frac{1}{2}\max(0, m-D)^2$$

Triplet Loss (anchor, positive, negative) : $$L = \max(0, |f_a - f_p|^2 - |f_a - f_n|^2 + \alpha)$$

Utilisé dans : FaceNet, Siamese networks, recherche d’images similaires.

Implémentation PyTorch§

import torch
import torch.nn as nn
import torch.nn.functional as F

# MSE
criterion = nn.MSELoss()

# MAE
criterion = nn.L1Loss()

# Huber
criterion = nn.HuberLoss(delta=1.0)

# Cross-Entropy (inclut Softmax)
criterion = nn.CrossEntropyLoss()
# Pour classification binaire
criterion = nn.BCELoss()
criterion = nn.BCEWithLogitsLoss()  # Plus stable (inclut Sigmoid)

# Hinge
criterion = nn.HingeEmbeddingLoss()
# Pour SVM multiclasse
criterion = nn.MultiMarginLoss()

# KL Divergence
criterion = nn.KLDivLoss(reduction='batchmean')

# Focal Loss (implémentation custom)
class FocalLoss(nn.Module):
    def __init__(self, gamma=2, alpha=0.25):
        super().__init__()
        self.gamma = gamma
        self.alpha = alpha

    def forward(self, logits, targets):
        ce_loss = F.cross_entropy(logits, targets, reduction='none')
        p_t = torch.exp(-ce_loss)
        focal_loss = self.alpha * (1 - p_t) ** self.gamma * ce_loss
        return focal_loss.mean()

# Triplet Loss
criterion = nn.TripletMarginLoss(margin=1.0)

# Utilisation type
outputs = model(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()

Résumé comparatif§

FonctionType de problèmeSensible aux outliersQuand l’utiliser
MSERégressionOuiDonnées propres, pénaliser les grandes erreurs
MAERégressionNonDonnées avec outliers
HuberRégressionPartiellementCompromis MSE/MAE
Log LossClassificationClassification probabiliste binaire
Cross-EntropyClassificationClassification multi-classes
HingeClassificationSVM, maximiser la marge
KL DivergenceDistributionsVAE, comparaison de distributions
Focal LossClassification déséquilibréeClasses rares, détection d’objets
Dice LossSegmentationSegmentation médicale
Triplet LossEmbeddingsReconnaissance faciale, similarité
—The Gardener