Matrixaddition und Matrixmultiplikation
Nachdem du Vektoroperationen verstanden hast, steige zu Matrizen auf. Die Matrixmultiplikation ist der Schlüssel zum Verständnis der Vorwärtspropagation in neuronalen Netzen — das Wesen einer vollständig verbundenen Schicht ist die Matrixmultiplikation.
Matrixaddition: Addition entsprechender Positionen
Bei zwei Matrizen mit derselben Form addierst du die Elemente an entsprechenden Positionen — so intuitiv wie die Vektoraddition.
Matrixmultiplikation: Skalarprodukt von Zeilen und Spalten
Die Matrixmultiplikation ist nicht so einfach wie "entsprechende Positionen multiplizieren". Warum?
Die tiefere Bedeutung einer Matrix ist eine "lineare Transformation" — sie bildet einen Vektor auf einen anderen Vektor ab.
Die geometrische Bedeutung der Multiplikation zweier Matrizen AB ist: zuerst Transformation B anwenden, dann Transformation A anwenden. Daher muss die Rechenregel für AB die mathematische Struktur "zusammengesetzter Transformationen" widerspiegeln, nicht eine einfache elementweise Multiplikation.
Zum Beispiel: A steht für "horizontale Streckung um das 2-Fache", B steht für "Drehung um 90° gegen den Uhrzeigersinn". AB bedeutet "zuerst drehen, dann strecken" — das ist völlig anders als BA (zuerst strecken, dann drehen), daher erfüllt die Matrixmultiplikation nicht das Kommutativgesetz.
Die Rechenregel lautet:
i-te Zeile →
j-te Spalte ↓
(i, j)
Das Skalarprodukt der i-ten Zeile der linken Matrix und der j-ten Spalte der rechten Matrix → der Wert an Position (i, j) der Ergebnismatrix.
Regeln zur Dimensionsübereinstimmung
\( (m \times \color{#e74c3c}{n}) \;\times\; (\color{#e74c3c}{n} \times p) = (m \times p) \)
Die Anzahl der Spalten von Amuss gleichder Anzahl der Zeilen von B sein. Die beiden rot hervorgehobenen n müssen gleich sein.
Die Form des Ergebnisses = (Anzahl der Zeilen von A, Anzahl der Spalten von B)
Matrixmultiplikationerfüllt nicht das Kommutativgesetz: AB ≠ BA (im Allgemeinen).
Die Dimensionen können sogar nicht zusammenpassen, wodurch BA undefiniert ist — hier machen Anfänger am leichtesten Fehler.
Das Wesen der Matrixmultiplikation ist die Komposition linearer Transformationen
Mit Matrix A multiplizieren → eine Transformation durchführen; dann mit Matrix B multiplizieren → die zweite Transformation durchführen.
Zwei Transformationen zusammensetzen = eine (BA) Transformation. Deshalb ist die Matrixmultiplikation so definiert.
Alltagsbeispiele
Umsatzberechnung eines Convenience-Stores
Verkaufsmatrix für drei Tage (Zeilen = Daten, Spalten = Produkte):
| Cola | Chips | Instant-Nudeln | |
|---|---|---|---|
| Montag | 10 | 5 | 3 |
| Dienstag | 8 | 7 | 4 |
| Mittwoch | 12 | 4 | 6 |
Preismatrix (Zeilen = Produkte, Spalten = Filialen):
| Filiale 1 | Filiale 2 | |
|---|---|---|
| Cola | 3 | 3.5 |
| Chips | 5 | 5.5 |
| Instant-Nudeln | 4 | 4.0 |
Verkaufsmatrix (3×3) × Preismatrix (3×2) = Umsatzmatrix (3×2).
Jede Zelle des Ergebnisses = Gesamtumsatz eines bestimmten Tages in einer bestimmten Filiale.
Mathematische Definition
Matrixaddition
\[ (\mathbf{A} + \mathbf{B})_{ij} = a_{ij} + b_{ij} \]Voraussetzung: A und B müssen exakt dieselbe Form haben.
Matrixmultiplikation
Sei A m×n, B n×p, dann ist C = AB m×p:
\[ c_{ij} = \sum_{k=1}^{n} a_{ik} b_{kj} \]Praktische Python-Übung
Beispiele
A_example = np.array([[10, 5, 3], [8, 7, 4], [12, 4, 6]])
price = np.array([[3, 3.5], [5, 5.5], [4, 4.0]])
# Matrixaddition (gleiche Form)
bonus = np.array([[1, 0, 1], [0, 1, 0], [1, 1, 0]])
total = A_example + bonus
print("A + bonus:\n", total)
# Matrixmultiplikation: (3×3) @ (3×2) = (3×2)
revenue = A_example @ price
print("\nUmsatzmatrix A @ price:\n", revenue)
print("Form:", revenue.shape)
# Position (0,0) manuell überprüfen
manual = A_example[0,0]*price[0,0] + A_example[0,1]*price[1,0] + A_example[0,2]*price[2,0]
print(f"\nManuelle Überprüfung [0,0]: {manual} == {revenue[0,0]}")
# Falle bei nicht übereinstimmenden Dimensionen
print(f"\nA-Form: {A_example.shape}") # (3, 3)
print(f"price.T-Form: {price.T.shape}") # (2, 3)
# A @ price.T → (3,3) @ (2,3) Nicht übereinstimmend!
# Korrekt: price.T @ A → (2,3) @ (3,3) = (2,3)
print(f"price.T @ A-Form: {(price.T @ A_example).shape}") # (2, 3)
收入矩阵 A @ price: [[67. 72. ] [75. 79.5] [80. 88. ]] 形状: (3, 2) A 形状: (3, 3) price.T 形状: (2, 3) price.T @ A 形状: (2, 3)
Interaktive Visualisierung der Matrixmultiplikation
Unten wird eine 2×2-Matrix A multipliziert mit einem 2×1-Vektor v demonstriert; beobachte, wie die lineare Transformation Punkte auf einem Kreis auf eine Ellipse abbildet:
Anwendungsszenarien in der KI
Fully Connected Layer = Matrixmultiplikation
nn.Linear(d_in, d_out)Die Essenz: Gewichtsmatrix W (d_out × d_in) multipliziert mit Eingabevektor x (d_in Dimensionen), ergibt Ausgabe (d_out Dimensionen).
Bei der Verarbeitung von Batch-Daten ist die Eingabe X eine (batch, d_in)-Matrix, und wir berechnen \( Y = XW^T \) oder \( Y = WX^T \). Dies ist eine einzelne Matrixmultiplikation, die die Vorwärtsberechnung für den gesamten Batch abschließt. GPUs verfügen über spezielle Hardwarebeschleunigung für Matrixmultiplikation (Tensor Core).
QK^T im Attention-Mechanismus
Im Transformer sind Q und K beide (seq_len, d_k)-Matrizen. \( QK^T \) ist seq_len×d_k multipliziert mit d_k×seq_len, was eine (seq_len, seq_len) Attention-Score-Matrix ergibt.
In großen Modellen auf GPT-4-Niveau kann seq_len 128K erreichen, und die Rechenkosten dieser Matrixmultiplikation machen einen großen Teil der gesamten Inferenzkosten aus. Der FlashAttention-Algorithmus optimiert speziell das Speicherzugriffsmuster dieser Matrixmultiplikation.
Implementierung der Faltung durch Matrixmultiplikation (im2col)
Die Faltungsoperation kann in eine Matrixmultiplikation erweitert werden: Entfalte das Eingabebild mit gleitenden Fenstern (im2col) zu einer großen Matrix, flache dann den Faltungskern zu einer Matrix ab und multipliziere die beiden. Dadurch kann die Faltung hochoptimierte GEMM-Bibliotheken (General Matrix Multiplication) zur Beschleunigung nutzen.
Matrixzerlegung beim LoRA-Fine-Tuning
LoRA fügt das Produkt zweier kleiner Matrizen A und B neben den vortrainierten Gewichten hinzu: \( W' = W + AB \). Hier ist AB eine Matrixmultiplikation – A ist d×r, B ist r×d, und das Produkt ist eine d×d-Matrix mit niedrigem Rang. Eine einzelne Matrixmultiplikation erreicht parameter-effizientes Fine-Tuning.
Weitere Erweiterungen