Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Wort-Embeddings: Wörter als Vektoren

Nach dieser Lektion: Ich kann erklären, wie Wörter zu Vektoren werden und wo Sprachmodelle danebenliegen.

Lektion, 60 Min.3 BefehleJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Was ist ein Wort-Embedding?

Ein Wort-Embedding ist eine Liste von Zahlen, die die Bedeutung eines Wortes beschreibt. Wörter mit ähnlicher Bedeutung bekommen ähnliche Zahlen, deshalb findet ein Programm so auch Wörter, die eine reine Zählung nicht verbindet.

Wer „Mensa“ sucht, will vielleicht auch „Kantine“ finden. Das ist die Frage dieser Lektion, und auch, wo solche Modelle danebenliegen.

Am Ende dieser Lektion

Notiz

Ich kann erklären, wie Wörter zu Vektoren werden und wo Sprachmodelle danebenliegen.

Schlüsselwörter

BegriffWas er bedeutet
Embeddingdie Zahlenliste, die ein Wort beschreibt
Abstandwie weit zwei Vektoren auseinander liegen
Aufmerksamkeitdas Gewicht, mit dem ein Modell auf ein anderes Wort schaut
Verzerrungein Muster der Trainingsdaten, das ein Modell wiederholt
Halluzinationein flüssiger Text, der nicht stimmt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Bedeutung wird zur Nähe zwischen Vektoren

Eine Zählung sieht „Mensa“ und „Kantine“ als völlig verschiedene Wörter. Ein Embedding gibt jedem Wort eine Zahlenliste, die aus dem Text gelernt wird, in dem es vorkommt. Wörter, die in ähnlichen Sätzen stehen, bekommen ähnliche Listen.

Der Abstand zweier Listen misst dann die Nähe der Bedeutung. Wir rechnen mit zwei erfundenen Zahlen je Wort.

Beispiel: erfundene Vektoren und Abstände zu „mensa“

WortVektorAbstand zum Quadrat zu mensa
mensa[3, 8]0
kantine[3, 7](3 - 3)² + (8 - 7)² = 1
bibliothek[0, 9]9 + 1 = 10
tee[8, 1]25 + 49 = 74
kaffee[9, 0]36 + 64 = 100

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Das nächste Wort suchen

Code: python
# Erfundene Vektoren: (Essen und Trinken, Gebäude).
vektoren = {
    "kaffee": [9, 0],
    "tee": [8, 1],
    "mensa": [3, 8],
    "kantine": [3, 7],
    "bibliothek": [0, 9],
}
wort = "mensa"
for anderes in vektoren:
    if anderes != wort:
        a = vektoren[wort]
        b = vektoren[anderes]
        abstand = (a[0] - b[0]) ** 2 + (a[1] - b[1]) ** 2
        print(anderes, abstand)
# Welches Wort liegt am nächsten? Probieren Sie "kaffee".

Einen Abstand zum Quadrat nachrechnen

Befehl
docker exec jupyter python3 -c "print((3 - 3) ** 2 + (8 - 7) ** 2)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Rechnen mit Bedeutungen

Der Unterschied zwischen zwei Vektoren kann eine Beziehung enthalten. Im erfundenen Beispiel führt der Weg von „deutschland“ zu „berlin“ von einem Land zu seiner Hauptstadt.

Wendet man denselben Schritt auf „frankreich“ an, landet man bei „paris“. Echte Embeddings treffen so etwas nur ungefähr, nicht sicher.

Denselben Schritt auf ein anderes Wort anwenden

Code: python
# Erfundene Vektoren: (Land oder Stadt, Region).
deutschland = [4, 1]
berlin = [7, 1]
frankreich = [4, 3]
ziel = []
for n in range(2):
    ziel.append(berlin[n] - deutschland[n] + frankreich[n])
print(ziel)
# Vergleichen Sie mit dem Vektor von paris: [7, 3].

Dieselbe Rechnung im Terminal

Befehl
docker exec jupyter python3 -c "print(7 - 4 + 4, 1 - 1 + 3)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Aufmerksamkeit entscheidet, welche Wörter zählen

Ein großes Sprachmodell schaut bei jedem Wort auf alle früheren Wörter. Es gibt jedem ein Gewicht. Das heißt Aufmerksamkeit (englisch attention).

Im Satz „Der Hund jagt die Katze, weil er Hunger hat“ muss das Modell wissen, wer „er“ ist. Dafür muss es auf „Hund“ stärker schauen als auf „Katze“.

Beispiel: erfundene Gewichte für das Wort „er“

Früheres WortGewicht
Der0,05
Hund0,60
jagt0,10
Katze0,25

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele denken, ein Sprachmodell schlage Fakten nach. Es wählt wahrscheinliche nächste Wörter. Sind sie auch wahr, stimmt die Antwort. Sind sie es nicht, klingt die falsche Antwort genauso sicher.

Ein Modell erfindet Sätze, die nie vorkamen

Das kleine Modell des Labs zählt in einem kurzen englischen Text, welches Wort auf welches folgt. Dann schreibt es vier neue Sätze.

Jedes Wortpaar darin steht im Text, aber der erste Satz „the shop opens at the hour .“ steht nirgends und ist falsch. Das ist eine Halluzination im Kleinen.

Vier Sätze aus Zählungen schreiben lassen

Befehl
docker exec jupyter python3 steps/generate.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der Trainingstext prägt die Embeddings

Ein Embedding lernt aus Texten. Steht ein Beruf dort meist mit einem Geschlecht oder ein Land meist mit einem Vorurteil, liegen die Vektoren entsprechend nah. Das ist Verzerrung aus den Daten.

Sie ist in einer einzelnen Antwort oft nicht zu sehen. Prüfen Sie deshalb Ergebnisse an Beispielen aus allen Gruppen.

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.