All-but-the-Top: warum Kontexto die Wortvektoren entzerrt
Nimm ein frisch trainiertes Sprachmodell, such dir ein beliebiges Wort aus und lass dir die zehn ähnlichsten Wörter anzeigen. Dann nimm ein ganz anderes Wort und mach dasselbe. Oft überschneiden sich die beiden Listen. Und zwar nicht bei Wörtern, die inhaltlich passen, sondern bei ein paar sehr häufigen Alltagswörtern, die überall vorne mitlaufen.
Das ist kein Fehler beim Training. Es ist eine bekannte Eigenheit solcher Modelle, und sie würde ein Spiel wie Kontexto fast unspielbar machen. Deshalb räumen wir jedes Wort auf, bevor wir auch nur einen einzigen Rang berechnen. Wie das funktioniert, erklären wir dir hier ohne Formeln.
Das Problem: Alle Wörter zeigen ein bisschen in dieselbe Richtung
Man stellt sich die Bedeutungskarte gern als ordentliche Wolke vor, in der die Wörter gleichmäßig um einen Mittelpunkt verteilt liegen und die Richtung eines Wortes nur seine Bedeutung zeigt.
So sieht es aber nicht aus. Die ganze Wolke ist zur Seite verschoben. Außerdem gibt es ein paar wenige Richtungen, in denen sich fast alle Wörter stark unterscheiden und die fast alle Wörter teilen.
Diese Richtungen haben nichts mit Bedeutung zu tun. Sie zeigen vor allem, wie häufig ein Wort in den Trainingstexten vorkommt. Die Forscher Mu und Viswanath haben das 2018 in ihrer Arbeit All-but-the-Top: Simple and Effective Postprocessing for Word Representations genau beschrieben. Sie haben gezeigt, dass Ähnlichkeiten messbar besser werden, wenn man diese Richtungen entfernt.
Für Kontexto hat das handfeste Folgen. Das Spiel misst die Ähnlichkeit zweier Wörter über den Winkel zwischen ihnen. Haben alle Wörter einen gemeinsamen Anteil, wird dieser Winkel bei jedem Wortpaar kleiner, als er sein sollte. Und Wörter mit besonders großem gemeinsamem Anteil, also besonders häufige Wörter, wirken zu allem ähnlich.
Ohne Korrektur läge beim geheimen Wort Erdbeere nicht Himbeere vorne, sondern eine Reihe sehr
häufiger Hauptwörter, die zu allem passen. Der Rang würde messen, wie gebräuchlich dein Wort ist,
und nicht, wie nah seine Bedeutung liegt. Aus dem Spiel würde ein Häufigkeitsraten.
Die Korrektur in zwei Schritten
Der Eingriff ist überraschend klein. Er besteht aus zwei Rechenschritten über die Zahlen aller 80.000 Wörter.
Schritt 1: den Durchschnitt abziehen. Für jede der 300 Zahlen eines Wortes berechnen wir den Durchschnitt über alle Wörter und ziehen ihn von jedem Wort ab. Danach liegt der Mittelpunkt der Wolke wieder in der Mitte der Karte. Das kennst du vielleicht aus der Statistik als Zentrieren.
Schritt 2: die drei stärksten Richtungen entfernen. Danach suchen wir mit einem Rechenverfahren die Richtungen, in denen sich die Wörter am stärksten unterscheiden, sortiert nach ihrer Stärke. Von jedem Wort ziehen wir dann den Anteil ab, der in die drei stärksten dieser Richtungen zeigt.
Bildlich gesprochen: Liegt eine Wolke aus Punkten schräg im Raum, richten wir sie gerade aus, ohne die feinen Unterschiede zwischen den Punkten wegzuwerfen. Die Bedeutungen bleiben weitgehend erhalten, die gemeinsame Schieflage wird kleiner.
Wichtig ist auch, woraus wir diese Werte berechnen: aus den rund 15.500 Wörtern des Alltags. Erst danach wenden wir sie auf alle Wörter an. So verschwinden die Richtungen, die den normalen Wortschatz prägen, und nicht die von seltenen Zusammensetzungen.
Warum du das im Spiel merkst
Du merkst die Wirkung an einer Stelle, an der du sie wahrscheinlich nicht erwartest: bei Wörtern, die klar danebenliegen.
Nach dem Aufräumen bekommt ein häufiges Wort, das nicht zum Thema passt, einen ehrlich schlechten
Rang. Genau das macht die Information nützlich. Gibst du Zeit ein und siehst Rang 4.100, dann sagt
dir das wirklich etwas: Das geheime Wort hat wohl nichts mit Zeit zu tun. Ohne Aufräumen hätte
Zeit oft einen mittelguten Rang bekommen, egal worum es geht, und der Versuch hätte dir nichts
verraten.
Deshalb funktioniert die Strategie aus Die besten Startwörter für Kontexto überhaupt. Ein allgemeines Alltagswort als erster Versuch hilft dir nur, wenn sein Rang wirklich von der Bedeutung abhängt und nicht davon, wie häufig es ist.
Warum gerade drei Richtungen
Die Zahl drei wirkt willkürlich, und zur Hälfte ist sie das auch. Sie stammt aus der Arbeit, die das Verfahren beschrieben hat. Dort steht eine einfache Faustregel: ungefähr die Zahl der Werte pro Wort geteilt durch hundert. Bei 300 Werten sind das drei.
Spannender als die Herkunft ist, was passiert, wenn man danebenliegt. Entfernt man zu wenig, zum
Beispiel nur den Durchschnitt, bleibt ein Teil des Häufigkeitseffekts. Alltagswörter liegen dann
weiter bei jedem geheimen Wort zu weit vorne, und ein guter Rang für Zeit sagt mehr über Zeit
als über das Rätsel.
Entfernt man zu viel, zum Beispiel zehn Richtungen, verschwindet irgendwann echte Bedeutung. Die stärksten Richtungen zeigen nicht nur Häufigkeit, sie tragen auch grobe Unterschiede wie „greifbar“ gegen „abstrakt“. Wer sie herausrechnet, macht Wörter ähnlich, die es nicht sind, und die Rangliste wird beliebig.
Für Kontexto haben wir uns deshalb für drei entschieden. Ob zwei, drei oder vier bei einem anderen Modell besser wären, müsste man eigens messen. Die Drei ist bei uns eine begründete Wahl, keine magische Zahl.
Was ohne das Aufräumen passieren würde
Am besten versteht man den Unterschied mit einem Gedankenexperiment, weil er das ganze Spiel betrifft.
Ohne Aufräumen wären die häufigsten deutschen Wörter zu jedem geheimen Wort überdurchschnittlich
ähnlich. Jede Rangliste sähe ungefähr gleich aus: vorne Mensch, Zeit, Jahr, Arbeit,
Leben, egal ob das geheime Wort Strand oder Rechnung ist.
Das hätte zwei Folgen, und beide würden das Spiel kaputt machen. Erstens wäre die beste Strategie langweilig: Man spielt immer dieselben zwanzig häufigen Wörter, bekommt immer ähnlich gute Ränge und lernt nichts über das geheime Wort. Zweitens wären genau die Wörter nutzlos, die als erster Test am hilfreichsten sind. Ein allgemeines Alltagswort taugt als Startwort nur, wenn sein Rang schwankt, je nachdem wo das Ziel liegt.
Genau dieses Schwanken messen wir im Startwort-Test, und es gibt es nur, weil wir den Häufigkeitsanteil vorher entfernt haben. Das Aufräumen ist also keine kleine Verbesserung am Rand, sondern die Voraussetzung dafür, dass Strategie im Spiel überhaupt möglich ist.
Was das Aufräumen nicht repariert
Es behebt eine Schieflage in der Rechnung. Es macht das Modell nicht klüger.
Was bleibt, sind die Eigenheiten der Trainingstexte. Das deutsche fastText-Modell hat aus Texten im
Internet und aus der Wikipedia gelernt, also aus dem, was Menschen ins Netz schreiben. Themen, über
die viel geschrieben wird, kennt es genauer als Themen, über die wenig geschrieben wird. Wörter mit
mehreren Bedeutungen haben nur eine Adresse, die irgendwo zwischen den Bedeutungen liegt: Bank sitzt
zwischen Sitzbank und Geldinstitut und gehört keinem der beiden Themen ganz.
Auch Gegenteile bleiben nah beieinander. heiß und kalt stehen in fast denselben Sätzen, deshalb
liegen sie dicht zusammen. Für den Rang heißt das: Ein guter Rang bedeutet „richtiges Thema“, nicht
„gleiche Bedeutung“. Ist das geheime Wort kalt und du gibst heiß ein, bekommst du einen sehr
guten Rang und bist trotzdem beim Gegenteil. Mehr dazu in
Warum hat mein Wort einen schlechten Rang?.
Selbst ausprobieren
In unserem Code ist dieser Schritt eine kleine Funktion namens postprocess_vectors, nicht länger
als acht Zeilen: Zahlen sammeln, Durchschnitt abziehen, die stärksten Richtungen berechnen, die drei
obersten abziehen, fertig.
Wer es selbst ausprobieren will, braucht dafür kein Kontexto. Nimm ein beliebiges fertiges Sprachmodell, lass dir die zehn nächsten Nachbarn für ein paar Wörter anzeigen, wende die zwei Schritte an und schau dir die Nachbarn noch einmal an. Den Unterschied siehst du ohne Messgerät: Die allgemeinen Dauergäste verschwinden von den vorderen Plätzen und machen Platz für Wörter, die wirklich etwas mit dem gesuchten Wort zu tun haben.
Wie aus den aufgeräumten Zahlen am Ende eine einzige Zahl wird, erklärt Kosinus-Ähnlichkeit einfach erklärt.