Cosine Similarity und Cosine Schedule

Zwei Texte lassen sich als Zahlenlisten darstellen. Zeigen diese Listen in eine ähnliche Richtung, sind die Texte thematisch verwandt. Das Maß für diese Richtungsähnlichkeit heißt Cosine Similarity. Der gleiche mathematische Baustein steuert unter dem Namen Cosine Schedule auch die Lerngeschwindigkeit beim Training von KI-Modellen.

Richtung statt Länge: Was Cosine Similarity misst

Jeder Text, jedes Bild oder jede Audioaufnahme lässt sich in einen Vektor umwandeln. Ein Vektor ist eine geordnete Liste von Zahlen, die den Inhalt in einem hochdimensionalen Raum positioniert. Cosine Similarity bestimmt den Winkel zwischen zwei solchen Vektoren. Ist der Winkel klein, zeigen die Vektoren in eine ähnliche Richtung. Der resultierende Wert liegt zwischen -1 und 1. Bei 1 sind die Richtungen identisch, bei 0 stehen sie senkrecht aufeinander, bei -1 zeigen sie in entgegengesetzte Richtungen.

Entscheidend ist, dass Cosine Similarity die Länge der Vektoren ignoriert. Ein langer Fachartikel und ein kurzer Absatz zum selben Thema können sehr unterschiedlich lange Vektoren erzeugen. Trotzdem ergibt Cosine Similarity einen hohen Wert, weil die Richtung ähnlich bleibt.

Beispiel: Ein Embedding des Satzes "Katzen jagen Mäuse" und ein Embedding von "Hunde jagen Kaninchen" zeigen in eine ähnliche Richtung, weil beide eine Beutegreifer-Beute-Relation beschreiben. Der Cosine-Similarity-Wert liegt typischerweise bei 0,7 bis 0,85.

Beispiel: Ein Produktbeschreibungstext mit 500 Wörtern und eine Kurzrezension mit 20 Wörtern zum selben Produkt liefern Vektoren unterschiedlicher Magnitude. Cosine Similarity erkennt trotzdem die thematische Nähe, weil nur die Richtung zählt.

Die Berechnung hinter dem Winkel

Die Formel für Cosine Similarity besteht aus drei Schritten. Zuerst wird das Skalarprodukt der beiden Vektoren gebildet: Jede Komponente des einen Vektors wird mit der entsprechenden Komponente des anderen multipliziert, dann werden alle Produkte addiert. Danach wird die Länge (Norm) jedes Vektors berechnet. Zuletzt wird das Skalarprodukt durch das Produkt der beiden Normen geteilt.

In Python mit NumPy sieht das so aus:

import numpy as np

def cosine_similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

v1 = np.array([1, 2, 3])
v2 = np.array([2, 4, 6])
print(cosine_similarity(v1, v2))  # 1.0 (identische Richtung)

Beispiel: Zwei Vektoren [1, 0] und [0, 1] stehen senkrecht aufeinander. Das Skalarprodukt ist 0, also ist die Cosine Similarity 0. Die beiden Vektoren haben nichts gemeinsam.

Beispiel: Die Vektoren [3, 4] und [6, 8] haben Cosine Similarity 1,0, obwohl der zweite doppelt so lang ist. Sie zeigen in exakt die gleiche Richtung.

Fachliche Einordnung: Cosine Similarity ist mathematisch äquivalent zum normalisierten Skalarprodukt (Dot Product). Werden alle Vektoren auf Einheitslänge normalisiert, liefert das einfache Skalarprodukt identische Ergebnisse. Viele Produktionssysteme nutzen diese Eigenschaft: Sie normalisieren einmalig bei der Indexierung und verwenden dann das schnellere Dot Product für Abfragen.

Embeddings und Ähnlichkeitssuche

Embeddings sind Vektordarstellungen, die ein neuronales Netz aus Rohdaten erzeugt. Ein Embedding-Modell lernt, semantisch verwandte Inhalte nah beieinander im Vektorraum zu platzieren. Cosine Similarity ist das Standardmaß, um die Nähe zwischen solchen Embeddings zu quantifizieren.

In der Praxis werden Embeddings in einer Vektordatenbank gespeichert. Bei einer Suchanfrage wird die Anfrage selbst in ein Embedding umgewandelt und per Cosine Similarity mit den gespeicherten Vektoren verglichen. Die Treffer mit den höchsten Werten gelten als am relevantesten.

Beispiel: Ein Nutzer sucht nach "Kosten für Cloud-Speicher". Das Embedding-Modell wandelt diese Anfrage in einen Vektor um. Die Vektordatenbank findet Dokumente über "Preismodelle von AWS S3", "Azure Blob Storage Tarife" und "Google Cloud Storage Kosten" mit Cosine-Similarity-Werten von 0,82 bis 0,91.

Beispiel: Ein Empfehlungssystem für Fachartikel berechnet für jeden neuen Artikel ein Embedding und vergleicht es per Cosine Similarity mit dem Leseprofil eines Nutzers. Liegt der Wert über 0,75, wird der Artikel vorgeschlagen.

Cosine Similarity in RAG und Retrieval-Systemen

Retrieval-Augmented Generation kombiniert eine Wissensdatenbank mit einem generativen Sprachmodell. Der Retrieval-Schritt verwendet Cosine Similarity, um die relevantesten Textpassagen aus der Wissensdatenbank zu identifizieren. Diese Passagen werden dem Sprachmodell als Kontext übergeben, bevor es eine Antwort generiert.

Die Qualität des Retrieval-Schritts hängt direkt von der Wahl des Embedding-Modells ab. Unterschiedliche Modelle erzeugen unterschiedliche Vektorräume. Ein Cosine-Similarity-Wert von 0,85 in einem Modell ist nicht direkt vergleichbar mit 0,85 in einem anderen.

Beispiel: Ein Kundensupport-System speichert 50.000 Support-Artikel als Embeddings. Eine Kundenanfrage "Mein Drucker druckt nur leere Seiten" wird in einen Vektor umgewandelt. Das Retrieval-System findet per Cosine Similarity die drei passendsten Artikel und übergibt sie dem Sprachmodell, das eine spezifische Antwort formuliert.

Schwellenwerte für "relevant" oder "nicht relevant" müssen pro Anwendungsfall und Embedding-Modell kalibriert werden. Ein Benchmark-Datensatz mit bekannten relevanten Paaren hilft dabei, den optimalen Schwellenwert zu ermitteln.

Cosine Schedule: Lerngeschwindigkeit nach Kosinuskurve

Der zweite Kontext, in dem "Cosine" im Machine Learning auftaucht, betrifft das Training von Modellen. Beim Training passt ein Modell seine Gewichte schrittweise an, um eine Aufgabe besser zu lösen. Wie groß diese Anpassungsschritte sind, bestimmt die Learning Rate.

Cosine Schedule (auch Cosine Annealing genannt) senkt die Learning Rate gemäß einer halben Kosinuswelle. Am Anfang ist die Learning Rate hoch, das Modell macht große Schritte. Mit fortschreitendem Training sinkt sie sanft gegen null. Die Kosinuskurve erzeugt dabei einen glatteren Verlauf als ein linearer oder stufenweiser Abfall.

Hohe Learning RateBeginn des Trainings
KosinuskurveGlatter Übergang
Niedrige Learning RateEnde des Trainings
Warm-up-PhaseOptional: langsamer Start
Cosine RestartPeriodisches Zurücksetzen

Beispiel: Beim Training eines Transformer-Modells mit 100.000 Schritten startet die Learning Rate bei 0,001. Nach 50.000 Schritten liegt sie bei etwa 0,0005. Nach 90.000 Schritten bei unter 0,0001. Der Verlauf folgt einer halben Kosinuswelle.

Beispiel: BERT wurde mit einem linearen Schedule trainiert. Spätere Modelle wie Vision Transformer (ViT) verwenden Cosine Schedule, weil der glattere Verlauf in vielen Fällen zu niedrigeren Endverlusten führt.

Varianten und Kombinationen des Cosine Schedule

Die Basisversion des Cosine Schedule senkt die Learning Rate monoton von einem Startwert auf null oder einen kleinen Minimalwert. In der Praxis gibt es mehrere Erweiterungen.

Warm-up mit Cosine Decay

In den ersten Trainingsschritten steigt die Learning Rate linear von null auf den Startwert an. Erst danach beginnt die Kosinusabsenkung. Diese Kombination stabilisiert das frühe Training, weil das Modell nicht sofort mit großen Schritten beginnt.

Beispiel: Ein Modell trainiert 100 Epochen. Die ersten 5 Epochen sind Warm-up: Die Learning Rate steigt linear von 0 auf 0,001. Ab Epoche 6 folgt ein Cosine Decay von 0,001 auf 0,00001.

Cosine Annealing mit Restarts

Bei Cosine Annealing with Warm Restarts (SGDR) wird die Learning Rate periodisch auf den Startwert zurückgesetzt. Jede Periode folgt einer eigenen Kosinuswelle. Die Perioden können gleich lang sein oder sich verdoppeln (T_mult=2).

Beispiel: Ein Modell trainiert 200 Epochen in vier Zyklen zu je 50 Epochen. Am Anfang jedes Zyklus springt die Learning Rate auf 0,001, am Ende jedes Zyklus liegt sie nahe null. Dieses periodische Zurücksetzen hilft dem Modell, aus lokalen Minima der Verlustfunktion zu entkommen.

Abgrenzung zu anderen Ähnlichkeitsmaßen

Cosine Similarity ist nicht das einzige Maß für Vektorähnlichkeit. Die euklidische Distanz misst den absoluten Abstand zwischen zwei Punkten im Raum. Das Skalarprodukt (Dot Product) berechnet einen ähnlichen Wert wie Cosine Similarity, berücksichtigt aber zusätzlich die Vektorlänge.

Die Wahl des Maßes hängt von der Anwendung ab. Bei normalisierten Vektoren liefern Cosine Similarity und Dot Product identische Rankings. Bei nicht-normalisierten Vektoren unterscheiden sich die Ergebnisse: Dot Product bevorzugt längere Vektoren, Cosine Similarity nicht.

Beispiel: Eine Vektordatenbank bietet oft alle drei Distanzmaße an. Für Textsuche mit normalisierten Embeddings ist Dot Product am schnellsten. Für nicht-normalisierte Embeddings aus unterschiedlichen Modellen ist Cosine Similarity robuster.

Fachliche Einordnung: In der Information-Retrieval-Forschung wird Cosine Similarity seit den 1960er Jahren verwendet (Salton, 1962). Die Metrik gehört zum Vektorraummodell (Vector Space Model), das Dokumente und Anfragen als Vektoren in einem Termraum repräsentiert. Moderne Embedding-Modelle ersetzen die Term-Gewichtung durch gelernte Repräsentationen, die mathematische Grundlage bleibt identisch.

Grenzen und Fallstricke

Cosine Similarity hat Einschränkungen, die in der Praxis relevant werden.

Hohe Dimensionalität führt zum sogenannten "Curse of Dimensionality": In sehr hochdimensionalen Räumen (tausende Dimensionen) nähern sich die Cosine-Similarity-Werte aller Vektorpaare einander an. Die Unterscheidungskraft sinkt. Bei Embedding-Dimensionen von 768 oder 1536 ist dieser Effekt noch gering, bei 10.000 oder mehr Dimensionen wird er spürbar.

Die Metrik erfasst keine Reihenfolge. Die Sätze "Hund beißt Mann" und "Mann beißt Hund" können ähnliche Embeddings erzeugen, obwohl ihre Bedeutung verschieden ist. Moderne Embedding-Modelle mildern dieses Problem durch kontextsensitive Repräsentationen, beseitigen es aber nicht vollständig.

Beispiel: In einem juristischen Retrieval-System liefert die Suche nach "Vermieter kündigt Mieter" auch Ergebnisse für "Mieter kündigt Vermieter". Cosine Similarity erkennt die thematische Nähe, unterscheidet aber nicht zuverlässig zwischen den Rollen.

Beim Cosine Schedule gibt es eine andere Grenze: Der optimale Schedule hängt von der Trainingsaufgabe, der Modellgröße und dem Datensatz ab. Cosine Schedule ist ein guter Standardwert, aber keine universelle Lösung. Für Fine-Tuning auf kleinen Datensätzen kann ein konstanter oder linearer Schedule besser funktionieren.

Beispiel: Ein kleines Modell mit 10 Millionen Parametern wird auf einem Datensatz mit 1.000 Beispielen per Fine-Tuning angepasst. Cosine Schedule senkt die Learning Rate zu schnell, das Modell konvergiert nicht vollständig. Ein konstanter Schedule mit niedriger Rate liefert bessere Ergebnisse.

Fachliche Einordnung: Die Wahl zwischen Cosine Schedule und alternativen Verfahren (linear, polynomial, inverse square root) ist ein Hyperparameter. Systematische Vergleiche zeigen, dass Cosine Schedule bei längeren Trainingszeiten (ab ca. 100.000 Schritten) konsistent gute Ergebnisse liefert. Bei sehr kurzen Trainingszeiten oder beim Fine-Tuning ist der Unterschied zwischen den Verfahren oft gering.


Karl Kratz · 06.03.2025 (aktualisiert 15.03.2026)

Technologie Künstliche Intelligenz Training