Computers zijn in de kern wiskundige machines—ze verwerken getallen, geen woorden. Wanneer je ChatGPT een vraag stelt of iets online zoekt, "leest" het AI-systeem je tekst niet zoals mensen dat doen. In plaats daarvan zet het elk woord om in getallen waarmee neurale netwerken kunnen werken via de wiskundige operaties die we hebben behandeld.
Deze transformatie van menselijke taal naar getallen is de eerste stap in natural language processing. Zonder dit zou zelfs de meest geavanceerde AI nutteloos zijn—zoals een briljante wiskundige die probeert vergelijkingen op te lossen die geschreven zijn in een taal die ze niet kunnen lezen.
De Uitdaging: Woorden Hebben Geen Natuurlijke Getallen
Menselijke taal brengt verschillende uitdagingen met zich mee voor computers die niet bestaan bij andere soorten data. In tegenstelling tot beelden (pixels hebben helderheidswaarden) of audio (geluiden hebben frequenties), hebben woorden geen numerieke waarden. Hoeveel is "kat" wiskundig gezien waard? Wat is het numerieke verschil tussen "blij" en "verdrietig"?
Context Verandert Alles:
- "Bank" betekent iets anders in "rivierbank" vs "geldbank".
- "Lead" wordt anders uitgesproken in "lead the team" vs "lead pipes".
- Dezelfde letters kunnen compleet verschillende betekenissen hebben afhankelijk van de context.
Oneindige Creativiteit: Taal evolueert voortdurend met nieuwe woorden zoals "selfie" of "ghosting", nieuwe combinaties en talloze manieren om dezelfde ideeën uit te drukken.
Complexe Relaties: Woorden zijn verbonden door:
- Synoniemen: "blij" en "vrolijk".
- Categorieën: "kat" en "dier".
- Grammatica: "rennen" en "rennend".
- Analogieën: "koning" tot "koningin" als "man" tot "vrouw".
Eenvoudige getallen vatten deze rijke relaties niet.
Stap 1: Tekst in Stukken Breken
Voordat we getallen toewijzen, beslissen we welke taaleenheden we gebruiken via tokenization—het breken van doorlopende tekst in afzonderlijke tokens.
Woordniveau-Tokenization: De eerste stap is het ontleden van een zin in woorden:
"The quick brown fox jumps" → .
Maar tokenization op dit niveau brengt al uitdagingen met zich mee:
- Leestekens: Is "don't" één token of twee?
- Hoofdletters: Zijn "Cat" en "cat" hetzelfde?
- Onbekende woorden: Wat doen we met woorden die nooit eerder zijn gezien?
Moderne systemen breken woorden in betekenisvolle stukken met subword tokenization:
- "unhappiness" → .
- "impossible" → .
Dit gaat beter om met onbekende woorden—zelfs als we "unhappiness" nooit eerder zagen, kennen we misschien wel "un-", "happy" en "-ness" afzonderlijk.
Stap 2: Een Vocabulaire Creëren
We maken een vocabulaire—een complete lijst van tokens die ons systeem herkent, elk met een uniek ID-nummer. Zo doen we dat:
- Verzamel enorme hoeveelheden tekst uit boeken, websites, artikelen.
- Tokenize alles met de gekozen methode.
- Tel hoe vaak elk token voorkomt.
- Bewaar de meest voorkomende tokens.
- Wijs elk token een uniek nummer toe.
🗣️ Vocabulaire Voorbeeld: Bekijk hoe een subset van de verzamelde data eruit kan zien:
| Token | ID | Gebruik |
|---|---|---|
| <UNK> | 0 | onbekende woorden |
| the | 1 | zeer vaak |
| and | 2 | zeer vaak |
| cat | 4 | vaak |
| elephant | 47 | zeldzaam |
Let op dat we een speciaal token gebruiken, <UNK>, voor onbekende woorden die niet in het vocabulaire staan. Andere speciale tokens zijn:
<PAD>: Maakt zinnen even lang voor verwerking<START>/<END>: Markeren zinsgrenzen
Veel voorkomende woorden krijgen lage nummers, zeldzame woorden krijgen hoge nummers of worden helemaal uitgesloten.
Stap 3: Tekst Omzetten Naar Getallen
Nu zetten we elke tekst om in nummerreeksen die neurale netwerken kunnen verwerken. Laten we de zin "The cat is happy" transformeren:
- Origineel: "The cat is happy".
- Getokenized: .
- ID-nummers: .
Als we onbekende woorden tegenkomen die niet in het vocabulaire staan:
- Origineel: "The zebra is happy".
- Als "zebra" onbekend is: (zebra →
<UNK>)
Door te tokenizen, onbekende woorden af te handelen en reeksen te vullen (padding), bereiden we tekstdata voor in een consistente numerieke vorm die klaar is voor training van neurale netwerken.
Wat We Hebben Bereikt En Wat Nog Ontbreekt
Dit proces zet elke tekst om in wiskundige input die neurale netwerken kunnen verwerken, behandelt grote vocabulaires systematisch en vormt de basis voor alle tekstgebaseerde AI-systemen.
Echter, deze nummer-toewijzingen zijn willekeurig en betekenisloos:
- Nummer 4 ("cat") is wiskundig net zo vergelijkbaar met 5 ("dog") als met 47.000 (zeldterm technische term).
- Er is geen codering dat "blij" en "vrolijk" vergelijkbare dingen betekenen.
- "Bank" krijgt hetzelfde nummer in "rivierbank" en "spaarbank".
- Rijke concepten worden gereduceerd tot enkele willekeurige nummers.
Hiermee verliezen we cruciale informatie over relaties en context.
Schaal In De Praktijk
Onthoud dat deze concepten enorm uitbreiden bij echte AI-modellen, laten we bekijken hoe ze opschalen in moderne taalmodellen.
🤖 Modern Language Model Voorbeeld: De schaal van moderne taalmodellen is gigantisch en blijft groeien:
- GPT-3: ~50.000 token-vocabulaire.
- Trainingsdata: Honderden miljarden woorden.
- Verwerkingssnelheid: Duizenden zinnen per seconde.
Toch kunnen we niet eindeloos vocabulaires blijven uitbreiden vanwege opslag en rekentijd. Dit levert een vocabulaire-dilemma op:
- Kleine vocabulaires: Kunnen weinig woorden representeren, veel onbekenden.
- Grote vocabulaires: Moeilijker te leren, meer geheugen nodig.
- Oplossing: Subword tokenization als compromis.
Het balanceren van vocabulairegrootte met efficiënt leren is een kernuitdaging in grootschalige natural language processing.
Het Pad Vooruit
Eenvoudige ID-nummers wijzen richting meer geavanceerde benaderingen. In plaats van "cat" = 4, wat als we gebruikmaken van waarbij elk getal aspecten van "kat" vastlegt?
Dit is precies wat embeddings doen—ze creëren dichte, betekenisvolle representaties waarbij vergelijkbare woorden vergelijkbare getallen hebben en relaties behouden blijven in de wiskundige structuur. Embeddings openen de deur naar rijker taalbegrip door woorden te vertalen naar wiskundige ruimtes waar betekenis en relaties vanzelf ontstaan.
Belangrijkste Inzichten
Het omzetten van menselijke taal naar wiskundige representaties vereist systematische tokenization, vocabulaire-creatie en numerieke codering. Hoewel eenvoudige ID-gebaseerde representaties het basisprobleem oplossen van tekst verwerkbaar maken voor neurale netwerken, creëren ze schaarse, willekeurige representaties die geen semantische betekenis of relaties tussen woorden vastleggen.
Het begrijpen van dit proces en zijn beperkingen motiveert de noodzaak voor geavanceerdere benaderingen—embeddings—die semantische gelijkenis en relaties kunnen coderen in hun wiskundige structuur, waardoor ze veel krachtiger zijn voor taken rond taalbegrip.