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:

Linke Matrix
i-te Zeile →
·
Rechte Matrix
j-te Spalte ↓
=
Ergebnis
(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):

ColaChipsInstant-Nudeln
Montag1053
Dienstag874
Mittwoch1246

Preismatrix (Zeilen = Produkte, Spalten = Filialen):

Filiale 1Filiale 2
Cola33.5
Chips55.5
Instant-Nudeln44.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

import numpy as np

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