Startseite / Artikel / Residualverbindungen erklärt: Warum sich tiefe Transformer überhaupt trainieren lassen

Residualverbindungen erklärt: Warum sich tiefe Transformer überhaupt trainieren lassen

Warum stumpfes Stapeln von Schichten das Training bricht, wie Skip-Verbindungen x + F(x) den Gradientenfluss retten, wie Pre-LayerNorm-Blöcke sie nutzen, und eine kurze PyTorch-Implementierung.

1031 Wörter

Stapelt man naiv Dutzende Schichten übereinander, wird das Training instabil. Residualverbindungen, auch Shortcuts genannt, lösen das, indem sie Informationen und Gradienten direkt durch das Netz wandern lassen.

Warum einfaches Stapeln scheitert

An diesem Punkt besteht ein Transformer-Block aus drei Teilen: Multi-Head-Self-Attention, Layer-Normalisierung und einem Feed-Forward-Netz. Es liegt nahe, sie einfach nacheinander zu wiederholen:

Input
   │
   ▼
Attention
   │
   ▼
Feed Forward
   │
   ▼
Attention
   │
   ▼
Feed Forward
   │
   ▼
...

Das trainiert schlecht. Je tiefer ein Netz wird, desto schwerer lässt es sich optimieren, und das war eines der größten Hindernisse im Deep Learning, bis 2015 mit ResNet die Residualverbindungen kamen. Fast jeder aktuelle Transformer, darunter GPT, BERT, LLaMA, Claude und Gemini, ist auf sie angewiesen.

Beginnen wir mit einem Netz aus zwei Schichten:

Input  ↓Layer 1  ↓Layer 2  ↓Output

Das zu trainieren ist meist problemlos. Stellen Sie sich jetzt 96 Schichten vor:

Input↓Layer 1↓Layer 2↓...↓Layer 96↓Output

Jede Schicht transformiert die Ausgabe der vorherigen. Bei der Backpropagation muss der Gradient auf dem Weg nach unten durch jede Schicht zurück, und unterwegs kann er gegen null schrumpfen (verschwinden), unbegrenzt wachsen (explodieren) oder immer verrauschter werden. Am Ende lernen die ersten Schichten kaum noch etwas.

Stille Post

Denken Sie an eine Nachricht, die durch fünfzig Personen weitergeflüstert wird:

Person 1↓Person 2↓Person 3↓...↓Person 50

Am Ende hat sie sich stark verändert. Teile fehlen, Teile sind verdreht. Ein tiefes Netz verhält sich ähnlich, denn jede Schicht verschiebt die Repräsentation ein wenig, und nach genügend vielen davon kann das nützliche Signal verblassen.

Eine Abkürzung einbauen

Was wäre, wenn die Daten nicht durch jede Schicht müssten, sondern sie auch umgehen könnten?

Input
  │
  ├──────────────┐
  ▼              │
Layer            │
  ▼              │
Output           │
  │              │
  └────── Add ◄──┘
        │
        ▼
Final Output

Die ursprüngliche Eingabe hat nun immer einen direkten Weg zu späteren Schichten, und diese kleine Änderung verändert das Verhalten tiefer Netze grundlegend.

Die Mathematik

Angenommen, eine Schicht berechnet Folgendes:

F(x)

Ohne Residualverbindung ist die Ausgabe einfach das Ergebnis der Schicht:

Output = F(x)

Mit einer wird die Ausgabe zu:

Output = x + F(x)

Die Eingabe wird direkt auf die transformierte Ausgabe addiert. Diese Operation heißt Skip-Verbindung oder Shortcut-Verbindung.

Warum das hilft

Angenommen, eine bestimmte Schicht hat nichts Nützliches beizutragen. In einem einfachen Netz müsste sie irgendwie lernen, sich wie eine Identitätsfunktion zu verhalten, und das ist erstaunlich schwer. Mit einer Residualverbindung gibt es die Identität gratis. Die Schicht muss nur lernen:

F(x) = 0

sodass:

Output = x + 0 = x

Die Eingabe geht unverändert durch, und die Optimierung wird viel einfacher.

Die Differenz lernen

Daher kommt der Name. Eine Schicht muss nicht die gesamte Transformation lernen, sondern nur die Differenz, das Residuum, zwischen Eingabe und Zielausgabe. Bildbearbeitung ist ein guter Vergleich: Man malt selten das ganze Bild neu, man passt es an, hellt es auf, erhöht den Kontrast oder schärft Kanten. Auch eine Transformer-Schicht muss selten die ganze Repräsentation ersetzen. Sie muss sie nur ein wenig verbessern.

Zwei Abkürzungen pro Block

Jeder Transformer-Block enthält zwei Residualverbindungen. Die erste umschließt die Attention-Schicht:

Input
  │
  ├──────────────┐
  ▼              │
Multi-Head Attention
  ▼              │
 Add ◄───────────┘
  │
  ▼
Output

Die zweite umschließt das Feed-Forward-Netz:

Input
  │
  ├──────────────┐
  ▼              │
Feed Forward Network
  ▼              │
 Add ◄───────────┘
  │
  ▼
Output

Pre-LayerNorm

Aktuelle GPT-Modelle verwenden das Pre-LayerNorm-Layout, das so berechnet wird:

Input
   │
   ▼
LayerNorm
   │
   ▼
Multi-Head Attention
   │
   ▼
Add Residual
   │
   ▼
LayerNorm
   │
   ▼
Feed Forward Network
   │
   ▼
Add Residual
   │
   ▼
Output

LayerNorm läuft hier vor jeder Teilschicht, nicht danach, und diese Anordnung macht das Training tiefer Transformer spürbar stabiler.

Gradientenfluss

Bei der Backpropagation hat der Gradient jetzt zwei Wege:

Gradient↓Transformer Layer↓Residual Path

Erweist sich die Haupttransformation als schwer optimierbar, bietet die Abkürzung trotzdem einen anderen Rückweg, sodass der Gradient nicht vollständig verschwinden kann. Analytisch gesprochen ist die Ableitung von

x + F(x)

gleich

1 + F'(x)

Diese konstante 1 ist enorm wichtig. Selbst wenn

F'(x)

sehr klein wird, hat der Gradient über die Identitätsverbindung noch einen direkten Weg. Das ist einer der Hauptgründe, warum Residualnetze erfolgreich trainieren.

Ein Zahlenbeispiel

Angenommen, das Eingabe-Embedding ist:

[0.5, 1.2, -0.3]

und die Attention liefert:

[0.1, -0.2, 0.4]

Statt die Eingabe zu ersetzen, werden beide addiert:

[0.5, 1.2, -0.3] + [0.1, -0.2, 0.4] = [0.6, 1.0, 0.1]

Die ursprüngliche Information bleibt erhalten, während die neue hinzugemischt wird.

In PyTorch

Im Code kostet das fast nichts:

x = x + self.attention(
    self.layer_norm1(x)
)
x = x + self.ffn(
    self.layer_norm2(x)
)

Diese Addition ist eine der bedeutendsten Operationen der gesamten Architektur.

Ein vollständiger Block

                Input
                  │
                  ▼
             LayerNorm
                  │
                  ▼
        Multi-Head Attention
                  │
                  ▼
           Add Residual
                  │
                  ▼
             LayerNorm
                  │
                  ▼
      Feed-Forward Network
                  │
                  ▼
           Add Residual
                  │
                  ▼
                Output

Moderne LLMs wiederholen diese Struktur Dutzende oder sogar Hunderte Male.

Was sich mit und ohne ändert

Ohne Residualverbindungen sind tiefe Netze schwer zu optimieren, Gradienten verschwinden leichter, Informationen gehen nach und nach verloren, und zusätzliche Schichten verschlechtern die Ergebnisse oft. Mit ihnen fließt Information direkt durch das Netz, Gradienten bleiben stabil, tiefere Modelle werden trainierbar und die Optimierung wird deutlich einfacher. Residuales Lernen ist einer der Durchbrüche, die heutige große Sprachmodelle erst möglich gemacht haben.