Ich bin dem Skalarprodukt (englisch: dot product) in verschiedenen Kontexten begegnet - in der Physik, beim Machine Learning, in Grafik-Engines. Die algebraische Definition als “Vektoren komponentenweise multiplizieren und aufsummieren” ist einfach genug. Interessant wird es erst durch die verschiedenen geometrischen und praktischen Interpretationen.
Drei Perspektiven
1. Geometrisch: Richtungsähnlichkeit
Das Skalarprodukt misst, wie stark zwei Vektoren in die gleiche Richtung zeigen. Bei einem Wanderweg nach Nordosten und Wind von Westen wäre das Skalarprodukt dieser beiden Vektoren negativ (Gegenwind). Käme der Wind von hinten, wäre es positiv (Rückenwind). Bei Seitenwind wäre es nahe Null.
Diese Interpretation ist oft intuitiver als die algebraische Definition.
2. Physikalisch: Arbeit = Kraft · Weg
In der Physik ist Arbeit definiert als:
$$ W = \vec{F} \cdot \vec{s} $$Nur die Kraftkomponente in Bewegungsrichtung verrichtet Arbeit. Wenn ich einen Koffer schräg nach oben ziehe, während er horizontal rollt, trägt nur die horizontale Komponente zur Arbeit bei.
Das Skalarprodukt filtert automatisch die relevante Komponente heraus.
3. Machine Learning: Ähnlichkeit quantifizieren
Im Machine Learning wird das Skalarprodukt verwendet, um Ähnlichkeit zu messen:
- Suchmaschinen: Relevanz eines Dokuments zur Suchanfrage
- Recommender Systems: Ähnlichkeit zwischen Nutzern oder Items
- Neuronale Netze: Jedes Neuron berechnet ein Skalarprodukt aus Input und Gewichten
Die Cosine-Similarity, eine normalisierte Variante, ist ein Standardwerkzeug.
Definition
Für zwei Vektoren \(\vec{a}\) und \(\vec{b}\) im \(\mathbb{R}^n\):
$$ \vec{a} \cdot \vec{b} = \sum_{i=1}^{n} a_i b_i = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n $$Beispiel in 2D
$$ \vec{a} = \begin{pmatrix} 3 \\\\ 4 \end{pmatrix}, \quad \vec{b} = \begin{pmatrix} 1 \\\\ 2 \end{pmatrix} $$$$ \vec{a} \cdot \vec{b} = 3 \cdot 1 + 4 \cdot 2 = 3 + 8 = 11 $$Beispiel in 3D
$$ \vec{a} = \begin{pmatrix} 1 \\\\ 0 \\\\ -1 \end{pmatrix}, \quad \vec{b} = \begin{pmatrix} 2 \\\\ 3 \\\\ 4 \end{pmatrix} $$$$ \vec{a} \cdot \vec{b} = 1 \cdot 2 + 0 \cdot 3 + (-1) \cdot 4 = 2 + 0 - 4 = -2 $$Geometrische Formel
Das Skalarprodukt lässt sich auch geometrisch ausdrücken:
$$ \vec{a} \cdot \vec{b} = |\vec{a}| \cdot |\vec{b}| \cdot \cos(\theta) $$wobei \(\theta\) der Winkel zwischen den Vektoren ist.
Diese Darstellung zeigt: Das Skalarprodukt kodiert den Winkel zwischen Vektoren.
- \(\theta = 0°\) (parallel): \(\cos(0°) = 1\) → Maximum
- \(\theta = 90°\) (senkrecht): \(\cos(90°) = 0\) → Null
- \(\theta = 180°\) (entgegengesetzt): \(\cos(180°) = -1\) → Maximal negativ
Algebraische und geometrische Definition sind äquivalent.
Beweis der Äquivalenz (2D-Fall)
Der Zusammenhang zwischen beiden Definitionen lässt sich direkt zeigen. Im 2D-Fall:
Zwei Vektoren in Komponentendarstellung:
$$ \vec{a} = \begin{pmatrix} a_1 \\\\ a_2 \end{pmatrix}, \quad \vec{b} = \begin{pmatrix} b_1 \\\\ b_2 \end{pmatrix} $$Diese Vektoren lassen sich auch über Betrag und Winkel ausdrücken:
$$ \vec{a} = \begin{pmatrix} |\vec{a}| \cos(\alpha) \\\\ |\vec{a}| \sin(\alpha) \end{pmatrix}, \quad \vec{b} = \begin{pmatrix} |\vec{b}| \cos(\beta) \\\\ |\vec{b}| \sin(\beta) \end{pmatrix} $$wobei \(\alpha\) und \(\beta\) die Winkel zur x-Achse sind.
Das algebraische Skalarprodukt:
$$ \vec{a} \cdot \vec{b} = a_1 b_1 + a_2 b_2 $$Einsetzen der Winkeldarstellung:
$$ \vec{a} \cdot \vec{b} = |\vec{a}| \cos(\alpha) \cdot |\vec{b}| \cos(\beta) + |\vec{a}| \sin(\alpha) \cdot |\vec{b}| \sin(\beta) $$$$ = |\vec{a}| \cdot |\vec{b}| \cdot [\cos(\alpha)\cos(\beta) + \sin(\alpha)\sin(\beta)] $$Mit dem Additionstheorem \(\cos(\alpha - \beta) = \cos(\alpha)\cos(\beta) + \sin(\alpha)\sin(\beta)\):
$$ = |\vec{a}| \cdot |\vec{b}| \cdot \cos(\alpha - \beta) $$Der Winkel zwischen den Vektoren ist \(\theta = \alpha - \beta\), also:
$$ \vec{a} \cdot \vec{b} = |\vec{a}| \cdot |\vec{b}| \cdot \cos(\theta) $$Damit ist gezeigt: Die algebraische Definition führt direkt zur geometrischen Formel. Der Beweis für höhere Dimensionen funktioniert analog, ist aber aufwendiger.
Wichtige Eigenschaften
Kommutativität
$$ \vec{a} \cdot \vec{b} = \vec{b} \cdot \vec{a} $$Die Reihenfolge ist egal.
Distributivität
$$ \vec{a} \cdot (\vec{b} + \vec{c}) = \vec{a} \cdot \vec{b} + \vec{a} \cdot \vec{c} $$Orthogonalität
Zwei Vektoren sind orthogonal (senkrecht), wenn:
$$ \vec{a} \cdot \vec{b} = 0 $$Beispiel:
$$ \vec{a} = \begin{pmatrix} 1 \\\\ 2 \end{pmatrix}, \quad \vec{b} = \begin{pmatrix} -2 \\\\ 1 \end{pmatrix} $$$$ \vec{a} \cdot \vec{b} = 1 \cdot (-2) + 2 \cdot 1 = -2 + 2 = 0 $$Die Vektoren sind orthogonal.
Praktische Anwendungen
1. Winkel zwischen Vektoren berechnen
Aus der geometrischen Formel folgt:
$$ \cos(\theta) = \frac{\vec{a} \cdot \vec{b}}{|\vec{a}| \cdot |\vec{b}|} $$$$ \theta = \arccos\left(\frac{\vec{a} \cdot \vec{b}}{|\vec{a}| \cdot |\vec{b}|}\right) $$2. Projektion eines Vektors
Die Projektion von \(\vec{b}\) auf \(\vec{a}\):
$$ \text{proj}_{\vec{a}}(\vec{b}) = \frac{\vec{a} \cdot \vec{b}}{|\vec{a}|^2} \vec{a} $$Die Länge der Projektion (skalare Komponente):
$$ \text{comp}_{\vec{a}}(\vec{b}) = \frac{\vec{a} \cdot \vec{b}}{|\vec{a}|} $$3. Cosine-Similarity
Ähnlichkeit zwischen zwei Vektoren, unabhängig von ihrer Länge:
$$ \text{similarity}(\vec{a}, \vec{b}) = \frac{\vec{a} \cdot \vec{b}}{|\vec{a}| \cdot |\vec{b}|} $$Werte zwischen -1 (entgegengesetzt) und +1 (identisch). Wird häufig bei Text- und Bild-Embeddings verwendet.
4. Physik: Arbeit
Arbeit einer Kraft \(\vec{F}\) über eine Strecke \(\vec{s}\):
$$ W = \vec{F} \cdot \vec{s} $$Beispiel: 50 N Kraft unter 30° zur Bewegungsrichtung, 10 m Weg:
$$ W = 50 \cdot 10 \cdot \cos(30°) = 500 \cdot 0.866 = 433 \text{ J} $$Rechnenbeispiel
Gegeben:
$$ \vec{a} = \begin{pmatrix} 1 \\\\ 2 \\\\ 2 \end{pmatrix}, \quad \vec{b} = \begin{pmatrix} 2 \\\\ 1 \\\\ 2 \end{pmatrix} $$Skalarprodukt:
$$ \vec{a} \cdot \vec{b} = 1 \cdot 2 + 2 \cdot 1 + 2 \cdot 2 = 2 + 2 + 4 = 8 $$Beträge:
$$ |\vec{a}| = \sqrt{1^2 + 2^2 + 2^2} = \sqrt{9} = 3 $$$$ |\vec{b}| = \sqrt{2^2 + 1^2 + 2^2} = \sqrt{9} = 3 $$Winkel:
$$ \cos(\theta) = \frac{8}{3 \cdot 3} = \frac{8}{9} \approx 0.889 $$$$ \theta = \arccos(0.889) \approx 27.3° $$Die Vektoren schließen einen Winkel von etwa 27° ein.
Code-Beispiele
Python mit NumPy
import numpy as np
# Vektoren definieren
a = np.array([1, 2, 2])
b = np.array([2, 1, 2])
# Skalarprodukt
dot_product = np.dot(a, b)
print(f"Skalarprodukt: {dot_product}") # 8
# Winkel berechnen
cos_theta = dot_product / (np.linalg.norm(a) * np.linalg.norm(b))
theta_rad = np.arccos(cos_theta)
theta_deg = np.degrees(theta_rad)
print(f"Winkel: {theta_deg:.1f}°") # 27.3°
# Orthogonalität prüfen
c = np.array([1, -2, 0])
d = np.array([2, 1, 0])
is_orthogonal = np.isclose(np.dot(c, d), 0)
print(f"Orthogonal: {is_orthogonal}") # True
Java
public class DotProduct {
public static double dot(double[] a, double[] b) {
double sum = 0;
for (int i = 0; i < a.length; i++) {
sum += a[i] * b[i];
}
return sum;
}
public static double norm(double[] v) {
return Math.sqrt(dot(v, v));
}
public static double angleDegrees(double[] a, double[] b) {
double cosTheta = dot(a, b) / (norm(a) * norm(b));
return Math.toDegrees(Math.acos(cosTheta));
}
public static void main(String[] args) {
double[] a = {1, 2, 2};
double[] b = {2, 1, 2};
System.out.println("Skalarprodukt: " + dot(a, b)); // 8.0
System.out.println("Winkel: " + angleDegrees(a, b) + "°"); // 27.3°
}
}
Zusammenfassung
Das Skalarprodukt ist ein grundlegendes Werkzeug, weil es:
- Winkel zwischen Vektoren misst
- Orthogonalität prüft (\(\vec{a} \cdot \vec{b} = 0\))
- Ähnlichkeit quantifiziert (Cosine-Similarity)
- Projektionen berechnet
- In Physik (Arbeit, Energie) und ML (Neuronale Netze) zentral ist
Merkregeln
- \(\vec{a} \cdot \vec{b} > 0\): Ähnliche Richtungen
- \(\vec{a} \cdot \vec{b} = 0\): Orthogonal
- \(\vec{a} \cdot \vec{b} < 0\): Entgegengesetzte Richtungen
Weiterführende Themen
- Kreuzprodukt (cross product) für 3D-Vektoren
- Matrix-Vektor-Multiplikation als Sammlung von Skalarprodukten
- Innere Produkträume in der funktionalen Analysis
- Attention-Mechanismen in Transformern (GPT, BERT)
Quellen
- 3Blue1Brown: Dot products and duality
- Khan Academy: Dot Product
- Gilbert Strang: “Introduction to Linear Algebra”