Spotlight: Language Models on Rails: ML-Assisted Narrative Games

Door Glenn van Waesberghe

Op GDC dit jaar presenteerden twee medewerkers van Google over het gebruiken van Machine Learning in Narrative Games. Ze focusten hierbinnen op hoe het mogelijk is om AI Language Models te controlleren en in de juiste richting te duwen. GPT, en de verschillende versies daarvan, zijn voorbeelden van AI Language Models. AI-taalmodellen zijn ongelooflijk krachtige hulpmiddelen, en ze worden alleen maar beter en nuttiger.

Language Models zijn machine-learning-models die in staat zijn tekst te genereren. Zij doen dit door een probabiliteitsverdeling te leren over een reeks woorden. Binnen de talk gebruikten ze het Language Model LaMDA (Language Model through Dialogue Applications).

LaMDA is een groot taalmodel dat werd getraind op grote tekstcorpussen (1.5 Trillion words) waarvan een groot deel dialogen. Eens getrain, kan LaMDA voorspellen welke woorden het meest waarschijnlijk zijn als volgende in een reeks. Om tekst te genereren nemen we een steekproef van de geleerde verdeling. Het framework dat ze binnen de talk voorstelden is model-agnostisch, het is dus niet noodzakelijk om specifiek LaMDA te gebruiken.

In de ideale wereld, zouden we willen dat een open-ended narrative game aan volgende voorwaarden voldoet:

Niet-ML-benaderingen voldoen niet aan ten minste één van deze eisen. Afhankelijk van de aanpak, focuste men op bepaalde elementen hiervan. Games die Machine Learning gebruiken kunnen, in theory, voldoen aan al deze elementen...  maar... Machine Learning heeft ook beperkingen. De maker van AI Dungeon, een oneindig gegenereerd tekst avontuur aangedreven door deep learning, beschreef de eerste versie van zijn game als volgt:

Dus, wat betekent dit als we dit soort AI systemen willen gebruiken voor games? We moeten ofwel wachten tot de models beter worden, of we ontwerpen een systeem om enkele van deze tekortkomingen aan te pakken. Dat tweede is, uiteraard, wat de presentatrices van deze talk gedaan hebben.

In volgend voorbeeld tonen we een prototype voor een game waarin de speler een kunstmuseum moet infiltreren, en een kunstwerk moet stelen.

Wat hieraan opvalt, is dat de antwoorden van de NPC wel "logisch" kloppen met de vragen van de speler, maar ze begrijpen de verdere context niet. De vragen zouden direct een alarm moeten doen afgaan bij de NPC dat er iets niet klopt, maar in plaats daarvan beantwoord hij vriendelijk de vragen.

Om dit soort problemen te verhelpen, besloten de developers om een voorbeeld te nemen aan traditionele conversational graphs. In essentie, besloten ze om een graph te gebruiken als context manager om het model in de juiste richting te sturen. Het is een soort hybride-systeem, tussenin de traditionele aanpak, en de Machine Learning aanpak.

Om dit te bereiken, moeten ze on-the-fly het AI model kunnen aanpassen, en gelukkig bestaat er iets onder de naam "Few-Shot Learning". De originele ontwikkelaars van GPT-3 ontdekten dat taalmodellen kunnen blijven leren buiten hun training.

Bij Few-Shot Learning geven we het model enkele instructies, of een taakbeschrijving, in natuurlijke taal. Dan geven we het een aantal voorbeelden van die taak die uitgevoerd wordt, en op het einde geven we het een nieuwe taak die nog niet compleet is.

In bovenstaand voorbeeld, gaat het om het vertalen van tekst in het Engels naar het Frans. Het model is in staat de taak te volbrengen door de instructies en de patronen te volgen van de voorbeelden die wij het hebben gegeven. In principe kunnen we het model elk type natuurlijke taaltaak laten uitvoeren door gewoon de input string te formatteren, en dit met verbazingwekkende nauwkeurigheid!

Je ziet hieronder een toepassing op de heist game, waar de speler kan zeggen of ze al dan niet bij een bepaald museum willen inbreken. Onderaan genereert het true/false afhankelijk van de interpretatie van de tekst, dankzij het gebruik van die instructies en voorbeelden.

We kunnen Few-Shot Learning ook gebruiken om een dialoog te genereren die contextbewust is, en ook ons verhaal vooruit helpt. Bij volgend voorbeeld willen we reageren op verdachte input door de bewakers in te schakelen.

Hieronder ziet u de structuur die ze gebruikt hebben om hun game op te bouwen, met de combinatie van de spel-doelen, de current world state, de speler input, en het AI model LaMDA.

En, tenslotte, een demo van hun eindresultaat. Onderstaande speler is een beetje antagonistisch, en gaat de limitiet van het spel testen.

Volgende speler probeert iets serieuzer te spelen.

De enige 2 stukken die door de developers werden geschreven zijn de intro en de win outro, alle andere tekst wordt door het AI model gegenereerd. Vergeleken met de test die enkel ML gebruikt zonder het framework, is dit systeem veel beter in het uitvoeren van verhaallijnen en speldoelen, en het heeft veel meer replay value dan een spel met veel ingebouwde dialoog.

Het diagram bestaat uit Nodes en Edges, die elks zorgen voor actions en conditions.

Hieronder zie je de volledige grafiek voor het spel. Dingen die de speler vraagt die hier niet binnen passen worden door het AI model zelf ingevuld.

Conclusion

All in all, presenteren ze een fantastische manier van werken, die het mogelijk maakt om AI taalmodellen te gebruiken in een game context, en om de controle over het model te behouden, en toch te kunnen genieten van de veelzijdigheid die deze model bieden. Indien u interesse heeft om dit soort model te gaan gebruiken in een game, raad ik ten zeerste aan om de talk op de GDC vault te bekijken, aangezien deze nog iets meer in-depth gaat in hoe je dit praktisch aanpakt!