Fonction PyTorch torch.nn.HuberLoss

PyTorch torch.nn 参考手册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 MAE
  • reduction: 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())

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())

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

PyTorch torch.nn 参考手册Manuel de référence torch.nn de PyTorch

Autres extensions