Loss Function
Eine mathematische Funktion, die misst, wie weit die Vorhersage eines Modells von der tatsächlichen Antwort entfernt ist – das zentrale Optimierungsziel beim Training.
Eine Loss Function, die misst, wie gut eine vorhergesagte Wahrscheinlichkeitsverteilung mit der tatsächlichen Verteilung übereinstimmt – Standard für Klassifikation und LLMs.
Cross-Entropy ist die am häufigsten verwendete Loss Function für Klassifikationsaufgaben und Sprachmodelle. Sie misst den Unterschied zwischen der vorhergesagten Wahrscheinlichkeitsverteilung und der tatsächlichen Verteilung. Das Besondere: Cross-Entropy bestraft selbstbewusste Fehler überproportional stark – wenn das Modell mit 90% Konfidenz falsch liegt, ist der Loss viel höher als wenn es mit 60% Konfidenz falsch liegt. Das zwingt Modelle, kalibriert zu sein.
Cross-Entropy misst, wie weit die Vorhersage von der Wahrheit entfernt ist – und bestraft selbstbewusste Fehler besonders stark.
Beispiel:
Wahre Klasse: Katze [1, 0, 0]
Vorhersage A: [0.9, 0.05, 0.05] → Cross-Entropy: 0.105 ✓ (gut)
Vorhersage B: [0.6, 0.2, 0.2] → Cross-Entropy: 0.511 (okay)
Vorhersage C: [0.1, 0.8, 0.1] → Cross-Entropy: 2.303 ✗ (schlecht)
Warum ist das wichtig?
Cross-Entropy bestraft nicht nur falsche Antworten, sondern auch unsichere richtige Antworten. Das Modell lernt, selbstbewusst richtig zu sein.
H(p, q) = -Σ p(x) × log(q(x))
p = Wahre Verteilung (One-Hot: [1, 0, 0])
q = Vorhergesagte Verteilung ([0.9, 0.05, 0.05])
Für Klassifikation (One-Hot Labels):
Loss = -log(q_correct)
Wenn q_correct = 0.9 → Loss = 0.105
Wenn q_correct = 0.1 → Loss = 2.303
import torch
import torch.nn as nn
# Logits (vor Softmax)
logits = torch.tensor([[2.0, 0.5, 0.1]])
labels = torch.tensor([0]) # Klasse 0 ist richtig
loss_fn = nn.CrossEntropyLoss()
loss = loss_fn(logits, labels)
# CrossEntropyLoss wendet Softmax intern an!
| Variante | Anwendung |
|---|---|
| Categorical CE | Multi-Class (genau eine Klasse) |
| Binary CE | Binär oder Multi-Label |
| Sparse CE | Wie Categorical, aber Integer-Labels |
| Focal Loss | Für stark unbalancierte Daten |
∂L/∂z_i = softmax(z_i) - y_i
Wenn y_i = 1 (richtige Klasse):
Gradient = p_i - 1 (negativ, treibt p_i hoch)
Wenn y_i = 0 (falsche Klasse):
Gradient = p_i (positiv, treibt p_i runter) Cross-Entropy ist wie ein Lehrer, der nicht nur prüft, ob die Antwort richtig ist, sondern auch wie sicher der Schüler war. 'Richtig mit 99% Sicherheit' ist besser als 'Richtig mit 51% Sicherheit'.
Misst Unterschied zwischen vorhergesagter und tatsächlicher Verteilung
Standard-Loss für Klassifikation und Sprachmodelle
Bestraft falsche, selbstbewusste Vorhersagen stark
Klassifikation
Bildklassifikation, Sentiment-Analyse, Spam-Erkennung
LLM Training
Vorhersage des nächsten Tokens
Multi-Label
Binary Cross-Entropy für mehrere unabhängige Labels
Cross-Entropy hat stärkere Gradienten bei falschen Vorhersagen, was schnelleres Lernen ermöglicht. MSE hat bei Softmax-Ausgaben flache Gradienten nahe 0 und 1 – das Training stagniert.
Perplexity = 2^(Cross-Entropy). Perplexity ist die intuitivere Metrik ('wie viele Optionen hat das Modell im Durchschnitt'), Cross-Entropy ist die mathematisch praktischere für Training.
Binary: Zwei Klassen oder Multi-Label (jede Klasse unabhängig). Categorical: Mehrere Klassen, genau eine ist richtig. Bei PyTorch: BCELoss vs. CrossEntropyLoss.