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
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
| Eigenschaft | Formel | Erklä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
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