Een van de problemen rond AI is dat de technologie zeer slecht wordt begrepen. Tuurlijk, de makers van AI-modellen weten in hoofdlijnen hoe deze werken. Immers, bij het ontwikkelen van een model wordt een bepaalde systeemarchitectuur bedacht en dit proces kan worden beschreven en uitgelegd. Tegelijkertijd worden deze modellen ieder jaar steeds groter en complexer, wat als gevolg heeft dat dergelijke AI-modellen tegenwoordig eigenlijk niet meer te bevatten zijn voor een mens. Hoewel de individuele stappen die een AI-model maakt begrepen worden, gebeuren er binnen die stappen zo veel berekeningen en zo veel complexe wiskunde dat het overzicht eigenlijk niet meer te bewaren is.
De opkomst van AI-systemen zoals ChatGPT heeft er dan ook voor gezorgd dat er veel onderzoek wordt gedaan naar de vraag hoé een AI-taalmodel zoals ChatGPT tot diens antwoorden komt. Onderzoekers geven een taalmodel een prompt, voeren die uit; en gaan vervolgens maanden aan het werk om stap voor stap uit te zoeken hoe het model tot dat antwoord is gekomen. Het is een langdurig arbeidsintensief traject, maar wel een met vaak zeer fascinerende uitkomsten.
De grote hamvraag die wordt gesteld is met name: kan zo een ChatGPT nou eigenlijk denken? We spreken immers al tijden over Artificiële Intelligentie, wat impliceert dat er een zeker intelligent vermogen achter deze modellen zit. Tegelijkertijd, de modellen zijn ontwikkeld als een statistische rekentool welke bedoeld zijn om bepaalde voorspellingen te maken. In feite berekend een AI-taalmodel enkel welk woord of lettergreep statistisch gezien het beste achter een inputzin moet komen. Toch zien we dat hier regelmatig heel verrassende en ogenschijnlijk slimme antwoorden uit voort komen.
In dit eerste verdiepingsartikel gaan we hier nader op in. Hierbij kijken we eerst naar de basis hoe AI-modellen werken: welke technieken worden er gebruikt om te berekenen welk woord een taalmodel achter een zin moet plakken? Hiervoor wordt een uiteenzetting gemaakt van de werking van AI-modellen. Zaken zoals, wat is machine learning? Hoe werkt de architectuur van AI-taalmodellen; en hoe kan een taalmodel worden ‘begrijpen’? Hoe komt een AI-taalmodel tot diens antwoord? In dit artikel blijf ik toegespitst op AI-taalmodellen, omdat deze op dit moment het meest state-of-the-art zijn. Andere AI-modellen zoals beeldmodellen en audiomodellen werken wel op vergelijkbare wijze maar zijn vaak lastiger te interpreteren. Daarnaast is er naar taalmodellen betrekkelijk veel wetenschappelijk onderzoek gedaan.
Generatieve AI-taalmodellen zoals (Chat)GPT, LLaMa, Gemini en CoPilot werken allemaal op basis van dezelfde statistische rekentechnieken. Dat is contra intuïtief omdat we gewend zijn om over computers te denken als systemen die letterlijke (discrete) instructies uitvoeren. Bij het aansturen van een computer zoals we gewend zijn, op basis van ‘conditionele logica’, schrijft een programmeur een stuk computercode en daarin omschrijft de programmeur voor de computer hoe het precies moet handelen in verschillende situaties. ‘Als situatie A zich voordoet, voer dan de code in functie Z uit’. Als-dit-dan-dat-logica wordt het ook wel genoemd. Het fijne hiervan is dat je dit kan samenvatten in een beslisboom. De computer is voorspelbaar omdat de code die is ingevoerd voorspelbaar is.
De statistische technieken waarop AI-taalmodellen gebaseerd zijn voegt daar een minder voorspelbare dimensie aan toe. In plaats van precies te omschrijven hoe een computer moet handelen in verschillende situaties wordt de computer getraind om patronen te herkennen in een bepaalde dataset en op basis daarvan voorspellingen te doen. De computer heeft niet een exact beslismodel waarmee het de voorspelling maakt, maar gebruikt de kennis die het heeft opgedaan bij het trainen om statistisch te berekenen wat de kans op een bepaalde uitkomst is.
Laten we een simpel voorbeeld gebruiken: een machine learning-model om te voorspellen wat de prijs van een huis moet zijn. Hiervoor kunnen we een aantal input variabelen gebruiken zoals de grootte van het huis in vierkante meter, het aantal slaapkamers, het bouwjaar; en het jaar waarin het huis is verkocht. Hiervoor wordt eerst een dataset verzameld van vele duizenden of tienduizenden voorbeelden. Dit zal bestaan uit een gegevensset van echte huizen met informatie van de grootte in m², aantal slaapkamers, bouwjaar en jaar van verkoop; maar het belangrijkste: de prijs waarvoor het huis uiteindelijk is verkocht. Deze dataset wordt gevoed aan een machine learning-model die vervolgens aan de slag gaat om de onderliggende patronen in de dataset te herkennen. Vervolgens, nadat het model getraind is, kan er een nieuwe casus aan het model gevoed worden en kan deze voorspellen wat de waarde van dat huis dient te zijn.
Tijdens het trainingsproces gaat het machine learning-model op zichzelf de verschillende inputvariabelen – ook wel ‘factoren’ genoemd – tegen elkaar afwegen. Hoe zwaar moeten factoren wegen om de beste voorspelling te maken? Deze weging van factoren worden uiteindelijk samengevoegd in een zogenoemd ‘neuraal netwerk’. Een (simpel) neuraal netwerk kan er als volgt uitzien:
In het diagram van het neurale netwerk zijn zogenoemde neuronen en synapsen te zien. Deze worden in het vakjargon ook wel nodes en edges genoemd. De nodes zijn de grote cirkels en de edges de pijltjes die getrokken worden tussen neuronen. Nodes nemen een bepaalde waarde aan door de input die voortkomt uit edges. Aan de linkerkant in het diagram zitten de input-factoren van het model in de vorm van 4 nodes. Dit is de input van het machine learning-model en deze factoren hebben invloed op de latere onderdelen van het model. De waarde van de inputnodes zijn de waarde van de casus. Stel: je voedt het model met een casus van een huis met een grootte van 65 m², 3 slaapkamers, bouwjaar 1928 en verkoopjaar 2024; dan is de waarde van de inputnodes respectievelijk: 65, 3, 1928, 2024.
Even een sprong naar de rechterkant van het diagram: hier zit de uitkomst van het neurale netwerk; wat in dit geval de verkoopprijs van het huis betreft. Stel, de uitkomst van de berekening van de huisprijs komt op 450.000 uit, dan zal dat de waarde worden van deze outputnode.
Om tot die uitkomst te komen moeten eerst berekeningen worden uitgevoerd in het midden van het diagram. Daar heb je een extra laag nodes die in vakjargon ook wel de hidden layers worden genoemd. Deze tussenlaag is wat het mogelijk maakt om diepere patronen te combineren en daarmee tot een accurate huizenprijs te komen. Wat er gebeurd is dat er verschillende factoren samen worden gewogen. Misschien heeft het model ontdekt dat de grootste voorspelling van de huizenprijs een combinatie tussen de vierkante meters en het bouwjaar is. In dat geval zullen deze factoren via edges verbonden worden met een van de nodes in de tussenlaag; en vervolgens een positieve invloed uitoefenen op de uitkomst (uitgebeeld met edges met de kleur blauw).
Tegelijk kan het ook zijn dat bepaalde factoren een negatieve invloed uitoefenen op de verkoopprijs, bijvoorbeeld indien een huis zeer oud is en ook weinig slaapkamers heeft. In dat geval kunnen die factoren ook gecombineerd worden in een andere node van de tussenlaag en een negatieve invloed uitoefenen op de uitkomst (uitgebeeld in de kleur rood). Na het berekenen van de waarde van alle nodes in het midden is het mogelijk om de waarde van de outputnode te berekenen. Iedere keer dat een AI-model een prompt beantwoordt, dan wordt er in feite de waarde van alle hidden layers berekend waarna een uitkomst kan worden gegeven.
Uiteindelijk is machine learning wiskunde. Het systeem maakt voorspellingen aan de hand van gegevens waarmee het model getraind is. Het is complexe statistiek, maar nog steeds in de kern statistiek. Wat vooral belangrijk is, is dat de mens die het systeem ontwikkelt minder zicht heeft op hoe het systeem precies werkt. Het systeem vindt de statistisch gezien beste verhouding tussen neuronen waarmee het zo min mogelijk fouten maakt. Sterker nog, bij complexere modellen zoals taalmodellen bepaalt het machine learning systeem tijdens de training zelf uit hoeveel hidden layers het bestaat. Dit is aanzienlijk minder invloed dan een programmeur die een computer precies instrueert hoe het moet handelen in verschillende gevallen. En zeker nieuwe generatieve AI-modellen doen hier nog een schepje bovenop.
Het model waarmee we huizenprijzen voorspellen is een betrekkelijk simpel voorbeeld. Ik hoop dan ook dat de vorige paragraaf goed te begrijpen was, want de werking van taalmodellen is nog een flink extra stuk complexer en abstracter. Want het berekenen van huizenprijzen is een ding, maar hoe is het mogelijk dat een statistisch computermodel kookrecepten bedenkt? Hoe is het mogelijk om via complexe wiskunde een verhaal te schrijven? Hiervoor moeten we kijken naar de zogenoemde Transformer-architectuur en de multidimensionale wiskunde die daarbij komt kijken. Om het behapbaar te houden zal ik daarbij zo veel mogelijk op een conceptueel niveau blijven. Van de hoge wiskunde blijf ik ver weg want daar word ik zelf ook duizelig van.
Als eerste is het belangrijk om de schaal van AI-taalmodellen op te merken. Een simpel machine learning-model zoals het huizenprijsvoorbeeld is betrekkelijk simpel omdat het uit weinig inputvariabelen bestaat en uit maar enkele hidden layers. Een taalmodel zoals ChatGPT heeft vele duizenden inputs en een gigantisch netwerk aan tussengelegen lagen. Zo heeft de eerste publieke versie van ChatGPT een zogenoemde ‘context length’ van 4096; wat betekent dat ChatGPT kan werken met 4096 inputvariabelen. Bij ChatGPT zijn deze variabelen een soort lettergrepen, tokens genaamd, maar voor het gemak is het makkelijker om deze als woorden voor je te zien. In feite neemt ChatGPT een input aan woorden met een maximale lengte van 4096 en gaat dan aan de hand van de vele en complexe tussenlagen berekenen welk woord moet volgen op die tekst. De output van ChatGPT is simpelweg een lijst met woorden met een score en het woord met de hoogste score zal worden gekozen. Doe dit vele keren achter elkaar en ChatGPT geeft antwoorden in de vorm van zinnen en langere teksten.
Wanneer een taalmodel een zin van woorden ontvangt dan gaat het deze woorden eerst individueel analyseren. Daarbij onderzoekt het eerst wat de betekenis van woorden kan zijn op individueel niveau. Hiervoor maakt het gebruik van zogenoemde multidimensionale wiskundige ‘embeddings’. Je kan dit eigenlijk zien als een set van verschillende schalen van betekenis. Zo kunnen we denken over woorden als het uitdrukken van bepaalde concepten. Een ‘toren’, ‘flat’ en een ‘berg’ zijn alle drie woorden die betrekking hebben op iets dat ‘hoog’ is. Een van de schalen kan dan gaan over de ‘hoogte’-dimensie van een woord. Aan de andere kant van die dimensie kunnen dan woorden zitten die iets laags vertegenwoordigen, zoals een ‘tafel’, ‘vloerlamp’, ‘kleed’, maar ook zaken zoals ‘gebukt’. Deze dimensie kan een taalmodel uitdrukken in een waarde en daarmee uitdrukken dat een woord een kleinere of grotere ‘hoogte’-dimensie heeft.
Ditzelfde kan met allerlei andere dimensies, bijvoorbeeld of een woord meer mannelijk of vrouwelijk is, of het woord meer juridisch-formeel of informeel is; of dat het woord meer komisch van aard is. De exacte dimensies die een taalmodel gebruikt weten we niet want deze heeft het model zelf wiskundig berekend tijdens het trainingsproces. We weten wel dat een taalmodel zoals GPT-3 gebruik maakt van 12.288 verschillende dimensies om betekenis aan woorden toe te kennen.
Ieder woord dat het taalmodel analyseert krijgt aan het einde van deze fase een vector die wijst naar een coördinaat in de interne wiskundige wereld van 12.288 dimensies. Daarmee heeft het taalmodel in ieder geval enige betekenis aan woorden toegekend. Echter heeft het model nog niet de context waarin de woorden zich bevinden meegenomen. Een taalmodel moet de betekenis van woorden ‘begrijpen’. Want de betekenis van woorden is veelal afhankelijk van de context in de zin waarin het staat. Stel je hebt de zinnen: “Mijn broer en ik staan bij de winkel. Mijn vriend komt aanlopen. Hij zegt: lekker weertje hè?”, dan slaat het woord ‘hij’ op de vriend die komt aanlopen. Dit halen we impliciet uit de context ook al is de tekst zelf ambigu hierover. Woorden hebben verschillende betekenissen. Zo kan het woord ‘model’ gaan over een kledingmodel, maar ook over een AI-model. Een taalmodel moet deze nuances begrijpen en dat doet het met een mechanisme dat ‘attention’ wordt genoemd.
We hebben nu dus een zin aan woorden met daaraan gekoppelde betekenissen van die woorden. Hoe wordt nu de samenhang tussen de woorden bepaald? Laten we hiervoor een voorbeeldzin gebruiken zoals: “Het kleine wollige schaap liep door de groene weide”. Een taalmodel als ChatGPT stapt woord voor woord door de zin heen en voert een aantal handelingen uit over die woorden. In feite stelt het een aantal vragen. Zo kan een van die vragen zijn: “Is dit woord een zelfstandig naamwoord en zijn er bijvoeglijk naamwoorden voorafgaand aan dit woord?” Bij het doorlopen van de zin komt het dan de bijvoeglijk naamwoorden tegen en vervolgens gaat het deze woorden met elkaar ‘verrekenen’. Naar het voorbeeld komt het dan het woord ‘schaap’ tegen, stelt de vraag en komt daarbij de woorden ‘kleine’ en ‘wollige’ tegen. Vervolgens vermenigvuldigt het als het ware de kenmerken van de woorden ‘kleine’ en ‘wollige’ met ‘schaap’, waardoor deze de kenmerken erft zoals de ‘hoogte’-dimensie maar ook andere zaken zoals vorm en schattigheid.
Dit proces voert een taalmodel vele keren over vele woorden en met vele vragen uit. Zo zal het ongetwijfeld ook een vraag stellen zoals: “Is dit woord een werkwoord en is er een zelfstandig naamwoord op korte afstand hiervan?”, waarmee het uitzoekt wat voor een actie een object onderneemt. Uiteindelijk, na vele rondes aan berekeningen krijgt het taalmodel een conceptueel begrip van de tekst waarmee het is gevoed. Het ziet de multidimensionale betekenis van woorden, de samenhang tussen woorden en de zinstructuur waarmee het kan voorspellen welk woord er achter de zin moet komen. En hiermee kan het correct voorspellen hoe een aardappeltruffelrecept eruit moet zien.
De vraag is natuurlijk: is dit denken? De methodiek die een AI-taalmodel gebruikt om tot diens antwoorden te komen is volledig anders dan hoe een mens denkt. De taalmodel-methode zitten voordelen aan, maar ook zeker nadelen. Nadelig is onder andere persistentie. Wanneer een mens nadenkt dan neemt deze alle gedachten mee die al het hele leven van invloed zijn geweest op het brein van de persoon. Hierdoor kunnen vele zaken worden meegenomen waardoor de informatiebron groter is, de context breder is en er meer perspectief is om betekenis toe te kennen aan de vraag die gesteld wordt. Een AI-taalmodel ontstaat op het moment dat de conversatie start. De enige informatie die een taalmodel brengt is dat waarmee het getraind is tot een bepaald moment in de tijd en de vraag die wordt ingebracht in het gesprek. Deze verwerking van informatie is geïsoleerd van alle andere gesprekken die er worden gevoerd en hebben dan ook in beginsel geen invloed op elkaar; en er kan dan ook niet van geleerd worden.
Voordelen zijn er echter ook. Zo kan een taalmodel een veel dieper begrip van woorden hebben op een niveau wat voor mensen totaal onhaalbaar is. De subtiele betekenis van woorden die afhangt van kleine details in de context is iets waar taalmodellen in excelleren. Dit is de reden waarom een ChatGPT zo bijzonder goed is in het samenvatten of omzetten van teksten naar simpelere taal. Het snapt de patronen achter complexe teksten en de patronen achter simpele teksten en kan zonder moeite hiertussen wisselen.
Maar of een AI kan denken? Dat hangt af van je filosofische invalshoek. In ieder geval is het ‘denkproces’ zeer indrukwekkend en fascinerend. Dit was het eerste deel in een reeks verdiepingsartikelen over de werking van AI. Binnenkort kun je ook artikelen verwachten over de vraag of AI creatief kan zijn, of AI kan vergeten en of AI kan redeneren. Schrijf je in op onze nieuwsbrief zodat je deze artikelen niet mist!
Meld je nu aan voor één van de nieuwsbrieven van ICTRecht en blijf op de hoogte van onderwerpen zoals AI, contracteren, informatiebeveiliging, e-commerce, privacy, zorg & ICT en overheid.