Vektorbetrag und Kosinusähnlichkeit

Das Skalarprodukt im vorherigen Kapitel enthielt sowohl Längen- als auch Richtungsinformationen.

Dieses Kapitel trennt sie:Der Betrag allein misst die Größe, die Kosinusähnlichkeit allein misst die Richtungskonsistenz.。

Betrag: Wie lang ist ein Vektor?

Der Betrag ist die "geradlinige Entfernung" vom Ursprung zum Endpunkt des Vektors — eine Verallgemeinerung des Satzes des Pythagoras auf höherdimensionale Räume.

L1-Norm

\( \|\mathbf{v}\|_1 = \sum |v_i| \)

Manhattan-Distanz: Entlang der Straßen gehen

L1 von (3,4) = 7

L2-Norm (Standard)

\( \|\mathbf{v}\|_2 = \sqrt{\sum v_i^2} \)

Geradlinige Entfernung: In der Luft fliegen

L2 von (3,4) = 5

Sofern nicht anders angegeben, bezieht sich "Betrag" oder \( \|\mathbf{v}\| \) standardmäßig auf die L2-Norm.

Einheitsvektor: Länge verwerfen, nur Richtung behalten

Jeder von Null verschiedene Vektor geteilt durch seinen eigenen Betrag ergibt einen Länge-1Einheitsvektor:

\[ \hat{\mathbf{v}} = \frac{\mathbf{v}}{\|\mathbf{v}\|} \]

Nach der Normalisierung bleibt die Richtung des Vektors unverändert, aber sein Betrag wird 1.

Kosinusähnlichkeit: Nur Richtung, nicht Betrag

Kosinusähnlichkeit = nachdem beide Vektoren zu Einheitsvektoren normalisiert wurden, dann das Skalarprodukt bilden:

\[ \text{cosine\_sim}(\mathbf{a}, \mathbf{b}) = \frac{\mathbf{a}\cdot\mathbf{b}}{\|\mathbf{a}\|\|\mathbf{b}\|} = \cos\theta \]

Gleiche Richtung

cos=1

Senkrechte Richtungen

cos=0

Entgegengesetzte Richtungen

cos=-1

Kosinusähnlichkeit kümmert sich nur um die Richtung, nicht um die Länge.

v = (3,4) und w = (6,8) (w = 2v), ihre Längen unterscheiden sich um den Faktor zwei, aber die Kosinusähnlichkeit = 1 — weil sie genau die gleiche Richtung haben.


Beispiele aus der Praxis

Betrag: Ein Maß für den Abstand

Die geradlinige Entfernung von deinem Zuhause zur Schule beträgt 5 km (L2 = 5), aber das Gehen entlang der Straßen erfordert einen Umweg von 7 km (L1 = 7).

Beide Maße haben ihre Berechtigung; in der KI wird hauptsächlich L2 verwendet.

Kosinusähnlichkeit: Musikgeschmack abgleichen

Zhang San hörte 100 Lieder, Li Si hörte 10 Lieder. Beim Skalarprodukt ist Zhang Sans Punktzahl naturgemäß höher.

Aber bei der Kosinusähnlichkeit zählt nur, ob die Geschmacksrichtung gleich ist — Zhang San (aktiver Nutzer) und Li Si (neuer Nutzer) können ebenfalls fair verglichen werden.


Mathematische Definition

Die Kernformel aufschlüsseln

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

Skalarprodukt = Produkt der Längen × Richtungskonsistenz. Umgekehrt können wir ermitteln:

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

Praktische Python-Übung

Beispiel

import numpy as np

v_example = np.array([3, 4, 0])
w_example = np.array([6, 8, 0])  # 2 mal v

# Norm
norm_v = np.linalg.norm(v_example)   # L2 Standard
norm_w = np.linalg.norm(w_example)
print(f"||v|| = {norm_v:.1f}, ||w|| = {norm_w:.1f}")  # 5, 10

# Normalisieren
unit_v = v_example / norm_v
unit_w = w_example / norm_w
print("Normalisiertes v:", unit_v)    # [0.6, 0.8, 0.]
print("Normalisiertes w:", unit_w)    # [0.6, 0.8, 0.] genau gleich!

# Kosinusähnlichkeit
cos_sim = np.dot(v_example, w_example) / (norm_v * norm_w)
print(f"Kosinusähnlichkeit = {cos_sim:.4f}")  # 1.0

# Batch-Berechnung der Kosinusähnlichkeitsmatrix
embeddings = np.array([
    [0.2, 0.5, 0.1, 0.8, 0.3],
    [0.3, 0.6, 0.2, 0.7, 0.4],
    [0.9, 0.1, 0.8, 0.1, 0.9],
])
norms = np.linalg.norm(embeddings, axis=1, keepdims=True)
normalized = embeddings / norms
sim_matrix = normalized @ normalized.T
print("\n"Kosinus-Ähnlichkeitsmatrix:")
print(np.round(sim_matrix, 3))
||v|| = 5.0, ||w|| = 10.0
v 归一化: [0.6 0.8 0. ]
w 归一化: [0.6 0.8 0. ]
余弦相似度 = 1.0000

余弦相似度矩阵:
[[1.    0.996 0.146]
 [0.996 1.    0.182]
 [0.146 0.182 1.   ]]

Anwendungsszenarien in der KI

Semantische Suche und Empfehlungssysteme

Nachdem die Anfrage und die Dokumente in Vektoren kodiert wurden, verwende Kosinusähnlichkeit zum Ranking – um die relevantesten Dokumente zu finden. Googles semantische Suche und der Vektorabruf in RAG (Retrieval-Augmented Generation) beruhen alle auf Kosinusähnlichkeit.

Im Vergleich zum Skalarprodukt wird die Kosinusähnlichkeit nicht von der Vektornorm beeinflusst – die Vektornorm eines langen Artikels kann groß sein, aber die Kosinusähnlichkeit kann die Richtungsübereinstimmung mit einer kurzen Anfrage fair vergleichen.

Gesichtserkennung: Kosinusähnlichkeit > Euklidische Distanz

Gesichtserkennungsmodelle wie FaceNet bilden Gesichter auf 128-dimensionale Einbettungsvektoren ab. Ob zwei Gesichter übereinstimmen, wird mithilfe der Kosinusähnlichkeit bestimmt – sie ist unempfindlich gegenüber Lichtverhältnissen und Fotohelligkeit (die die Vektornorm beeinflussen).

Zwei Fotos derselben Person unter unterschiedlicher Beleuchtung haben Einbettungsvektoren mit nahezu identischer Richtung (cos ≈ 0.95+), aber die Normen können stark voneinander abweichen.

L2-Regularisierung zur Vermeidung von Overfitting

Das Hinzufügen von \( \lambda\|\mathbf{w}\|^2 \) (Weight Decay) zur Verlustfunktion bestraft übermäßig große Gewichtsnormen. Eine große Gewichtsnorm bedeutet, dass das Modell bestimmten Merkmalen zu stark vertraut und schlecht generalisiert. Die L2-Regularisierung zieht sie in die Nähe des Ursprungs.

Normalisierung in Batch Normalization

BN normalisiert die Aktivierungen jeder Schicht: Subtrahiere den Mittelwert und teile durch die Standardabweichung, wodurch die Daten in eine Verteilung mit stabiler Norm überführt werden. Dies nutzt das Konzept der L2-Norm, um die Skalierung der Ausgabe jeder Schicht zu steuern.


Weitere Erweiterungen