Iedereen kent ondertussen ChatGPT. Toch hoor je maar weinig over hoe de chatbot nu precies in zijn werk gaat, wat toch nodig is om in te schatten wat hij al dan niet kan. Tijd dus om te duiken in de magie, wat betekent dat we gaan zwemmen in wiskunde!
Alle eer komt toe aan het zogenaamde Transformer-model dat computers menselijke taal leert begrijpen én genereren. Het bestaat uit twee belangrijke componenten: de encoder en de decoder. Beide delen werken samen om informatie te begrijpen en te produceren. OpenAI maakte ze door te leren uit terabytes aan data gevonden op het internet.
De encoder ontvangt een reeks woorden als input en zet deze om in een begrijpbare vorm voor de computer. Elk woord uit onze taal wordt hiervoor vertaald naar een punt in een meerdimensionale ruimte. Dit gebeurt aan de hand van coördinaten, net zoals we een punt op een kaart (of dus tweedimensionale ruimte) kunnen lokaliseren. Deze ruimte noemen we de embedding space. Omdat veel woorden een combinatie van veelgebruikte stukken van woorden zijn, wat men tokens noemt, is het niet nodig om elk woord afzonderlijk voor te stellen. ChatGPT heeft een woordenboek van 50.257 tokens. Initieel heeft het model wel nog geen idee waar elk token het best gepositioneerd wordt. Tijdens het leren of het trainen van het model worden de coördinaten van woorden aangepast, of dus getransformeerd, zodat ze terechtkomen naast soortgelijke woorden. Woorden die er meestal samen mee voorkomen, worden in de buurt geplaatst. Het model gebruikt lineaire algebra om de punten te manipuleren en zo een betekenisvolle representatie van de input te creëren.
Soepelere doorstroming
De manipulaties worden gestuurd door wat men self-attention noemt. Dit mechanisme stelt het Transformer-model in staat om verschillende delen van de input verschillende gewichten toe te kennen. In mensentaal betekent dit dat het model zich kan concentreren op specifieke woorden in een zin om de betekenis beter te begrijpen. Het is zoals proberen aandacht te schenken aan de belangrijkste delen van een gesprek tijdens een drukke bijeenkomst. Het maakt hierbij ook gebruik van residual connections. Dit kan je vergelijken met door een reeks kamers te lopen en in elke kamer een stukje informatie op te pikken. Dit zorgt voor een soepelere doorstroming van informatie en helpt het model om complexe structuren in teksten te begrijpen.
Het getrainde model bevat miljarden geleerde parameters om een gegeven inputvraag te kunnen begrijpen en er een antwoord op te formuleren
De decoder gebruikt op zijn beurt de informatie die het heeft verkregen van de encoder om zinnen te genereren. Hier speelt kansrekening een cruciale rol om de waarschijnlijkheid te berekenen van elk token uit zijn geleerd woordenboek om als volgend woord in de output voor te komen. Tijdens het trainen van het model worden in gegeven teksten woorden verborgen waarbij de decoder moet voorspellen welk woord er stond. Vervolgens checkt hij of zijn voorspelling juist was. Indien hij er flink naast zat, worden de parameters van het model aangepast zodat de voorspelling beter wordt. Dit gebeurt in ettelijke herhalingen tijdens het trainen aangezien een aanpassing elders weer voor fouten kan zorgen.
Het getrainde model bevat miljarden geleerde parameters om een gegeven inputvraag te kunnen begrijpen en er een antwoord op te formuleren. Het meestgebruikte netwerk, ChatGPT 3.5, heeft er zo een 175 miljard en stelt elke token voor in een 12.288-dimensionale ruimte. Elke coördinaat geeft je informatie over het token, net zoals je bijvoorbeeld een huis beschrijft aan de hand van eigenschappen zoals locatie, type, aantal slaapkamers. Het is echter niet mogelijk om van alle coördinaten in het taalmodel te zeggen welk type informatie ze juist representeren, maar tokens met een gelijkaardige betekenis hebben zeer gelijkaardige coördinaten en liggen in de buurt van tokens met wie ze vaak voorkomen.
‘Haal diep adem’
De chatbot kiest vervolgens bij het formuleren van zijn antwoord uit deze naburige tokens. Hij kiest niet altijd het meest waarschijnlijke om ook variatie in zijn antwoorden te brengen, maar hierdoor kan hij er natuurlijk flink naast zitten. Door je vraag te herformuleren, kan je hem vaak sturen in de gewenste richting. Gebruikers ontdekten dat toevoegingen als ‘Haal diep adem’ zorgen voor een beter antwoord op wiskundige vragen. Dit kan verklaard worden doordat hij tijdens het trainen ook vragen te zien kreeg van wiskundefora waar antwoorden vaak voorafgegaan worden door die uitdrukking om de lezer voor te bereiden op de moeilijke hap die volgt.
De volgende keer dat je met ChatGPT praat, kan je je dus niet enkel verwonderen over de schoonheid van zijn antwoord, maar ook over het technologische meesterwerk dat zich achter je scherm afspeelt. Toveren met taal, dat doe je met wiskunde!