Transformer — Komplette Mathematik

Alle Formeln und Berechnungen für „Die Katze sitzt auf der Matte" · 4 Dimensionen · 2 Heads · 1 Block

0 Modell-Parameter

ParameterUnser ModellGPT-2 SmallGPT-4 (geschätzt)
Embedding-Dimension (dmodel)4768~12.288
Attention Heads (h)212~96
Dimension pro Head (dk = dmodel/h)264~128
FFN innere Dimension (dff)83072~49.152
Transformer-Blöcke (L)112~120
Vokabular (V)650.257~100.000
Kontext-Länge (n)61.024128.000+

1 Tokenizer (Word-Level)

Text → Split(Leerzeichen) → Token-IDs aus Vokabular
WortDieKatzesitztaufderMatte
Token-ID012345
Input-Sequenz X = [0, 1, 2, 3, 4, 5]   (Länge n = 6)

2 Embedding-Lookup

Ei = EmbeddingTable[token_idi]
Tabelle hat Größe V × dmodel = 6 × 4
TokenIDd₁d₂d₃d₄
Die00.90.10.00.1
Katze10.00.90.10.2
sitzt20.00.10.90.0
auf30.50.00.30.4
der40.90.10.00.1
Matte50.00.00.00.9

3 Positional Encoding

PE(pos, 2i) = sin(pos / 100002i/d)    PE(pos, 2i+1) = cos(pos / 100002i/d)
d = 4 → Teiler: i=0 → 10000⁰ = 1,   i=1 → 10000⁰·⁵ = 100
PosWortsin(pos/1)cos(pos/1)sin(pos/100)cos(pos/100)
0Die0.0001.0000.0001.000
1Katze0.8410.5400.0101.000
2sitzt0.909-0.4160.0201.000
3auf0.141-0.9900.0301.000
4der-0.757-0.6540.0400.999
5Matte-0.9590.2840.0500.999
Xfinal = Embedding + PE   (elementweise Addition)

Ergebnis: Input-Matrix X (6 × 4) — gerundet

PosTokend₁d₂d₃d₄
0Die0.91.10.01.1
1Katze0.81.40.11.2
2sitzt0.9-0.30.91.0
3auf0.6-1.00.31.4
4der0.1-0.60.01.1
5Matte-1.00.30.11.9

4 Masked Multi-Head Self-Attention

Attention(Q, K, V) = softmax( (Q · KT) / √dk + Mask ) · V
dk = 2,   √dk = √2 ≈ 1.41

W-Matrizen (4 × 2 pro Head)

Head 1

WQ1WK1WV1
d₁100000
d₂010010
d₃001000
d₄000101
Q₁=[d₁,d₂]   K₁=[d₃,d₄]   V₁=[d₂,d₄]

Head 2

WQ2WK2WV2
d₁001010
d₂000100
d₃100001
d₄010000
Q₂=[d₃,d₄]   K₂=[d₁,d₂]   V₂=[d₁,d₃]

Q, K, V für alle Tokens

Token Q₁ K₁ V₁ Q₂ K₂ V₂
Die 0.91.10.01.11.11.1 0.01.10.91.10.90.0
Katze 0.81.40.11.21.41.2 0.11.20.81.40.80.1
sitzt 0.9-0.30.91.0-0.31.0 0.91.00.9-0.30.90.9
auf 0.6-1.00.31.4-1.01.4 0.31.40.6-1.00.60.3
der 0.1-0.60.01.1-0.61.1 0.01.10.1-0.60.10.0
Matte -1.00.30.11.90.31.9 0.11.9-1.00.3-1.00.1

Causal Mask (Dreiecksmatrix)

Mask(i,j) = 0 wenn j ≤ i,   -∞ wenn j > i
DieKatsitaufderMat
Die0-∞-∞-∞-∞-∞
Kat00-∞-∞-∞-∞
sit000-∞-∞-∞
auf0000-∞-∞
der00000-∞
Mat000000

Head 1: Raw Scores = Q₁ · K₁T

Score(i,j) = Q₁i · K₁j = Q₁i[0]×K₁j[0] + Q₁i[1]×K₁j[1]
Q₁·K₁TDie
[0.0,1.1]
Katze
[0.1,1.2]
sitzt
[0.9,1.0]
auf
[0.3,1.4]
der
[0.0,1.1]
Matte
[0.1,1.9]
Die [0.9,1.1]1.21-∞-∞-∞-∞-∞
Katze [0.8,1.4]1.541.76-∞-∞-∞-∞
sitzt [0.9,-0.3]-0.33-0.270.51-∞-∞-∞
auf [0.6,-1.0]-1.10-1.14-0.46-1.22-∞-∞
der [0.1,-0.6]-0.66-0.71-0.51-0.81-0.66-∞
Matte [-1.0,0.3]0.330.26-0.600.120.330.47

Head 1: Scaled Scores (÷ √2 = 1.41)

÷ 1.41DieKatzesitztaufderMatte
Die0.86-∞-∞-∞-∞-∞
Katze1.091.25-∞-∞-∞-∞
sitzt-0.23-0.190.36-∞-∞-∞
auf-0.78-0.81-0.33-0.87-∞-∞
der-0.47-0.50-0.36-0.57-0.47-∞
Matte0.230.18-0.430.090.230.33

Head 1: Attention Weights (Softmax pro Zeile)

softmax(zi) = ezi / Σj ezj    (nur über sichtbare Positionen, e-∞ = 0)
Weights₁DieKatzesitztaufderMatte
Die1.00000000
Katze0.4600.5400000
sitzt0.2760.2880.436000
auf0.2740.2660.3060.15400
der0.2110.2050.2150.1640.2050
Matte0.1900.1810.1230.1650.1900.151

Head 1: Output = Weights₁ · V₁

Output₁i = Σj weight₁(i,j) × V₁j
TokenOutput₁ [v₁, v₂]Berechnung (Hauptbeiträge)
Die[1.10, 1.10]1.0×[1.1,1.1]
Katze[1.26, 1.15]0.46×[1.1,1.1] + 0.54×[1.4,1.2]
sitzt[0.58, 1.09]0.28×[1.1,1.1] + 0.29×[1.4,1.2] + 0.44×[-0.3,1.0]
auf[0.38, 1.14]0.27×[1.1,1.1] + 0.27×[1.4,1.2] + 0.31×[-0.3,1.0] + 0.15×[-1.0,1.4]
der[0.26, 1.12]Alle 5 sichtbaren, relativ gleichverteilt
Matte[0.27, 1.27]Alle 6, relativ gleichverteilt

Head 2: Raw Scores = Q₂ · K₂T (nach Mask + ÷ √2)

Scores₂ (skaliert)DieKatzesitztaufderMatte
Die Q₂=[0.0,1.1]0.78-∞-∞-∞-∞-∞
Katze Q₂=[0.1,1.2]1.001.25-∞-∞-∞-∞
sitzt Q₂=[0.9,1.0]1.351.500.36-∞-∞-∞
auf Q₂=[0.3,1.4]1.281.57-0.110.87-∞-∞
der Q₂=[0.0,1.1]0.781.09-0.230.42-0.40-∞
Matte Q₂=[0.1,1.9]1.541.940.221.280.800.48

Head 2: Attention Weights (Softmax)

Weights₂DieKatzesitztaufderMatte
Die1.00000000
Katze0.4380.5620000
sitzt0.3590.4180.223000
auf0.2730.3660.0680.29300
der0.2520.3440.0920.1760.1360
Matte0.2310.3430.0620.1780.1100.076

Head 2: Output = Weights₂ · V₂

TokenOutput₂ [v₁, v₂]
Die[0.90, 0.00]
Katze[0.84, 0.06]
sitzt[0.86, 0.24]
auf[0.78, 0.17]
der[0.73, 0.13]
Matte[0.56, 0.13]

Concatenation: Head 1 ⊕ Head 2 = Attention-Output (4D)

MultiHead(X) = Concat(Head₁, Head₂) · WO
WO = I₄ (Identität) in unserem Modell
TokenHead 1Head 2Attention-Output [d₁, d₂, d₃, d₄]
Die[1.10, 1.10][0.90, 0.00][1.10, 1.10, 0.90, 0.00]
Katze[1.26, 1.15][0.84, 0.06][1.26, 1.15, 0.84, 0.06]
sitzt[0.58, 1.09][0.86, 0.24][0.58, 1.09, 0.86, 0.24]
auf[0.38, 1.14][0.78, 0.17][0.38, 1.14, 0.78, 0.17]
der[0.26, 1.12][0.73, 0.13][0.26, 1.12, 0.73, 0.13]
Matte[0.27, 1.27][0.56, 0.13][0.27, 1.27, 0.56, 0.13]

5 Add & Layer Norm (1. Mal)

Z = LayerNorm(X + MultiHead(X))

Add: X + Attention-Output

TokenX (Input)+ Attn-Output= Summe
Die[0.9, 1.1, 0.0, 1.1][1.10, 1.10, 0.90, 0.00][2.00, 2.20, 0.90, 1.10]
Katze[0.8, 1.4, 0.1, 1.2][1.26, 1.15, 0.84, 0.06][2.06, 2.55, 0.94, 1.26]
sitzt[0.9, -0.3, 0.9, 1.0][0.58, 1.09, 0.86, 0.24][1.48, 0.79, 1.76, 1.24]
auf[0.6, -1.0, 0.3, 1.4][0.38, 1.14, 0.78, 0.17][0.98, 0.14, 1.08, 1.57]
der[0.1, -0.6, 0.0, 1.1][0.26, 1.12, 0.73, 0.13][0.36, 0.52, 0.73, 1.23]
Matte[-1.0, 0.3, 0.1, 1.9][0.27, 1.27, 0.56, 0.13][-0.73, 1.57, 0.66, 2.03]

Layer Norm (Katze als Beispiel)

LayerNorm(x) = (x - μ) / σ
μ = Mittelwert über alle Dimensionen,   σ = Standardabweichung
Katze Summe = [2.06, 2.55, 0.94, 1.26]
μ = (2.06 + 2.55 + 0.94 + 1.26) / 4 = 1.70
σ = √(((2.06-1.70)² + (2.55-1.70)² + (0.94-1.70)² + (1.26-1.70)²) / 4) = √0.406 = 0.64
Normalisiert = [(2.06-1.70)/0.64, (2.55-1.70)/0.64, (0.94-1.70)/0.64, (1.26-1.70)/0.64] = [0.56, 1.33, -1.19, -0.69]
TokenμσNach LayerNorm [d₁, d₂, d₃, d₄]
Die1.550.56[0.80, 1.16, -1.16, -0.80]
Katze1.700.64[0.56, 1.33, -1.19, -0.69]
sitzt1.320.35[0.46, -1.51, 1.26, -0.23]
auf0.940.52[0.08, -1.54, 0.27, 1.21]
der0.710.32[-1.09, -0.59, 0.06, 1.63]
Matte0.880.98[-1.64, 0.70, -0.22, 1.17]

6 Feed-Forward Network

FFN(z) = ReLU(z · W₁ + b₁) · W₂ + b₂
W₁: 4×8,   W₂: 8×4,   b₁ = b₂ = 0,   ReLU(x) = max(0, x)

W₁ (4×8) — Aufblasen

h₁h₂h₃h₄h₅h₆h₇h₈
d₁10-10100-1
d₂010-10100
d₃00100010
d₄000100-11

W₂ (8×4) — Komprimieren

d₁d₂d₃d₄
h₁1000
h₂0100
h₃0000
h₄0000
h₅0010
h₆0001
h₇0000
h₈0000

FFN Berechnung (Katze)

Input = [0.56, 1.33, -1.19, -0.69]

×W₁ = [0.56, 1.33, -1.75, -2.02, 0.56, 1.33, -0.50, -1.25]
ReLU = [0.56, 1.33, 0, 0, 0.56, 1.33, 0, 0]
×W₂ = [0.56, 1.33, 0.56, 1.33]

7 Add & Layer Norm (2. Mal)

BlockOutput = LayerNorm(Z + FFN(Z))
Katze: Z + FFN(Z) = [0.56, 1.33, -1.19, -0.69] + [0.56, 1.33, 0.56, 1.33] = [1.12, 2.66, -0.63, 0.64]
μ = 0.95, σ = 1.18 → LayerNorm = [0.14, 1.45, -1.34, -0.26]
Block-Output für alle Tokens (nach 1 Block):
Tokend₁d₂d₃d₄
Die0.171.46-1.34-0.29
Katze0.141.45-1.34-0.26
sitzt0.25-1.051.25-0.44
auf-0.15-1.230.121.27
der-1.12-0.27-0.071.46
Matte-1.520.84-0.180.86
In einem echten Transformer gehen diese Vektoren in Block 2, dann Block 3, ... bis Block 12. Wir nehmen den Output direkt für die Output-Schicht.

8 Output-Schicht: Logits → Softmax → nächstes Token

Logiti = VektorLetztes · Embeddingi   (Skalarprodukt)
Nur der letzte Token-Vektor (Matte) wird verwendet

Vektor von „Matte" nach Block 1: [-1.52, 0.84, -0.18, 0.86]

TokenEmbeddingSkalarproduktLogit
Die[0.9, 0.1, 0.0, 0.1](-1.52×0.9)+(0.84×0.1)+(-0.18×0.0)+(0.86×0.1)-1.20
Katze[0.0, 0.9, 0.1, 0.2](0)+(0.84×0.9)+(-0.18×0.1)+(0.86×0.2)0.91
sitzt[0.0, 0.1, 0.9, 0.0](0)+(0.84×0.1)+(-0.18×0.9)+(0)-0.08
auf[0.5, 0.0, 0.3, 0.4](-1.52×0.5)+(0)+(-0.18×0.3)+(0.86×0.4)-0.47
der[0.9, 0.1, 0.0, 0.1](-1.52×0.9)+(0.84×0.1)+(0)+(0.86×0.1)-1.20
Matte[0.0, 0.0, 0.0, 0.9](0)+(0)+(0)+(0.86×0.9)0.77

Softmax (T = 1.0)

P(tokeni) = elogiti / T / Σ elogitj / T
TokenLogitelogitWahrscheinlichkeit
Die-1.200.3014.6%
Katze0.912.48437.9%
sitzt-0.080.92314.1%
auf-0.470.6259.5%
der-1.200.3014.6%
Matte0.772.16033.0%
Summe6.794≈ 100%
Vorhersage: „Katze" (37.9%) — gefolgt von „Matte" (33.0%)
Der Transformer sagt nach nur 1 Block bereits ein inhaltlich passendes Token vorher.

Mit Temperature

TokenT = 0.5 (fokussiert)T = 1.0 (normal)T = 2.0 (kreativ)
Die1.4%4.6%8.7%
Katze52.7%37.9%24.7%
sitzt7.3%14.1%16.3%
auf3.3%9.5%13.1%
der1.4%4.6%8.7%
Matte39.2%33.0%23.7%

Σ Alle Formeln auf einen Blick

# Schicht Formel Dimensionen
1 Tokenizer token_ids = tokenize(text) → (n,)
2 Embedding E = EmbTable[token_ids] → (n, d)
3 Pos. Encoding X = E + PE → (n, d)
4a Q, K, V Q = X·WQ, K = X·WK, V = X·WV → (n, dk) je
4b Attention Score S = (Q·KT) / √dk → (n, n)
4c Mask S[i,j] = -∞   wenn j > i → (n, n)
4d Softmax A = softmax(S) = eS / ΣeS → (n, n)
4e Attention Out Head = A · V → (n, dk)
4f Multi-Head MH = Concat(Head₁,...,Headh) · WO → (n, d)
5a Add & Norm 1 Z = LayerNorm(X + MH) → (n, d)
6a FFN FFN = ReLU(Z·W₁+b₁) · W₂+b₂ d→dff→d
5b Add & Norm 2 Out = LayerNorm(Z + FFN(Z)) → (n, d)
↑ Schritte 4–6 wiederholen sich L Mal (12× bei GPT-2) ↑
7 Logits logits = Out[-1] · EmbTableT → (V,)
8 Wahrsch. P = softmax(logits / T) → (V,)
9 Auswahl next_token = sample(P) → 1 Token

Parameterzählung

KomponenteFormelUnser ModellGPT-2 Small
Embedding-TabelleV × d6 × 4 = 2450.257 × 768 = 38.6M
Positional Encodingberechnet01.024 × 768 = 0.8M *
WQ, WK, WV (alle Heads)3 × d × d3 × 4 × 4 = 483 × 768² = 1.8M
WOd × d4 × 4 = 16768² = 0.6M
FFN (W₁ + W₂)d×dff + dff×d4×8 + 8×4 = 642 × 768 × 3072 = 4.7M
LayerNorm (γ, β)2 × 2 × d162 × 2 × 768 = 3K
Pro Block144~7.1M
× L Blöcke× 1 = 144× 12 = 85M
+ Embedding+ 39.4M
Gesamt~168~124M

* GPT-2 nutzt gelernte Positional Embeddings statt Sinus/Cosinus

Komplette Mathematik eines Transformer-Blocks — berechenbar auf Papier.
David & Claude · April 2026