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
Senkrechte Richtungen
Entgegengesetzte Richtungen
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
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