Neurale netwerken werken met getallen. Ze kunnen het woord "hallo" niet lezen zoals jij dat doet. Voordat een taalmodel tekst kan verwerken, moet deze worden opgesplitst in kleine numerieke eenheden die tokens worden genoemd. Deze ogenschijnlijk eenvoudige stap heeft diepgaande gevolgen voor hoe AI taal begrijpt - en misverstaat.
De eenvoudigste aanpak: behandel elk teken als een token. "Hallo" wordt ['H', 'a', 'l', 'l', 'o'] - vijf tokens.
Het probleem? Woorden worden absurd lange reeksen. Een essay van 500 woorden kan 2.500+ tekentokens worden. Aangezien Transformer-modellen kwadratisch schalen met de reekslengte, is dit rekenkundig genadeloos. Erger nog, individuele tekens dragen nauwelijks betekenis - het model moet leren dat 'k', 'a', 't' samen een harig dier betekenen.
Het andere uiterste: elk woord is één token. "De kat zat" wordt ['De', 'kat', 'zat'] - compact en betekenisvol.
Maar dit creëert een ander probleem: de vocabulaire-explosie. Alleen al het Engels heeft honderdduizenden woorden. Tel daarbij spelfouten, technisch jargon en code op, en het vocabulaire wordt onbeheersbaar. Elk woord dat niet in het vocabulaire zit, wordt een onbekend [UNK]-token - een doodlopend spoor voor begrip.
Als een model met woordniveau-tokens voor het eerst "ChatGPT" tegenkomt en het staat niet in het vocabulaire, wordt het [UNK]. Hoe zou dit het vermogen van het model om over nieuwe technologie te praten kunnen beïnvloeden?
Moderne taalmodellen gebruiken subwoord-tokenisatie, die zich bevindt tussen tekens en woorden. Veelvoorkomende woorden blijven intact ("de", "en"), terwijl zeldzame woorden worden opgesplitst in betekenisvolle stukken ("on" + "geloof" + "lijk").
Dit geeft ons een beheersbaar vocabulaire (doorgaans 32.000–100.000 tokens) terwijl elke tekst verwerkt kan worden - zelfs woorden die het model nog nooit heeft gezien.
Sign in to join the discussion
BPE is het algoritme achter GPT-modellen. Zo bouwt het een vocabulaire op:
{'h', 'e', 'l', 'o', 'w', 'r', 'd', ' '}.Uitgewerkt voorbeeld met de tekst "low lower lowest":
| Stap | Meest frequente paar | Nieuw token | Vocabulaire groeit | |------|----------------------|-------------|-------------------| | 1 | l + o | lo | ...lo... | | 2 | lo + w | low | ...low... | | 3 | e + r | er | ...er... | | 4 | low + e | lowe | ...lowe... |
Na genoeg samenvoegingen ontstaan veelvoorkomende woorden en woordfragmenten op natuurlijke wijze uit de data.
BPE werd oorspronkelijk uitgevonden in 1994 als een datacompressie-algoritme. Het werd in 2015 door Sennrich et al. hergebruikt voor NLP - een prachtig voorbeeld van ideeën die disciplines overstijgen.
Gebruikt door BERT en verwante modellen. Vergelijkbaar met BPE, maar in plaats van het meest frequente paar samen te voegen, wordt het paar samengevoegd dat de aannemelijkheid van de trainingsdata maximaliseert. Subwoordstukken krijgen het voorvoegsel ## (bijv. "playing" → ['play', '##ing']).
Behandelt de invoer als een ruwe bytestroom - geen pre-tokenisatie door spaties. Dit is cruciaal voor talen zoals Japans en Chinees die geen spaties tussen woorden gebruiken. GPT-4 en LLaMA gebruiken SentencePiece-achtige benaderingen.
GPT-4 gebruikt een BPE-variant genaamd cl100k_base met ruwweg 100.000 tokens in zijn vocabulaire. Enkele verrassende gedragingen:
Hello, world - let op: de spatie is bijgevoegd).ind, iv, isibility - het splitst zeldzame woorden).def hello(): → elk trefwoord en symbool is doorgaans een eigen token.Waarom gebruiken taalmodellen subwoord-tokenisatie in plaats van hele woorden?
| Vocabulairegrootte | Voordelen | Nadelen | |-------------------|-----------|---------| | Klein (8k) | Kleiner model, minder embeddings | Langere reeksen, langzamere verwerking | | Groot (100k+) | Kortere reeksen, rijkere tokens | Grotere embeddingstabel, meer geheugen |
De juiste balans vinden is een technische beslissing die de snelheid, het geheugen en de mogelijkheden van het model beïnvloedt.
Tokenizers die voornamelijk op Engelse tekst zijn getraind, zijn bevooroordeeld. Dezelfde zin in het Hindi of Arabisch kan 3–5× meer tokens vereisen dan het Engelse equivalent, omdat die schriften ondervertegenwoordigd waren in de trainingsdata. Dit betekent:
Waarom kan dezelfde zin meer API-tokens kosten in het Hindi dan in het Engels?
Elke API-aanroep naar GPT-4, Claude of Gemini wordt per token gefactureerd. Het begrijpen van tokenisatie helpt je om:
Een vuistregel voor Engels: 1 token ≈ ¾ woord, oftewel ongeveer 4 tekens.
Hoeveel tokens is een Engels essay van 1.000 woorden bij benadering?
OpenAI's open-source tiktoken-bibliotheek laat je tekst lokaal tokeniseren met exact hetzelfde algoritme dat GPT-4 gebruikt. Probeer het op je eigen teksten om te zien hoeveel tokens je berichten echt kosten.
Als je een taalmodel zou bouwen voor een taal met weinig beschikbare data, zoals het Welsh, hoe zou je dan tokenisatie aanpakken om een eerlijke en efficiënte codering te garanderen?