Mathe: Cross-Entropy & Gradient Descent
Die Intuition war: gewichtete Summe + Sigmoid. Jetzt die Frage, die in jeder Prüfung kommt: Woher kommen die Gewichte? Antwort: aus einem Optimierungsproblem — Loss-Funktion definieren, Gradient ausrechnen, bergab laufen.
Trainingsziel: Finde Gewichte w und Bias b, die den Trainingsdaten die höchste Wahrscheinlichkeit geben (Maximum Likelihood) — gleichbedeutend mit: minimiere die Cross-Entropy.
Schritt 1: Das Modell
z = w·x + b p̂ = σ(z) = 1 / (1 + e−z)
x ist unser Feature-Vektor (512 Histogramm-Werte), w hat dieselbe Länge, p̂ ist die vorhergesagte Wahrscheinlichkeit für „krank“ (binärer Fall — Softmax kommt unten).
Schritt 2: Die Loss-Funktion (Binary Cross-Entropy)
L(w, b) = −(1/n) Σᵢ [ yᵢ · log(p̂ᵢ) + (1 − yᵢ) · log(1 − p̂ᵢ) ]
Lies es so: Für ein krankes Blatt (y=1) zählt nur −log(p̂) — je näher p̂ an 1, desto kleiner die Strafe. Für ein gesundes (y=0) zählt −log(1−p̂). Entscheidend ist die Form der Strafe: log explodiert nahe 0. Ein Modell, das sich mit p̂ = 0,99 irrt, zahlt dafür drastisch — selbstbewusst falsch ist die teuerste Art, falsch zu sein.
Schritt 3: Der Gradient
Das Schöne an der Kombination Sigmoid + Cross-Entropy: Beim Ableiten kürzt sich fast alles weg und übrig bleibt:
∂L/∂w = (1/n) Σᵢ (p̂ᵢ − yᵢ) · xᵢ ∂L/∂b = (1/n) Σᵢ (p̂ᵢ − yᵢ)
Der Gradient ist einfach Fehler mal Input: Wo das Modell daneben liegt (p̂ − y groß), werden genau die Gewichte der Features korrigiert, die an dieser Vorhersage beteiligt waren.
Schritt 4: Gradient Descent
w ← w − η · ∂L/∂w
- Gewichte zufällig (oder mit 0) initialisieren.
- Vorhersagen für die Trainingsdaten berechnen.
- Gradient ausrechnen — die Richtung des steilsten Anstiegs.
- Einen kleinen Schritt (Lernrate η) in die Gegenrichtung gehen.
- Wiederholen, bis sich der Loss kaum noch bewegt.
In scikit-learn übernehmen das Solver wie lbfgs oder saga — cleverere Varianten desselben Prinzips. Beim CNN-Training begegnet dir exakt derselbe Mechanismus wieder, nur mit Millionen Parametern statt 512.
Von 2 auf 38 Klassen: Softmax
p̂ₖ = ezₖ / Σⱼ ezⱼ mit zₖ = wₖ·x + bₖ
Pro Klasse ein eigener Gewichtsvektor → 38 Scores, die Softmax normiert sie zu einer Verteilung. Die Loss-Funktion wird zur kategorischen Cross-Entropy: −log(p̂ der wahren Klasse). Bei 512 Features sind das 38 × 513 ≈ 19.500 lernbare Parameter — winzig im Vergleich zu jedem CNN.
🤔Warum eigentlich? — Warum nicht einfach MSE als Loss?›
Mean Squared Error funktioniert formal, hat aber zwei Probleme. Erstens: MSE durch die Sigmoid ist nicht konvex — die Loss-Landschaft hat lokale Mulden, Gradient Descent kann steckenbleiben. Cross-Entropy + Sigmoid ist konvex: ein einziges globales Minimum, garantiert findbar. Zweitens: Bei MSE wird der Gradient gerade dann winzig, wenn das Modell selbstbewusst falsch liegt (Sigmoid-Sättigung) — das Lernen stirbt ab, wo es am nötigsten wäre. Cross-Entropy hält den Gradienten dort groß.
⚠️Häufiger Denkfehler — p̂ = 0,93 heißt nicht: zu 93 % sicher wahr›
Die Softmax-Ausgabe ist eine modellinterne Größe, keine geprüfte Wahrscheinlichkeit. Ein Modell kann systematisch überkonfident sein: im Schnitt 95 % behaupten, aber nur 80 % Trefferquote liefern. Wer die Werte ernsthaft als Wahrscheinlichkeiten nutzen will (z.B. „nur ab 90 % automatisch handeln“), muss Kalibrierung messen (Reliability Diagram) und ggf. nachkalibrieren (Platt Scaling, Isotonic Regression).
🔬Tiefer rein — Regularisierung steckt schon in der Loss›
scikit-learn minimiert standardmäßig nicht die reine Cross-Entropy, sondern L + (1/C) · ||w||² — eine L2-Strafe auf große Gewichte. Statistisch entspricht das einem Gauß-Prior auf w (MAP-Schätzung statt Maximum Likelihood): Ohne Gegenbeweis sollen Gewichte klein bleiben. Das verhindert, dass einzelne, zufällig im Training nützliche Histogramm-Bins absurd hohe Gewichte bekommen — der wichtigste Schutz gegen Overfitting bei vielen Features. Der Parameter C steuert die Stärke; die Tuning-Lektion dreht genau an diesem Knopf.
🔗Hängt zusammen mit… — Hängt zusammen mit…›
Der Praxis-Lektion (dieselbe Mathematik in fünf Zeilen scikit-learn), dem CNN-Training (gleiche Loss, gleicher Gradient Descent, nur tieferes Modell) und der SVM — die ersetzt die Cross-Entropy durch den Hinge-Loss und bekommt dadurch einen völlig anderen Charakter.