Nucleus-sampling: hoe taalmodellen bepalen welk woord er volgt
Stel je voor dat je een zin moet afmaken: "De hond rende het park...". Een AI-taalmodel dat deze zin moet aanvullen, berekent voor duizenden mogelijke volgende woorden een kans: "in" krijgt misschien 40 procent, "op" 25 procent, "door" 15 procent, en daarna een lange staart van steeds onwaarschijnlijkere woorden zoals "tegen", "achter" of zelfs "vioolconcert" met een kans van bijna nul. De vraag is: welk woord kiest het model daadwerkelijk? Kiest het altijd de winnaar, of laat het af en toe ruimte voor verrassing?
Nucleus-sampling, ook wel top-p-sampling genoemd, is een methode om die keuze te maken. In plaats van blind het meest waarschijnlijke woord te pakken (wat al snel saaie, herhalende tekst oplevert) of volledig willekeurig te loten uit alle mogelijke woorden (wat al snel onzin oplevert), snijdt nucleus-sampling een slimme middenweg: het kijkt alleen naar de kleinste groep woorden die samen een bepaald percentage van de waarschijnlijkheid dekken, en loot daaruit. Die groep heet de "nucleus" (kern). Het is een van de meest gebruikte technieken achter tekstgeneratie door systemen als ChatGPT.
Wat is het precies?
Een taalmodel is een computerprogramma dat getraind is op enorme hoeveelheden tekst en daardoor heeft geleerd te voorspellen welk stukje tekst (een "token", meestal een woord of een woorddeel) waarschijnlijk op een bepaalde plek past. Voor elk volgend token berekent het model geen definitief antwoord, maar een lijst met kansen voor alle tokens die het kent: dit heet een waarschijnlijkheidsverdeling.
Het omzetten van die kansen naar daadwerkelijk gekozen tekst heet decoderen, en daar bestaan verschillende strategieën voor. Bij "greedy decoding" kiest het model steeds simpelweg het woord met de hoogste kans. Dat klinkt logisch, maar leidt in de praktijk tot saaie, herhalende en voorspelbare tekst, omdat het model telkens voor de veiligste optie kiest.
Bij pure willekeurige sampling loot het model uit de hele lijst, gewogen naar kans. Dat voorkomt herhaling, maar brengt een nieuw probleem: ook de zeer onwaarschijnlijke woorden in de lange "staart" van de verdeling krijgen af en toe een kans, en dat leidt tot incoherente, vreemde zinnen.
Een tussenoplossing is top-k-sampling: loot alleen uit de k woorden met de hoogste kans, bijvoorbeeld de beste 40. Het probleem hiermee is dat een vast getal niet altijd past. Soms is het model heel zeker (de kans is geconcentreerd op twee of drie woorden) en zijn zelfs de eerste veertig kandidaten al onzinnig. Een andere keer is het model juist heel onzeker en zijn er honderden ongeveer even waarschijnlijke woorden, maar dan sluit top-k er te veel goede opties uit.
Nucleus-sampling lost dit op door niet een vast aantal woorden te kiezen, maar een vast percentage van de totale waarschijnlijkheid. Je stelt een drempel p in, bijvoorbeeld 0,9. Het model rangschikt alle mogelijke woorden van meest naar minst waarschijnlijk en telt hun kansen bij elkaar op totdat de som 90 procent bereikt. Alle woorden die daarvoor nodig waren, vormen de nucleus. Vervolgens worden de kansen binnen die kleine groep opnieuw herschaald tot ze samen 100 procent vormen, en daaruit wordt geloot.
Het slimme zit in de aanpasbaarheid: is het model erg zeker van zijn zaak, dan bevat de nucleus misschien maar twee of drie woorden. Twijfelt het model, dan kan de nucleus honderden woorden bevatten. De omvang van de zoekruimte past zich dus automatisch aan de situatie aan, in plaats van vast te liggen zoals bij top-k.
Wat wil men ermee bereiken?
Het doel van nucleus-sampling is tekst te genereren die zowel samenhangend als natuurlijk gevarieerd aanvoelt, ongeveer zoals een mens zou schrijven. Mensen herhalen zichzelf zelden woordelijk, maar dwalen ook niet voortdurend af naar willekeurige zinnen. Onderzoekers wilden een decodeerstrategie die dat evenwicht dichter benadert dan de eerdere methoden.
Een tweede doel is het voorkomen van wat onderzoekers "tekstdegeneratie" noemen: het verschijnsel dat taalmodellen bij greedy decoding of beam search (een strategie die meerdere zinsvervolgingen tegelijk afweegt) vaak in een lus terechtkomen en dezelfde zin of frase blijven herhalen. Dit bleek een hardnekkig probleem bij vroege grote taalmodellen en was de directe aanleiding voor het ontwikkelen van nucleus-sampling.
Daarnaast speelt praktische bruikbaarheid mee: nucleus-sampling is rekenkundig goedkoop. In tegenstelling tot beam search, dat meerdere volledige zinsvervolgingen tegelijk moet doorrekenen en dus meer rekenkracht kost, hoeft nucleus-sampling maar één waarschijnlijkheidsverdeling per stap te sorteren. Dat maakt het geschikt voor toepassingen waarbij tekst in real time gegenereerd moet worden, zoals chatbots.
Voorbeelden uit de praktijk
De methode werd in 2019 geïntroduceerd in het onderzoekspaper "The Curious Case of Neural Text Degeneration" van Ari Holtzman, Jan Buys, Li Du, Maxwell Forbes en Yejin Choi, verbonden aan de University of Washington en het Allen Institute for AI. Het paper verscheen op de preprint-server arXiv en werd in 2020 gepresenteerd op ICLR, een van de belangrijkste conferenties op het gebied van machine learning.
Al snel na publicatie werd top-p (de parameter die de drempel p vertegenwoordigt) een standaardinstelling in tekstgeneratiesoftware. OpenAI nam de parameter "top_p" op in de API voor zijn GPT-modellen, waar gebruikers en ontwikkelaars deze naast de "temperature"-instelling (die de algehele willekeurigheid regelt) kunnen aanpassen.
De Nederlandse en internationale ontwikkelaarsgemeenschap komt de techniek vaak tegen via de Transformers-bibliotheek van het Franse/Amerikaanse bedrijf Hugging Face, waarin de functie "generate()" een top_p-instelling ondersteunt. Deze bibliotheek wordt wereldwijd gebruikt om open taalmodellen te laten draaien.
Open-source taalmodellen zoals Meta's LLaMA en Llama 2 (2023) en de modellen van het Franse bedrijf Mistral AI worden veelal lokaal uitgevoerd met programma's als llama.cpp of vLLM, die top-p eveneens als standaardoptie aanbieden voor wie zelf tekst wil genereren op eigen hardware.
Ook chatsystemen zoals ChatGPT combineren in de praktijk meerdere technieken tegelijk: temperature-instellingen, top-p-sampling en aanvullende filters tegen herhaling werken samen om antwoorden te genereren die natuurlijk klinken zonder in herhaling of onzin te vervallen.
Hoe ver is de techniek?
Nucleus-sampling is inmiddels een volwassen, breed geaccepteerde standaardtechniek. Vrijwel elke softwarebibliotheek voor tekstgeneratie ondersteunt het, en het wordt al sinds de vroege jaren twintig van deze eeuw op grote schaal toegepast in commerciële en open-source taalmodellen.
Toch is het geen definitieve oplossing. De keuze van de drempelwaarde p blijft een handmatige afweging: een lage p (bijvoorbeeld 0,5) geeft voorspelbaardere, veiligere tekst, terwijl een hoge p (bijvoorbeeld 0,98) meer variatie geeft maar ook een groter risico op incoherentie. Er bestaat geen universeel "juiste" waarde; de optimale instelling hangt af van de toepassing, zoals het schrijven van poëzie versus het beantwoorden van feitelijke vragen.
Bovendien lost nucleus-sampling het herhalingsprobleem niet volledig op. Modellen kunnen alsnog in herhalende patronen vervallen, vooral bij lange teksten, wat in de praktijk vaak wordt bestreden met aanvullende technieken zoals een "repetition penalty" die al gebruikte woorden tijdelijk minder waarschijnlijk maakt.
Sinds de introductie van nucleus-sampling zijn er alternatieve en aanvullende methoden voorgesteld. "Locally typical sampling", voorgesteld door onderzoeker Clara Meister en collega's in 2022, kiest woorden op basis van hoe "typisch" ze zijn voor de verdeling in plaats van simpelweg de hoogste kans. "Mirostat" probeert de mate van verrassing (perplexiteit) van de gegenereerde tekst actief bij te sturen tijdens het genereren. Recenter, rond 2024, is "min-p-sampling" voorgesteld als variant die de drempel dynamisch koppelt aan de kans van het meest waarschijnlijke woord, wat volgens voorstanders beter werkt bij hogere temperature-instellingen. Geen van deze alternatieven heeft nucleus-sampling echter volledig verdrongen; in de praktijk worden verschillende technieken vaak gecombineerd of naast elkaar aangeboden als instelbare opties.
Wie werken eraan?
De oorspronkelijke ontwikkeling vond plaats aan de University of Washington in samenwerking met het Allen Institute for AI (AI2), een onderzoeksinstituut in Seattle dat mede is opgericht door Microsoft-medeoprichter Paul Allen en zich richt op fundamenteel AI-onderzoek.
Sindsdien is de techniek verder verspreid en toegepast door vrijwel alle grote spelers in de taalmodel-industrie: OpenAI (ontwikkelaar van de GPT-modellen en ChatGPT), Meta AI (ontwikkelaar van de LLaMA-modellen), Google DeepMind, en het Franse Mistral AI. Hugging Face, een bedrijf dat gratis softwaregereedschappen voor AI-onderzoek aanbiedt, heeft een belangrijke rol gespeeld in het toegankelijk maken van de techniek voor onderzoekers en ontwikkelaars wereldwijd.
Daarnaast blijft het een actief onderwerp binnen de academische natural-language-processing-gemeenschap, met bijdragen die regelmatig verschijnen op grote AI-conferenties zoals NeurIPS, ACL, EMNLP en ICLR.