Der Trainings-Loop
Was genau passiert, wenn du auf 'Training starten' klickst?
Wenn FrameTrain das Training startet, läuft ein präziser, sich wiederholender Zyklus ab. Jeder dieser Zyklen heißt Step. Das Verstehen dieses Loops hilft dir, Probleme zu erkennen, Logs zu lesen und Hyperparameter sinnvoll einzustellen.
Der vollständige Trainings-Loop
Für jede Epoche (1 bis num_epochs): ┌─ Für jeden Batch (1 bis dataset_size / batch_size): │ 1. Batch laden → nächste B Trainingsbeispiele │ 2. Forward Pass → Prediction berechnen │ 3. Loss berechnen → Prediction vs. Label │ 4. Backward Pass → Gradienten berechnen (autograd) │ 5. Gradient Clipping → max_grad_norm (optional, verhindert Explosion) │ 6. optimizer.step() → Gewichte aktualisieren │ 7. optimizer.zero_grad() → Gradienten zurücksetzen (!) │ 8. scheduler.step() → LR anpassen (falls Scheduler aktiv) └─ Ende Batch Nach jeder Epoche (oder alle N Steps): 9. Validation Loop → Loss & Metriken auf Val-Set messen 10. Metriken loggen → Accuracy, F1, Perplexity etc. 11. Checkpoint speichern → wenn beste Val-Performance erreicht 12. Early Stopping prüfen → Abbruch falls keine Verbesserung
Trainings-Modus vs. Evaluierungs-Modus
Pytorch und alle modernen Frameworks unterscheiden zwei Modi. Dieser Unterschied ist kritisch und wird oft vergessen:
model.train() – Training Mode
- ✓ Dropout-Layer ist aktiv
- ✓ BatchNorm nutzt Batch-Statistiken
- ✓ Gradienten werden berechnet
- ✓ Gewichte werden angepasst
- → Höherer Loss als beim Evaluieren (Dropout)
model.eval() – Evaluation Mode
- ✗ Dropout-Layer ist deaktiviert
- ✓ BatchNorm nutzt globale Laufstatistiken
- ✗ Gradienten werden NICHT berechnet (torch.no_grad())
- ✗ Gewichte werden NICHT verändert
- → Ehrliche Messung der echten Performance
Häufiger Fehler: Validation im falschen Modus
Was ist ein "Step" genau?
Ein Step = 1 Batch forward + backward + Gewichts-Update. Die Gesamtzahl der Steps bestimmt, wie viel das Modell insgesamt lernt:
Total Steps = ⌈dataset_size / batch_size⌉ × num_epochs Beispiel: Dataset: 1.000 Trainingsbeispiele Batch Size: 8 Epochen: 3 Steps/Epoche = ⌈1.000/8⌉ = 125 Total Steps = 125 × 3 = 375 Praktische Faustregel: Für LLM Fine-Tuning: ~500–2.000 Steps meist ausreichend Für Klassifikation: ~200–1.000 Steps reichen oft
Checkpointing-Strategie
Best Checkpoint
Speichere nur das Modell mit dem besten Validation Loss. Spart Speicherplatz. Empfohlen für Produktion.
Every N Steps/Epochs
Speichere regelmäßig, unabhängig von Performance. Nützlich um Training fortzusetzen nach Absturz.
Last N Checkpoints
Behalte nur die letzten N Checkpoints. Für Ensemble-Training oder Analyse des Trainingsverlaufs.
Loss-Funktionen
Der Kompass des Trainings – welche Funktion für welche Aufgabe?
Die Loss-Funktion ist das Herzstück des Trainings: Sie misst, wie falsch das Modell aktuell liegt und gibt dem Optimizer die Richtung vor. Die Wahl der richtigen Loss-Funktion ist genauso wichtig wie die Modellarchitektur.
Die wichtigsten Loss-Funktionen im Detail
Cross-Entropy Loss (CE)
Klassifikation & SprachmodelleL = -1/N Σᵢ Σₖ yᵢₖ · log(ŷᵢₖ)Standard für alle Klassifikationsaufgaben. Bestraft falsche Klassen logarithmisch – je sicherer das Modell falsch liegt, desto drastischer die Strafe. Wird auch beim LLM-Training zur Token-Vorhersage genutzt.
Beispiele: Spam-Erkennung, Sentiment-Analyse, alle LLMs
In FrameTrain: automatisch für Sprachmodelle und Klassifikation gewählt.
Binary Cross-Entropy (BCE)
Binäre KlassifikationL = -(y·log(ŷ) + (1-y)·log(1-ŷ))Spezialfall von CE für genau zwei Klassen. Sigmoid-Ausgabe zwischen 0 und 1. Gut für Ja/Nein-Entscheidungen.
Beispiele: Gut/Schlecht, Positiv/Negativ, Spam/Kein Spam
Effizienter als CE mit 2 Klassen, bei großen Datasets merkbar.
Mean Squared Error (MSE)
Regression (kontinuierliche Werte)L = 1/N Σᵢ (yᵢ - ŷᵢ)²Misst quadratischen Abstand zwischen Vorhersage und Ziel. Sehr sensitiv auf Ausreißer (quadratische Strafe). Glatter Gradient als MAE.
Beispiele: Preisvorhersage, Temperatur-Regression
Wenn Ausreißer im Dataset: lieber MAE oder Huber Loss verwenden.
Mean Absolute Error (MAE)
Regression (robust gegen Ausreißer)L = 1/N Σᵢ |yᵢ - ŷᵢ|Misst absoluten Abstand. Robuster als MSE bei Ausreißern, weil Strafe linear statt quadratisch. Kein differenzierbarer Gradient bei 0.
Beispiele: Zeitreihen mit Ausreißern, finanzielle Daten
Huber Loss kombiniert MSE (nahe am Ziel) und MAE (weit entfernt) – beste Kombination.
Spezielle Loss-Funktionen für LLMs
Causal Language Modeling Loss (CLM)
Standard für alle autoregressive Decoder-Modelle (GPT, LLaMA, Mistral). Cross-Entropy über alle Token-Positionen: Das Modell lernt, das nächste Token vorherzusagen.
Input: [BOS] "Ich liebe "
Target: "Ich liebe " [Pizza] ← das nächste Token vorhersagen
Loss = -log P(Pizza | "Ich liebe")
+ eventuell weitere Token-PositionenMasked Language Modeling Loss (MLM)
Für BERT-artige Encoder. 15% der Token werden maskiert, das Modell soll sie vorhersagen. Bidirektionaler Kontext – das Modell sieht Tokens vor und nach dem maskierten Token.
Input: "Ich [MASK] Pizza sehr gern." Target: "Ich liebe Pizza sehr gern." ← [MASK] = "liebe" Loss = Cross-Entropy nur auf maskierten Positionen
FrameTrain wählt automatisch
Metriken & Auswertung
Was sagen Accuracy, F1, Perplexity und BLEU wirklich aus?
Der Loss ist der interne Trainingskompass. Metriken sind die menschlich interpretierbaren Leistungsindikatoren. Ein niedriger Loss garantiert keine guten Metriken – und umgekehrt.
Klassifikations-Metriken im Detail
Die Konfusionsmatrix – das Fundament
True Positive
False Negative
False Positive
True Negative
Accuracy (Genauigkeit)
(TP + TN) / (TP + TN + FP + FN)Anteil aller korrekten Vorhersagen. Einfach zu verstehen, aber bei unbalancierten Datasets irreführend.
⚠️ Problem: Bei 99% negativen Beispielen erreicht ein Modell, das IMMER "negativ" sagt, 99% Accuracy – und hat nichts gelernt!
Precision (Präzision)
TP / (TP + FP)Von allen als positiv klassifizierten Fällen: wie viele sind wirklich positiv? Wichtig wenn False Positives teuer sind (z.B. Spam-Filter → kein echtes Mail soll als Spam markiert werden).
Recall (Trefferquote / Sensitivity)
TP / (TP + FN)Von allen echten positiven Fällen: wie viele wurden gefunden? Wichtig wenn False Negatives gefährlich sind (z.B. Krankheitserkennung → keine echte Krankheit soll übersehen werden).
F1-Score
2 × (Precision × Recall) / (Precision + Recall)Harmonisches Mittel aus Precision und Recall. Die beste Einzelzahl bei unbalancierten Datasets. Bestraft extreme Ungleichgewichte zwischen Precision und Recall.
AUC-ROC
Fläche unter der ROC-Kurve (0–1)Misst die Fähigkeit des Modells, Klassen zu trennen, unabhängig vom Klassifikations-Threshold. 1.0 = perfekt, 0.5 = zufällig.
Sprachmodell-Metriken
Perplexity (PPL)
Die wichtigste Metrik für Sprachmodelle. Misst, wie "überrascht" das Modell von den Testdaten ist. Niedrigere Perplexity = besser. Ein Wert von 10 bedeutet: Das Modell muss im Durchschnitt zwischen ~10 gleich wahrscheinlichen Token wählen.
Perplexity = exp(Cross-Entropy Loss) Beispiele: PPL = 5 → sehr gutes Sprachmodell (sicher in Vorhersagen) PPL = 20 → mittelmäßig PPL = 100 → schlechtes Modell (sehr unsicher) PPL = e^0 = 1 → perfekte Vorhersage (unmöglich in der Praxis)
BLEU Score
Für Übersetzung und Text-Generierung. Vergleicht generierte Texte mit Referenz-Texten auf Basis von N-Gramm-Übereinstimmungen (1-Gram bis 4-Gram). Wert zwischen 0 und 1.
Richtlinien: BLEU > 0.4 = gute Übersetzung, > 0.6 = sehr gut, > 0.8 = fast menschlich
ROUGE (für Zusammenfassungen)
ROUGE-1, ROUGE-2, ROUGE-L messen Recall von N-Grammen gegenüber Referenz-Zusammenfassungen. Standard für Summarization Tasks.
Wann welche Metrik vertrauen?
Train / Validation / Test Split
Die goldene Regel des Machine Learnings
Eine der fundamentalsten Regeln des ML: Dein Dataset wird in strikt getrennte Teile aufgeteilt. Ohne diese Trennung sind deine Metriken wertlos.
Typischer Datensatz-Split
🏋️ Trainings-Set (60–80%)
Das Modell lernt AUSSCHLIESSLICH auf diesen Daten. Gewichte werden angepasst.
Regel: Einzige Daten, die das Modell "sehen" darf beim Lernen.
✓ Erlaubt:
• Alle Daten nutzen
• Augmentation erlaubt
• Shuffle zwischen Epochen
✗ Verboten:
• Validation/Test-Daten hier mischen
🔍 Validation-Set (10–20%)
Nach jeder Epoche gemessen. Dient zur Hyperparameter-Auswahl und Early Stopping. Modell lernt NICHT darauf.
Regel: Darf mehrfach verwendet werden, aber nicht zum Lernen!
✓ Erlaubt:
• Hyperparameter nach val_loss wählen
• Early Stopping basierend auf val_loss
• Checkpoint-Auswahl
✗ Verboten:
• Auf Validation-Daten trainieren
• Test-Daten als Validation verwenden
🎯 Test-Set (10–20%)
Nur EINMAL am absoluten Ende verwendet. Gibt die ehrliche finale Performance-Schätzung.
Regel: Das Test-Set ist heilig. Nur EINMAL anfassen!
✓ Erlaubt:
• Einmalig am Ende evaluieren
• Finale Publikation/Report
✗ Verboten:
• Mehrmals evaluieren
• Hyperparameter danach noch anpassen
• Als zweites Validation nutzen
Data Leakage – der häufigste und verheerendste Fehler
Folge: Metriken sind optimistisch und völlig wertlos. Das Modell hat "gespickt".
Häufige Ursache: Normalisierung/Standardisierung über gesamtes Dataset statt nur Trainingsdaten. Korrekt: Scaler nur auf Trainingsdaten fitten, dann auf Val/Test anwenden.
Cross-Validation: Wenn Daten knapp sind
Bei sehr wenig Daten kann ein einzelner Split unrepräsentativ sein. K-Fold Cross-Validation hilft:
K-Fold Cross-Validation (k=5): Fold 1: [████ Train ████ Train ████ Train ████ Train] [Val] Fold 2: [████ Train ████ Train ████ Train] [Val] [████ Train] Fold 3: [████ Train ████ Train] [Val] [████ Train ████ Train] ... → 5 Modelle trainieren, 5 Val-Scores mitteln → Robustere Schätzung der wahren Performance → Aber: 5× so teuer! Empfohlen wenn: Dataset < 1.000 Beispiele
Stratified Split – unverzichtbar bei Imbalance
Bei unbalancierten Klassen sicherstellt ein stratified split, dass alle Splits die gleiche Klassenverteilung haben. Ohne Stratifikation kann ein Split zufällig sehr wenige Beispiele einer seltenen Klasse im Validation-Set haben.
# Zufälliger Split (schlecht bei Imbalance): Train: 95% negativ, 5% positiv Val: 80% negativ, 20% positiv ← zufällig unrepräsentativ! # Stratified Split (immer empfohlen): Train: 95% negativ, 5% positiv Val: 95% negativ, 5% positiv ← gleiche Verteilung ✓
FrameTrain-Empfehlung