Normalisierung und Residuen
Zwei Bausteine, ohne die tiefe Netze nicht trainierbar wären: die Skip-Verbindung und die Schichtnormalisierung, und warum ihre Reihenfolge zählt.
Die Idee
Zwei Probleme entstehen, sobald ein Netz tief wird. Erstens verschwindet der Gradient auf dem langen Rückweg. Zweitens driften die Werte in den mittleren Schichten auseinander, bis nichts mehr davon brauchbar ist.
Die Residualverbindung löst das erste: Sie legt eine Abkürzung um jeden Block, auf der der Gradient ungedämpft zurückfließen kann. Die Normalisierung löst das zweite: Sie zieht die Werte nach jeder Schicht wieder auf einen mittleren Bereich zusammen.
Die Varianten
| Verfahren | Normiert über | Wo eingesetzt |
|---|---|---|
| BatchNorm | Den Batch, je Kanal | CNN, feste Batch-Größen |
| LayerNorm | Alle Merkmale eines Beispiels | Transformer |
| RMSNorm | Wie LayerNorm, ohne Mittelwertabzug | Aktuelle Sprachmodelle |
| GroupNorm | Kanalgruppen je Beispiel | Bildmodelle mit kleinen Batches |
BatchNorm hat einen praktischen Nachteil, der oft übersehen wird: Es verhält sich im Training anders als in der Anwendung, weil dort laufende Mittelwerte benutzt werden. Ein Modell, das im Training gut aussieht und in der Anwendung nicht, hat häufig genau hier sein Problem.
import numpy as np
def layernorm(x, eps=1e-5):
# Ueber die Merkmalsachse, je Beispiel getrennt.
mu = x.mean(axis=-1, keepdims=True)
var = x.var(axis=-1, keepdims=True)
return (x - mu) / np.sqrt(var + eps)
def rmsnorm(x, eps=1e-6):
# Kein Mittelwertabzug: spart eine Reduktion und wirkt praktisch gleich gut.
return x / np.sqrt((x ** 2).mean(axis=-1, keepdims=True) + eps)Die Formeln
RMSNorm spart den Mittelwert und damit eine Reduktion über die Merkmalsachse. Bei großen Modellen sind das messbare Prozente der Laufzeit, ohne dass die Güte leidet: weshalb aktuelle Modelle fast durchgehend darauf umgestellt haben.
Pre-Norm gegen Post-Norm
Der Unterschied ist entscheidend. Bei Pre-Norm bleibt der Residualpfad x → x
frei von jeder Normalisierung, sodass der Gradient von der letzten zur ersten
Schicht ungedämpft durchläuft. Bei Post-Norm liegt in jedem Schritt eine
Normalisierung auf diesem Pfad, was das Training tiefer Modelle ohne sorgfältig
abgestimmte Aufwärmphase unbrauchbar instabil macht.
Der Preis von Pre-Norm ist, dass die Aktivierungsnorm über die Schichten wächst, weil in jedem Block etwas addiert wird. Übliche Gegenmaßnahme ist eine abschließende Normalisierung vor der Ausgabeschicht.
Warum Residuen den Gradienten retten
Über L Blöcke hinweg ist das Produkt Π(I + ∂F/∂x), und der Term aus lauter
Einsen bleibt darin immer erhalten. Ohne Residuum wäre es Π(∂F/∂x), und dieses
Produkt geht bei kleinen Faktoren gegen null. Das ist der gesamte mathematische
Gehalt der Skip-Verbindung, und er erklärt, warum Netze mit über hundert
Schichten seit ihrer Einführung trainierbar sind.
Passende Kurse und Quellen
Batch Normalization
Warum das Normalisieren von Zwischenwerten tiefes Training überhaupt erst stabil macht.
Für alle, die wissen wollen, warum Normalisierung tiefes Training erst möglich macht.
Deep Residual Learning
Die Abkürzung über Schichten hinweg, die Netze mit hundert Schichten trainierbar machte. Heute in jeder Architektur enthalten.
Für das Verständnis, warum Netze überhaupt tief werden konnten.