PyTorch torch.nn.HuberLoss-Funktion

PyTorch torch.nn 参考手册PyTorch torch.nn Referenzhandbuch


torch.nn.HuberLossEs ist die Huber-Verlustfunktion in PyTorch.

Es ist eine Kombination aus MSE und MAE, die robust gegenüber Ausreißern ist und stabile Gradienten hat.

Funktionsdefinition

torch.nn.HuberLoss(delta=1.0, reduction='mean')

Parameter:

  • delta: der Umschaltpunkt; oberhalb dieses Wertes wird MAE verwendet
  • reduction: Aggregationsmethode

Mathematisches Prinzip

L(y, ŷ) = 0.5 * (y - ŷ)², if |y - ŷ| ≤ δ
L(y, ŷ) = δ * |y - ŷ| - 0.5 * δ², if |y - ŷ| > δ

Anwendungsbeispiele

Beispiel 1: Grundlegende Verwendung

Beispiel

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("Huber-Verlust:", loss.item())

# Vergleich mit MSE
mse = nn.MSELoss()(pred, target)
print("MSE-Verlust:", mse.item())

Beispiel 2: Regressionstraining

Beispiel

import torch
import torch.nn as nn

model = nn.Linear(10, 1)
criterion = nn.HuberLoss()
optimizer = torch.optim.Adam(model.parameters())

# Training
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(Trainingsverlust:, loss.item())

Anwendungsfälle

  • Regressionsaufgaben: Daten mit Ausreißern
  • Objekterkennung: Bounding-Box-Regression
  • Robustes Training: verrauschte Daten

PyTorch torch.nn 参考手册PyTorch torch.nn Referenzhandbuch

Andere Erweiterungen