Loss Function
Eine Verlustfunktion bewertet die Abweichung zwischen den Vorhersagen eines Modells und den Ground-Truth-Werten; beim Training wird dieser Wert minimiert. Hier erfährst du mehr über gängige Verlustfunktionen und wann du sie einsetzt.
Eine Verlustfunktion misst, wie stark die Vorhersagen eines Modells von den Ground-Truth-Labels in den Trainingsdaten abweichen, und fasst den Fehler in einer einzelnen Zahl zusammen, wobei ein niedrigerer Wert besser ist. Beim Training eines neuronalen Netzes werden dessen Modellgewichte so angepasst, dass dieser Wert möglichst klein wird. „Kostenfunktion“ und „Zielfunktion“ sind gebräuchliche Synonyme. Manche Texte verwenden „Verlust“ jedoch für den Fehler eines einzelnen Beispiels und „Kosten“ für den Durchschnitt über einen Batch oder Datensatz.
Wie der Verlust das Training steuert#
Das Training wiederholt denselben Ablauf für jeden Datenbatch. Das Modell erstellt Vorhersagen, die Verlustfunktion bewertet sie anhand der Labels, und die Rückpropagierung berechnet den Gradienten des Verlusts bezüglich jedes Gewichts. Anschließend verändert ein Optimierer wie der stochastische Gradientenabstieg (SGD) oder der Adam-Optimierer jedes Gewicht in kleinen Schritten entgegen seinem Gradienten. Die Schrittweite wird von der Lernrate bestimmt. Da dieser Prozess auf Gradienten beruht, muss eine Verlustfunktion fast überall differenzierbar sein. Das Plotten des Trainings- und Validierungsverlusts nach jeder Epoche ist die gängige Methode, einen Trainingslauf zu überwachen: Steigt der Validierungsverlust, während der Trainingsverlust weiter sinkt, ist das ein klassisches Anzeichen für Overfitting.
Gängige Verlustfunktionen#
Welche Verlustfunktion geeignet ist, hängt davon ab, was das Modell vorhersagt. Frameworks wie PyTorch bieten die meisten Standardoptionen:
- Mittlerer quadratischer Fehler (MSE): Der durchschnittliche quadrierte Unterschied zwischen vorhergesagten und tatsächlichen Werten, der bei Regression verwendet wird. Durch das Quadrieren fallen große Fehler stärker ins Gewicht, sodass Ausreißer einen großen Einfluss haben.
- Mittlerer absoluter Fehler (L1) und Huber-Verlust: Regressionsverluste, die bei großen Fehlern linear anwachsen und dadurch weniger empfindlich auf Ausreißer reagieren. Beim Huber-Verlust ist das Wachstum bei kleinen Fehlern quadratisch und ab einem Schwellenwert linear.
- Kreuzentropie: Der Standardverlust für die Bildklassifizierung, berechnet anhand der Softmax-Wahrscheinlichkeiten für sich gegenseitig ausschließende Klassen.
- Binäre Kreuzentropie (BCE): Bewertet jede Klasse über eine Sigmoid-Funktion als unabhängige Ja-oder-Nein-Vorhersage. Das eignet sich für Mehrfachklassifizierungsprobleme und Klassenscores von Detektoren.
- Focal Loss: Eine Variante der Kreuzentropie, die einfache Beispiele geringer gewichtet, damit seltene schwierige Beispiele bei stark unausgewogenen Klassen das Lernen bestimmen.
- IoU-basierte Verluste: Verluste für die Box-Regression, die auf Intersection over Union (IoU) beruhen. Varianten wie DIoU und CIoU ergänzen Strafwerte für den Abstand der Mittelpunkte und bei CIoU auch für das Seitenverhältnis.
- Dice-Verlust: Ein Überlappungsverlust für die Bildsegmentierung, der aussagekräftig bleibt, wenn der Vordergrund nur einen kleinen Teil der Pixel bedeckt.
- Kontrastive Verluste: Verluste für kontrastives Lernen, die passende Paare im Einbettungsraum zusammenziehen und nicht passende Paare auseinanderdrücken.
Die Kreuzentropie verwendet den negativen Logarithmus der Wahrscheinlichkeit, die der tatsächlichen Klasse zugewiesen wurde. Ein selbstsicherer Fehler kostet daher deutlich mehr als eine zögerliche Vorhersage, während eine selbstsichere richtige Antwort fast nichts kostet. PyTorchs CrossEntropyLoss veranschaulicht den Effekt anhand zweier Vorhersagen mit derselben Konfidenz:
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}")Die selbstsichere richtige Vorhersage kostet 0.0363, während dieselbe Konfidenz für die falsche Klasse 5.0363 kostet, also etwa 139-mal mehr.
Zusammengesetzte Verluste bei der Objekterkennung#
Modelle zur Objekterkennung sagen voraus, wo sich jedes Objekt befindet und um welches Objekt es sich handelt. Daher ist ihr Trainingsverlust eine gewichtete Summe mehrerer Terme. YOLO26 kombiniert einen CIoU-Boxverlust, einen BCE-Klassifizierungsverlust und einen L1-Verlust für normalisierte Boxabstände. Dieser ersetzt den Distribution Focal Loss früherer YOLO-Modelle. Die Gewichtung erfolgt über die Trainingsargumente box, cls und dfl (Standardwerte: 7.5, 0.5 und 1.5). Der Progressive Loss verlagert außerdem im Trainingsverlauf Gewicht vom One-to-many-Kopf zum One-to-one-Kopf, der für die NMS-freie Inferenz verwendet wird.
Verlustfunktion im Vergleich zu verwandten Begriffen#
- Evaluierungsmetriken: Metriken wie Genauigkeit und mittlere durchschnittliche Präzision (mAP) geben die Leistung anhand relevanter Kriterien an. Die meisten ändern sich jedoch sprunghaft und können keine Gradienten liefern. Beim Training wird ein differenzierbarer Verlust als Näherungswert für diese Metriken minimiert.
- Regularisierung: Strafwerte, die zum Verlust hinzugefügt werden, um die Komplexität zu begrenzen. L2-Regularisierung addiert ein Vielfaches der Summe der quadrierten Gewichte. Dadurch wird der Optimierer zu kleineren Gewichten gelenkt, die besser generalisieren.
- Belohnungsfunktion: Die Zielfunktion beim bestärkenden Lernen, bei dem ein Agent die kumulative Belohnung maximiert, statt einen Verlust zu minimieren. Eine Belohnung erfüllt somit die Rolle eines negativen Verlusts.










