Vektor-Skalarprodukt -- Von der Projektion zur Multiplikation

Das Skalarprodukt ist die am häufigsten verwendete Vektoroperation in der KI.

Die Berechnung von Fully-Connected-Schichten und das Ähnlichkeits-Matching in Attention-Mechanismen — beides sind im Grunde Skalarprodukte.

Das Skalarprodukt hatzwei äquivalente Perspektivendas Verständnis der Brücke zwischen ihnen ist die Kernaussage dieses Kapitels.

Perspektive 1: Algebraische Berechnung

Multipliziere die Elemente an den entsprechenden Positionen und summiere sie dann.

\( \mathbf{a} \cdot \mathbf{b} = \sum a_i b_i \)

Zum Beispiel: (2,3) · (4,1) = 2×4 + 3×1 = 11

Perspektive 2: Geometrische Intuition

Projiziere einen Vektor auf einen anderen und multipliziere dann die beiden Längen.

\( \mathbf{a} \cdot \mathbf{b} = \|\mathbf{a}\| \|\mathbf{b}\| \cos\theta \)

Je kleiner der Winkel θ, desto größer das Skalarprodukt.

Beide Methoden liefern denselben Wert — dies ist eine äußerst elegante Gleichung in der Mathematik.

Das Vorzeichen des Skalarprodukts verrät die Richtungsbeziehungen

<90°
Skalarprodukt > 0
Richtungen sind ungefähr gleich
=90°
Skalarprodukt = 0
Richtungen sind senkrecht (orthogonal)
>90°
Skalarprodukt < 0
Richtungen sind ungefähr entgegengesetzt

Beispiele aus dem Alltag

Einkaufsrechnung: Menge × Stückpreis

Du hast 2 Flaschen Cola (je 3 Yuan), 3 Tüten Chips (je 5 Yuan) und 1 Eimer Instantnudeln (4 Yuan pro Eimer) gekauft.

Das Skalarprodukt des Mengenvektors (2, 3, 1) und des Preisvektors (3, 5, 4) ist der Gesamtpreis: 2×3 + 3×5 + 1×4 = 25 Yuan.

Einen Einkaufswagen schieben: Kraft × Verschiebung

Die Kraft, die du auf den Einkaufswagen ausübst, ist ein Vektor (mit Betrag und Richtung), und die Verschiebung des Wagens ist ein weiterer Vektor.

In der Physik ist Arbeit = Komponente der Kraft in Richtung der Verschiebung × Betrag der Verschiebung = das Skalarprodukt des Kraftvektors und des Verschiebungsvektors.

Wenn du seitlich schiebst (senkrechte Richtung), verrichtest du überhaupt keine Arbeit — das Skalarprodukt ist null.


Mathematische Definition

Algebraische Definition

\[ \mathbf{a} \cdot \mathbf{b} = \sum_{i=1}^{n} a_i b_i = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n \]

Geometrische Definition

\[ \mathbf{a} \cdot \mathbf{b} = \|\mathbf{a}\| \|\mathbf{b}\| \cos\theta \]

Brücke zwischen den beiden Definitionen: den Winkel finden

\[ \cos\theta = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|} \]

Das bedeutet:Mit den Koordinaten zweier Vektoren können Sie den Winkel zwischen ihnen ohne Winkelmesser berechnen。

Eigenschaften der Operationen

EigenschaftFormelErklärung
Kommutativgesetz\( \mathbf{a} \cdot \mathbf{b} = \mathbf{b} \cdot \mathbf{a} \)Die Reihenfolge spielt keine Rolle
Distributivgesetz\( \mathbf{a} \cdot (\mathbf{b} + \mathbf{c}) = \mathbf{a}\cdot\mathbf{b} + \mathbf{a}\cdot\mathbf{c} \)Sie können zuerst addieren und dann das Skalarprodukt bilden
Skalarprodukt mit sich selbst\( \mathbf{a} \cdot \mathbf{a} = \|\mathbf{a}\|^2 \)Das Skalarprodukt eines Vektors mit sich selbst ist gleich dem Quadrat seiner Länge

Praxis mit Python

Beispiel

import numpy as np

a_example = np.array([2, 3, 1])
b_example = np.array([4, 1, 2])

# Methode 1: np.dot()
dot1 = np.dot(a_example, b_example)
# Methode 2: @-Operator (empfohlen)
dot2 = a_example @ b_example
# Methode 3: manuelle Überprüfung
dot3 = sum(a_example[i] * b_example[i] for i in range(len(a_example)))

print("a · b =", dot1)   # 13
print("Die drei Methoden liefern dasselbe Ergebnis:", dot1 == dot2 == dot3)

# Die geometrische Definition verwenden, um den Winkel abzuleiten
norm_a = np.linalg.norm(a_example)
norm_b = np.linalg.norm(b_example)
cos_theta = dot1 / (norm_a * norm_b)
theta_deg = np.degrees(np.arccos(cos_theta))
print(f"||a||={norm_a:.2f}, ||b||={norm_b:.2f}, cosθ={cos_theta:.4f}")
print(f"Winkel = {theta_deg:.1f}°")

# Die geometrische Formel überprüfen
verify = norm_a * norm_b * cos_theta
print(f"||a||·||b||·cosθ = {verify:.4f} (stimmt mit dem Skalarprodukt überein)")

# Demonstration verschiedener Winkel
print("\n[1,0] · [0.8,0.6] =", np.array([1,0]) @ np.array([0.8,0.6]), " (spitzer Winkel, positiv)")
print("[1,0] · [0,1] =", np.array([1,0]) @ np.array([0,1]), " (rechter Winkel, null)")
print("[1,0] · [-1,0] =", np.array([1,0]) @ np.array([-1,0]), " (stumpfer Winkel, negativ)")
a · b = 13
三种方法结果一致: True
||a||=3.74, ||b||=4.58, cosθ=0.7580
夹角 = 40.7°

[1,0] · [0.8,0.6] = 0.8  (锐角,正)
[1,0] · [0,1] = 0  (直角,零)
[1,0] · [-1,0] = -1.0  (钝角,负)

Interaktive Skalarprodukt-Demo

Ziehen Sie die Endpunkte der Vektoren a und b, um zu sehen, wie sich der Wert des Skalarprodukts und der Winkel ändern. Das Vorzeichen des Skalarprodukts bestimmt, ob der Winkel spitz, stumpf oder recht ist:


Anwendungsszenarien in der KI

Vollständig verbundene Schicht = Batch-Berechnung von Skalarprodukten

Ein Neuron berechnet \( y = w_1x_1 + w_2x_2 + \cdots + w_nx_n + b \). Der Summationsteil ist dasSkalarprodukt aus Gewichtsvektor w und Eingabevektor x。

Wenn Sie eine vollständig verbundene Schicht sehennn.Linear(784, 256), was sie mathematisch macht, ist: 256 Neuronen, jedes Neuron nimmt seinen eigenen Gewichtsvektor (784-dimensional) und berechnet das Skalarprodukt mit dem Eingabevektor, addiert dann den Bias. 256 parallel berechnete Skalarprodukte = Matrixmultiplikation.

Attention-Mechanismus = Skalarprodukt + Softmax

Die Kernoperation von Transformer: Der Query-Vektor und der Key-Vektor bilden ein Skalarprodukt; je größer das Ergebnis, desto stärker sind die beiden 'verwandt'.

\[ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V \]

\( QK^T \) ist die Multiplikation einer seq_len × d_k Matrix und einer d_k × seq_len Matrix; der Wert an Position (i, j) in der Ergebnismatrix = dasSkalarprodukt des i-ten Query und des j-ten KeyJe größer dieser Wert, desto höher die "Aufmerksamkeit" der i-ten Position auf die j-te Position.

Die Division durch \( \sqrt{d_k} \) soll verhindern, dass die Skalarproduktwerte zu groß werden, was zu einem verschwindenden Softmax-Gradienten führen würde. Alle modernen großen Sprachmodelle wie GPT, BERT und Claude basieren auf diesem Dot-Product-Attention-Mechanismus.

Ähnlichkeitsberechnung in Empfehlungssystemen

Das Skalarprodukt aus Nutzervektor und Itemvektor ergibt den "Präferenzwert" des Nutzers für dieses Item. Dies ist der Kern des Matrixfaktorisierungs-Empfehlungsalgorithmus – die Bewertungsmatrix ≈ Nutzer-Latentvektor-Matrix × Transponierte der Item-Latentvektor-Matrix.


Weitere Erweiterungen