Datentabellen und Transformationen (Matrizen)

Das 2D-Zahlenraster, in dem jede ML-Bibliothek hauptsächlich denkt.

Grundlagen 12 min Fortgeschritten 11. Mai 2026

Du kennst bereits Vektoren — geordnete Listen von Zahlen, die Datenpunkte repräsentieren. Aber was passiert, wenn du viele Vektoren übereinander stapelst? Du bekommst eine Matrix — ein rechteckiges Raster aus Zahlen. Jede Tabellenkalkulation, jeder Datensatz, jede Schicht eines neuronalen Netzes basiert auf Matrizen.

In diesem Artikel lernst du, was Matrizen sind, wie man sie multipliziert (und warum die Definition nicht willkürlich ist) und warum diese eine Operation das rechnerische Herzstück moderner KI ist.

Was ist eine Matrix?

Matrix

AnalogieDefinition
Stell dir eine Tabellenkalkulation vor, die nur Zahlen enthält: Zeilen sind Einträge (Häuser), Spalten sind Eigenschaften (Fläche, Zimmer, Baujahr). Das IST eine Matrix. Jede Zeile ist ein Vektor, und alle Vektoren zusammen bilden das Raster.

Beispiel

Echte Tabellenkalkulationen können Text, Formeln und leere Zellen enthalten. Eine mathematische Matrix enthält ausschließlich Zahlen, hat eine feste Größe und unterstützt algebraische Operationen wie Multiplikation.
Matrix als Datentabelle

Zeilen = Datenpunkte, Spalten = Merkmale. Eine 1000×5-Matrix speichert 1000 Häuser mit je 5 Eigenschaften.

Matrix als Transformation

Die Matrix definiert, WIE ein Eingabevektor in einen Ausgabevektor umgewandelt wird. Gewichtsmatrizen in neuronalen Netzen sind Transformationen.

Drei Häuser mit den Merkmalen Fläche, Zimmer und Baujahr bilden eine 3×3-Matrix. Jede Zeile ist ein Haus, jede Spalte ein Merkmal.

import numpy as np

# Drei Häuser als 3x3-Matrix
haeuser = np.array([
    [120, 4, 1990],
    [85,  3, 2005],
    [200, 6, 1975]
])
print(haeuser.shape)    # (3, 3)
print(haeuser[1, 2])    # 2005 — Baujahr von Haus 2

Irrtum: Matrizen sind nur Tabellen

Matrizen sind weit mehr als Datenspeicher. Ihre eigentliche Stärke liegt darin, Transformationen darzustellen. Eine Gewichtsmatrix in einem neuronalen Netz speichert keine Daten — sie definiert, WIE Eingaben in Ausgaben umgewandelt werden.

Jeder Datensatz im maschinellen Lernen ist eine Matrix: Zeilen sind Beispiele, Spalten sind Features. Und jede Netzwerk-Schicht ist eine Matrixtransformation.

Matrizenmultiplikation — Warum genau so?

Die Matrizenmultiplikation sieht auf den ersten Blick kompliziert aus — aber sie hat einen tiefen Grund: Sie beschreibt exakt die Hintereinanderausführung zweier Transformationen. Erst Matrix B, dann Matrix A anwenden, ergibt die Matrix AB.

1
Nimm Zeile i der Matrix A.
2
Nimm Spalte j der Matrix B.
3
Berechne das Skalarprodukt (Punkt für Punkt multiplizieren und aufaddieren).
4
Das Ergebnis steht an Position (i, j) der Ergebnismatrix C.
Matrizenmultiplikation
c_ij = a_i1·b_1j + a_i2·b_2j + … + a_in·b_nj

Jedes Element c_ij des Ergebnisses ist das Skalarprodukt der i-ten Zeile von A mit der j-ten Spalte von B. Die Verbindung zum Vektoren-Artikel: Matrizenmultiplikation besteht aus vielen Skalarprodukten.

Dimensionsregel
(m × n) · (n × p) = (m × p)

Die inneren Dimensionen müssen übereinstimmen. Eine (m×n)-Matrix mal eine (n×p)-Matrix ergibt eine (m×p)-Matrix. Stimmen die inneren Dimensionen nicht überein, ist die Multiplikation nicht definiert.

import numpy as np

# Gewichtsmatrix W (2x3) mal Eingabevektor x (3x1)
W = np.array([[0.5, -0.3, 0.8],
              [0.1,  0.7, -0.2]])
x = np.array([1, 2, 3])

print(W @ x)          # [2.3, 0.9]
print(W.shape, '@', x.shape, '→', (W @ x).shape)
# (2, 3) @ (3,) → (2,)

Irrtum: A × B = B × A

Matrizenmultiplikation ist NICHT kommutativ. A × B ergibt in der Regel ein anderes Ergebnis als B × A. Oft ist sogar nur eine der beiden Multiplikationen definiert, weil die Dimensionen nicht passen. Reihenfolge zählt!

In NumPy ist * das elementweise Produkt (Hadamard) und @ die Matrizenmultiplikation. Beide liefern völlig unterschiedliche Ergebnisse! Der häufigste Anfängerfehler: * verwenden, wenn @ gemeint ist.

import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

print(A * B)   # [[ 5, 12], [21, 32]] — elementweise
print(A @ B)   # [[19, 22], [43, 50]] — Matrizenmultiplikation

Matrizen in neuronalen Netzen — Warum GPUs rechnen

Jede vollverbundene Schicht (fully connected layer) eines neuronalen Netzes berechnet genau eine Matrizenmultiplikation: Gewichtsmatrix mal Eingabe plus Bias. Training bedeutet: die Einträge der Gewichtsmatrix so verändern, dass der Fehler kleiner wird.

Neuronale Netzwerk-Schicht
output = W × input + bias

Shape-Kette durch ein Mini-Netzwerk

Eingabe (5 Datenpunkte) 5 × 3
Gewichte W1 3 × 4
Verborgene Schicht 5 × 4
Gewichte W2 4 × 2
Ausgabe 5 × 2

Statt einen Vektor nach dem anderen zu verarbeiten, stapelt man viele Eingaben zu einer Matrix. So wird ein ganzer Batch (z.B. 32 Bilder) in EINER Matrizenmultiplikation verarbeitet. Das ist dramatisch schneller.

312 TFLOPS
A100 GPU
~1 TFLOPS
CPU
~300×
Speedup

Warum sind GPUs dabei so schnell? Weil bei der Matrizenmultiplikation jedes Skalarprodukt völlig unabhängig von den anderen berechnet wird. Eine CPU hat wenige, sehr schnelle Kerne (z. B. 16). Eine GPU hat Tausende langsamere Kerne (z. B. 10.000). Für Matrizen, wo Tausende einfache Rechnungen gleichzeitig anfallen, ist die GPU dramatisch überlegen.

import numpy as np

# Mini-Netzwerk: 5 Datenpunkte, 3 Features
X = np.random.randn(5, 3)       # Eingabe: (5, 3)
W1 = np.random.randn(3, 4)      # Schicht 1: (3, 4)
W2 = np.random.randn(4, 2)      # Schicht 2: (4, 2)

hidden = X @ W1                  # (5, 3) @ (3, 4) = (5, 4)
output = hidden @ W2             # (5, 4) @ (4, 2) = (5, 2)
print(f'Eingabe: {X.shape} → Verborgen: {hidden.shape} → Ausgabe: {output.shape}')

Die innere Dimension verschwindet bei jeder Multiplikation — wie beim Bruchkürzen. (5×3) @ (3×4) = (5×4): Die 3 kürzt sich weg. Dann (5×4) @ (4×2) = (5×2): Die 4 kürzt sich weg. So fließen die Daten Schicht für Schicht durch das Netzwerk, und die Dimensionen verändern sich kontrolliert.

# Shape-Kette visualisiert:
# (batch × features_in) @ (features_in × features_out) = (batch × features_out)
#   5 × 3               @          3 × 4              =       5 × 4
#   5 × 4               @          4 × 2              =       5 × 2
# Die innere Dimension muss immer übereinstimmen!

Interaktiv: Die berühmteste 2×2-Matrix im ML

Ein neuronales Netz klassifiziert Eingaben in Kategorien — aber wie gut? Die Qualität misst man mit einer Konfusionsmatrix: einer 2×2-Matrix aus Richtig-Positiv, Falsch-Negativ, Falsch-Positiv und Richtig-Negativ. Ändere die Parameter und beobachte, wie sich die vier Zellen der Matrix verschieben — besonders bei seltenen Ereignissen (niedrige Prävalenz) passiert Überraschendes.

Szenario: Medizinischer Test

Eine Krankheit betrifft einen bestimmten Anteil der Bevölkerung. Ein Test erkennt die Krankheit mit einer bestimmten Trefferquote, erzeugt aber auch falsch-positive Ergebnisse bei Gesunden. Wie wahrscheinlich ist die Krankheit bei positivem Testergebnis wirklich?

Eingabewerte

%
%
%
Beispiele:

Berechnung nach Bayes

P(B)= P(B|A) × P(A) + P(B|¬A) × P(¬A)
P(B)= 0.9500 × 0.0100 + 0.0500 × 0.9900 = 0.0590
P(A|B)= P(B|A) × P(A) / P(B)
P(A|B)= 0.9500 × 0.0100 / 0.0590 = 0.1610

Ergebnis

16.1%
P(A|B) — Wahrscheinlichkeit der Krankheit bei positivem Test
Vorher (Prior)
1%
Nachher (Posterior)
16.1%
Bayes-Faktor: Der Test hat die Wahrscheinlichkeit um das 16.1-Fache erhöht (von 1% auf 16.1%).
Das Bayes-Paradoxon

Obwohl der Test 95% Sensitivität hat, liegt die Wahrscheinlichkeit bei positivem Ergebnis nur bei 16.1%. Das liegt an der niedrigen Grundwahrscheinlichkeit (1%): Bei 1.000 Getesteten gibt es 50 Fehlalarme, aber nur 10 echte Treffer. Die Falsch-Positiven überschwemmen die echten Fälle.

Anschaulich: 1.000 Personen getestet

10
Krank & positiv getestet
(Richtig-Positiv)
1
Krank & negativ getestet
(Falsch-Negativ)
50
Gesund & positiv getestet
(Falsch-Positiv)
941
Gesund & negativ getestet
(Richtig-Negativ)

Von 60 positiv Getesteten sind nur 10 tatsächlich krank. Das ergibt P(A|B) = 10/60 = 16.1%.

Das Wichtigste

  • Eine Matrix ist ein rechteckiges Zahlenschema — sie kann einen Datensatz (Zeilen = Beispiele) oder eine Transformation (Eingabe → Ausgabe) darstellen.
  • Die Matrizenmultiplikation besteht aus Skalarprodukten zwischen Zeilen und Spalten. Sie ist so definiert, weil sie die Hintereinanderausführung linearer Transformationen beschreibt — das ist keine willkürliche Konvention.
  • Jede Schicht eines neuronalen Netzes berechnet output = W × input + bias — eine Matrizenmultiplikation. GPUs sind dafür ideal, weil jedes Ausgabeelement unabhängig berechnet werden kann.

Quiz: Matrizen

Frage 1 / 4
Noch offen

Ein Datensatz hat 500 Bilder mit je 3 Merkmalen. Welche Form hat die zugehörige Matrix?

Wählen Sie eine Antwort
Auflösung: 1) B · 2) B · 3) B · 4) B

Checkpoint: Matrizen

  • Ich kann zwei verschiedene Interpretationen einer 100×5-Matrix im KI-Kontext benennen.
  • Ich kann erklären, warum eine (3×4)-Matrix mal eine (4×2)-Matrix eine (3×2)-Matrix ergibt und was mit der inneren Dimension 4 passiert.
  • Ich kann erklären, warum GPUs für neuronale Netze so viel schneller sind als CPUs, obwohl CPUs höhere Taktfrequenzen haben.