Fonction PyTorch torch.nn.HuberLoss
Manuel de référence torch.nn de PyTorch
torch.nn.HuberLossIl s'agit de la fonction de perte Huber dans PyTorch.
Il s'agit d'une combinaison de MSE et de MAE, qui est robuste aux valeurs aberrantes et dont les gradients sont stables.
Définition de fonction
torch.nn.HuberLoss(delta=1.0, reduction='mean')
Paramètres :
delta: le point de commutation ; au-delà de cette valeur, on utilise MAEreduction: méthode d'agrégation
Principe mathématique
L(y, ŷ) = 0.5 * (y - ŷ)², if |y - ŷ| ≤ δ L(y, ŷ) = δ * |y - ŷ| - 0.5 * δ², if |y - ŷ| > δ
Exemples d'utilisation
Exemple 1 : Utilisation de base
Exemple
import torch
import torch.nn as nn
criterion = nn.HuberLoss(delta=1.0)
pred = torch.tensor([1.0, 2.0, 3.0, 10.0])
target = torch.tensor([1.5, 2.5, 3.5, 8.0])
loss = criterion(pred, target)
print("Perte de Huber :", loss.item())
# Comparer avec MSE
mse = nn.MSELoss()(pred, target)
print("Perte MSE :", mse.item())
import torch.nn as nn
criterion = nn.HuberLoss(delta=1.0)
pred = torch.tensor([1.0, 2.0, 3.0, 10.0])
target = torch.tensor([1.5, 2.5, 3.5, 8.0])
loss = criterion(pred, target)
print("Perte de Huber :", loss.item())
# Comparer avec MSE
mse = nn.MSELoss()(pred, target)
print("Perte MSE :", mse.item())
Exemple 2 : Entraînement de régression
Exemple
import torch
import torch.nn as nn
model = nn.Linear(10, 1)
criterion = nn.HuberLoss()
optimizer = torch.optim.Adam(model.parameters())
# Entraînement
X = torch.randn(100, 10)
y = torch.randn(100, 1)
model.train()
optimizer.zero_grad()
output = model(X)
loss = criterion(output, y)
loss.backward()
optimizer.step()
print(Perte d'entraînement :, loss.item())
import torch.nn as nn
model = nn.Linear(10, 1)
criterion = nn.HuberLoss()
optimizer = torch.optim.Adam(model.parameters())
# Entraînement
X = torch.randn(100, 10)
y = torch.randn(100, 1)
model.train()
optimizer.zero_grad()
output = model(X)
loss = criterion(output, y)
loss.backward()
optimizer.step()
print(Perte d'entraînement :, loss.item())
Cas d'utilisation
- Tâches de régression: données avec des valeurs aberrantes
- Détection d'objets: régression de boîte englobante
- Entraînement robuste: données bruitées
Autres extensions