Tokenizer-Training
Bevor ein Sprachmodell einen Text verarbeiten kann, muss es wissen, in welche Stücke es den Text zerlegen soll. Dieses Wissen entsteht nicht von selbst. Es wird in einem eigenen Trainingsschritt erzeugt, der festlegt, welche Zeichenfolgen als sinnvolle Einheiten gelten. Diesen Vorgang nennt man Tokenizer-Training.
Das Grundproblem: Text in verarbeitbare Einheiten zerlegen
Ein Sprachmodell arbeitet nicht mit ganzen Sätzen oder Wörtern im alltagssprachlichen Sinn. Es verarbeitet Zahlenfolgen, die jeweils für eine bestimmte Zeichengruppe stehen. Diese Zeichengruppen heißen Tokens. Die Frage ist: Wie entscheidet ein System, wo es einen Text auftrennt?
Eine naive Lösung wäre, jedes Wort an Leerzeichen zu trennen. Das scheitert schnell: Zusammengesetzte Wörter wie "Donaudampfschifffahrtsgesellschaft" würden ein eigenes Token erhalten, obwohl sie extrem selten vorkommen. Seltene Tokens verschwenden Speicher und erhalten im späteren Deep-Learning-Training kaum genug Beispiele, um brauchbare Repräsentationen zu lernen.
Beispiel: Der Satz "Die Tokenisierung beeinflusst die Modellqualität" könnte wortbasiert in 5 Tokens zerlegt werden. Ein trainierter Tokenizer zerlegt "Tokenisierung" möglicherweise in "Token" + "isierung" und ermöglicht so, dass das Modell den Wortstamm "Token" in verschiedenen Kontexten wiedererkennt.
Beispiel: Das Wort "unwahrscheinlich" lässt sich in "un" + "wahrscheinlich" zerlegen. Beide Teile tauchen in vielen anderen Wörtern auf ("unmöglich", "wahrscheinlich"). Ein gutes Vokabular erkennt diese Muster und nutzt sie für effizientere Repräsentationen.
Byte-Pair Encoding: Der meistverwendete Algorithmus
Das verbreitetste Verfahren für Tokenizer-Training heißt Byte-Pair Encoding (BPE). Der Algorithmus beginnt mit einem minimalen Vokabular, das nur aus einzelnen Zeichen besteht. In jedem Schritt zählt er, welches Zeichenpaar im gesamten Trainingskorpus am häufigsten nebeneinander vorkommt. Dieses Paar wird zu einem neuen Token zusammengefasst und dem Vokabular hinzugefügt.
Beispiel: In einem englischen Korpus kommt das Paar "t" + "h" besonders häufig vor. BPE fasst es zu "th" zusammen. Im nächsten Schritt wird vielleicht "th" + "e" zu "the" zusammengefügt. So entstehen schrittweise längere Tokens, die häufige Zeichenfolgen repräsentieren.
Dieser Merge-Vorgang wiederholt sich, bis die gewünschte Vokabulargröße erreicht ist. Typische Größen liegen zwischen 30.000 und 100.000 Tokens. Das Ergebnis ist eine geordnete Liste von Merge-Regeln und ein Vokabular, das von einzelnen Bytes über Silben bis zu ganzen Wörtern reicht.
Beispiel: GPT-4 verwendet ein BPE-Vokabular mit etwa 100.000 Tokens. Das Wort "transformer" ist darin als ein einziges Token enthalten, während das seltenere Wort "transformerbasiert" in "transformer" + "basiert" aufgeteilt wird.
Alternative Verfahren: Unigram und WordPiece
BPE baut das Vokabular von unten auf. Es gibt Verfahren, die den umgekehrten Weg gehen. Das Unigram Language Model startet mit einem großen Ausgangsvokabular (oft mehrere hunderttausend Einträge) und entfernt schrittweise diejenigen Tokens, deren Wegfall den geringsten Informationsverlust verursacht. Der Informationsverlust wird über die Log-Likelihood des Korpus gemessen.
Beispiel: Ein Unigram-Modell beginnt mit 300.000 Kandidaten-Tokens. In jeder Runde berechnet es, welche 20% der Tokens am wenigsten zum Gesamtmodell beitragen, und entfernt sie. Nach mehreren Runden bleiben 32.000 Tokens übrig, die den Korpus möglichst verlustarm repräsentieren.
WordPiece funktioniert ähnlich wie BPE, verwendet aber ein anderes Kriterium für die Auswahl der Merges. Statt das häufigste Paar zu wählen, berechnet WordPiece, welcher Merge die Likelihood des Trainingskorpus am stärksten erhöht. BERT wurde mit einem WordPiece-Tokenizer trainiert.
Beispiel: Bei BERT erkennt man WordPiece-Tokens am Präfix "##". Das Wort "embedding" wird zu ["em", "##bed", "##ding"] zerlegt. Die "##"-Markierung signalisiert, dass dieses Token eine Fortsetzung des vorherigen Tokens ist und kein eigenständiger Wortanfang.
SentencePiece ist eine Implementierung, die sowohl BPE als auch Unigram unterstützt. Die Besonderheit: SentencePiece arbeitet direkt auf dem rohen Byte-Stream und benötigt keine vorherige Worttrennung. Leerzeichen werden als normales Zeichen behandelt und können Teil von Tokens werden. Das macht SentencePiece sprachunabhängig, weil es keine Annahmen über Wortgrenzen trifft.
Der Trainingskorpus bestimmt die Qualität
Die Zusammensetzung des Trainingsdaten-Korpus hat direkten Einfluss auf das entstehende Vokabular. Ein Tokenizer, der ausschließlich auf englischen Texten trainiert wurde, repräsentiert englische Wörter effizient als kurze Token-Sequenzen. Deutsche Wörter zerlegt er in deutlich mehr Teile, weil Zeichenfolgen wie "ü" oder "sch" in seinem Vokabular unterrepräsentiert sind.
Beispiel: Das englische Wort "understanding" ist bei einem englisch trainierten Tokenizer oft ein einzelnes Token. Das deutsche Wort "Verständnis" wird möglicherweise in 4 bis 5 Tokens zerlegt: "Ver" + "st" + "änd" + "nis". Jedes zusätzliche Token verlängert die Eingabesequenz und erhöht den Rechenaufwand.
Dieser Effekt ist nicht nur ein Effizienzproblem. Längere Token-Sequenzen bedeuten, dass der Attention-Mechanismus im Transformer mehr Positionen verarbeiten muss. Bei begrenzter Kontextlänge passen weniger Inhaltsinformationen in ein Eingabefenster. Sprachen mit ineffizienter Tokenisierung werden dadurch systematisch benachteiligt.
Beispiel: Ein Prompt mit 500 deutschen Wörtern kann bei einem englisch-zentrierten Tokenizer 800 Tokens erzeugen. Derselbe Inhalt auf Englisch benötigt nur 550 Tokens. Bei einer Kontextlänge von 4.096 Tokens bleibt für den deutschen Text deutlich weniger Platz für Kontext und Antwort.
Für multilinguale Modelle wird der Trainingskorpus daher bewusst aus Texten vieler Sprachen zusammengesetzt. Die Verteilung ist dabei nicht gleichmäßig: Häufig vertretene Sprachen erhalten mehr Tokens, seltene Sprachen werden überproportional berücksichtigt, damit auch ihre typischen Zeichenfolgen im Vokabular erscheinen.
Designentscheidungen: Vokabulargröße und Vorverarbeitung
Die Wahl der Vokabulargröße ist ein Kompromiss. Ein größeres Vokabular bedeutet kürzere Token-Sequenzen (weil mehr Wörter als einzelne Tokens dargestellt werden können), aber auch eine größere Embedding-Matrix im Modell. Jedes Token im Vokabular benötigt einen eigenen Embedding-Vektor, der Speicher belegt und trainiert werden muss.
Beispiel: Ein Vokabular mit 32.000 Tokens und einer Embedding-Dimension von 768 (wie bei BERT-Base) ergibt eine Embedding-Matrix mit rund 24,6 Millionen Parametern. Verdoppelt man das Vokabular auf 64.000, verdoppelt sich auch die Größe dieser Matrix.
Vor dem eigentlichen Tokenizer-Training steht die Vorverarbeitung des Korpus. Typische Schritte umfassen die Normalisierung von Unicode-Zeichen (z.B. verschiedene Darstellungsformen desselben Umlauts vereinheitlichen), die Behandlung von Groß- und Kleinschreibung und die Entscheidung, ob Sonderzeichen erhalten bleiben sollen.
Beispiel: Das Zeichen "ä" kann in Unicode als ein einzelnes Zeichen (U+00E4) oder als Kombination aus "a" und einem diakritischen Zeichen (U+0061 + U+0308) dargestellt werden. Ohne Normalisierung würde der Tokenizer beide Varianten als unterschiedliche Eingaben behandeln und inkonsistente Tokens erzeugen.
Manche Tokenizer führen zusätzlich eine Byte-Level-Vorverarbeitung durch. Dabei wird jedes Eingabezeichen zunächst in seine UTF-8-Bytes zerlegt und jedes Byte auf ein druckbares ASCII-Zeichen abgebildet. Das garantiert, dass der Tokenizer jede beliebige Eingabe verarbeiten kann, auch unbekannte Unicode-Zeichen.
Spezial-Tokens und ihre Rolle
Neben den aus dem Korpus gelernten Tokens enthält jedes Vokabular Spezial-Tokens, die manuell hinzugefügt werden. Diese Tokens haben keine Entsprechung im natürlichen Text, sondern steuern die Verarbeitung im Modell.
Beispiel: BERT verwendet [CLS] am Anfang jeder Eingabe, [SEP] zwischen zwei Segmenten und [PAD] zum Auffüllen kürzerer Sequenzen. [CLS] dient als Repräsentation des gesamten Inputs für Klassifikationsaufgaben. [MASK] markiert Positionen, die das Modell im Training vorhersagen soll.
Bei generativen Modellen (etwa der GPT-Architektur) markieren Spezial-Tokens den Anfang und das Ende einer Sequenz. Neuere Chat-Modelle verwenden zusätzliche Tokens für Rollenwechsel: Ein Token signalisiert den Beginn einer System-Nachricht, ein anderes den Beginn der Nutzer-Eingabe, ein drittes den Beginn der Modellantwort.
Beispiel: Llama-2-Chat verwendet die Tokens [INST] und [/INST] zur Abgrenzung von Instruktionen. <
Auswirkungen auf das Modellverhalten
Das Tokenizer-Training findet vor dem Modelltraining statt, beeinflusst aber die Leistung des fertigen Modells erheblich. Die Token-Grenzen bestimmen, auf welcher Granularität ein neuronales Netz Zusammenhänge lernen kann. Wenn ein zusammengehöriger Begriff über mehrere Tokens verteilt ist, muss das Modell lernen, diese Tokens als Einheit zu behandeln.
Beispiel: Das Wort "Stickstoffdioxid" wird von vielen Tokenizern in 3 bis 4 Tokens zerlegt. Das Modell muss durch das Training lernen, dass diese Token-Sequenz einen chemischen Stoff bezeichnet. Ein Tokenizer, der Fachbegriffe aus der Chemie im Trainingskorpus hatte, stellt "Stickstoffdioxid" möglicherweise als ein oder zwei Tokens dar, was dem Modell die Zuordnung erleichtert.
Tokenizer-Artefakte können zu überraschenden Modellfehlern führen. Wenn ein Wort je nach Kontext unterschiedlich tokenisiert wird (etwa weil ein Leerzeichen davor steht oder nicht), erhält das Modell unterschiedliche Eingabesequenzen für inhaltlich identische Formulierungen.
Beispiel: Der Tokenizer von GPT-Modellen behandelt " hello" (mit führendem Leerzeichen) und "hello" als unterschiedliche Token-Sequenzen. Das führende Leerzeichen ist Teil des Tokens. Prompte, die denselben Inhalt mit unterschiedlicher Whitespace-Formatierung enthalten, können deshalb zu unterschiedlichen Modellantworten führen.
Auch arithmetische Fähigkeiten werden durch die Tokenisierung beeinflusst. Zahlen wie "123456" werden oft in willkürliche Token-Gruppen zerlegt (z.B. "123" + "456" oder "12" + "34" + "56"). Das Modell muss stellenwertbasierte Rechenregeln auf Basis dieser Zerlegung lernen, was die Fehlerrate bei mathematischen Aufgaben erhöht.
Grenzen und offene Probleme
Das Tokenizer-Training optimiert auf Häufigkeit im Korpus. Seltene, aber fachlich wichtige Begriffe werden dadurch in viele kleine Tokens zerlegt. Fachsprachen aus Medizin, Recht oder Chemie sind in allgemeinen Trainingskorpora unterrepräsentiert. Ein Domänen-spezifischer Tokenizer kann dieses Problem mildern, ist aber nicht mit einem allgemeinen Modell kompatibel.
Beispiel: Der medizinische Fachbegriff "Acetylsalicylsäure" wird von einem allgemeinen Tokenizer in 5 bis 7 Tokens zerlegt. Ein auf medizinische Texte trainierter Tokenizer fasst ihn in 2 Tokens zusammen. Beide Tokenizer sind nicht austauschbar: Das Modell wurde mit einem bestimmten Vokabular trainiert und kann nicht nachträglich auf ein anderes umgestellt werden.
Ein grundsätzliches Problem ist die Unveränderlichkeit des Vokabulars nach dem Training. Neue Begriffe, Produktnamen oder Abkürzungen, die nach dem Tokenizer-Training entstehen, können nur als Kombination bestehender Tokens dargestellt werden. Es gibt experimentelle Ansätze für dynamische Vokabulare, die bisher aber nicht produktionsreif sind.
Die Forschung arbeitet an Alternativen zum statischen Tokenizer-Training. Byte-Level-Modelle wie ByT5 verzichten vollständig auf ein gelerntes Vokabular und arbeiten direkt auf einzelnen Bytes. Das löst das Vokabular-Problem, verlängert aber die Eingabesequenzen erheblich und erhöht den Rechenaufwand.
Fachliche Einordnung: Tokenizer-Training ist ein Optimierungsproblem mit Zielkonflikten. Größere Vokabulare verkürzen Sequenzen, vergrößern aber die Embedding-Matrix und verteilen die Trainingsbeispiele auf mehr Token-Typen. Die aktuelle Forschung betrachtet Tokenizer und Modellarchitektur zunehmend als gemeinsames Optimierungsproblem statt als getrennte Entwurfsentscheidungen. Ansätze wie subword regularization (Kudo, 2018) und Byte-Level-Modelle (Xue et al., 2022) zeigen Richtungen auf, ersetzen BPE in der Praxis bisher aber nicht.