27 November 2023

11 mins de lecture

Donner du style à la génération de scripts pour jeux vidéo

https://aclanthology.org/2023.nlp4convai-1.11.pdf

Introduction

Les améliorations apportées aux grands modèles de langage (Large Language Models, LLMs) ont connu d'innombrables applications dans le secteur du jeu vidéo, allant de fonctions hors ligne comme l'assistance aux rédacteurs dans leur quotidien professionnel jusqu'à des applications connectées visant par exemple à créer des personnages non jouables plus vrais que nature. Si les LLMs modernes peuvent générer des dialogues fluides, ceux-ci paraissent souvent monotones et génériques. Dans un script de jeu vidéo, chaque PNJ a sa personnalité, son idiolecte et ses tics de langage propres, qui lui donnent corps. Or il n'est pas anodin d'incorporer ces nuances à la production du LLM. Chez Ubisoft La Forge, en collaboration avec nos rédacteurs et directeurs narratifs internes, nous avons mené à bien un projet de recherche visant à résoudre ce défi : nous savons générer des textes, mais comment leur conférer le style d'un PNJ de jeu vidéo afin de créer des personnages véritablement convaincants ?

Un avantage concurrentiel de taille dans le NLP

Studio AAA réputé pour ses jeux faisant la part belle à la narration, Ubisoft dispose de plusieurs avantages concurrentiels uniques lui permettant d'apporter du soin à ses dialogues. Nous disposons notamment d'une équipe de scénaristes, de narrative designers et de voice designers professionnels à plein temps, mais aussi d'un vaste catalogue de titres Ubisoft AAA dont les données textuelles englobent pêle-mêle interjections de PNJ, scènes cinématiques, articles de lore ou encore textes d'interface comme des descriptions de quêtes pour guider l'entraînement de nos modèles.

Dans le cadre de ce projet, nous avons collecté les scripts de 23 jeux vidéo Ubisoft publiés – dont de nombreux titres connus tirés des licences Assassin's Creed, Watch Dogs, Far Cry et Tom Clancy – pour composer un ensemble de données unique axé sur les cinématiques de jeux vidéo : le « dataset UbiScene ». Après un travail de fond visant à lisser les spécificités de chaque production (par exemple la duplication des dialogues pour les personnages nécessitant un doublage masculin et un autre féminin), nous avons abouti à un corpus dont vous trouverez ci-dessous les statistiques globales ainsi qu'un échantillon représentatif.

[LA FORGE Studio] Generating Video Game Scripts with Style - image 1

[LA FORGE Studio] Generating Video Game Scripts with Style - image 2

Travaux existants sur la génération de dialogues stylistiques

Les travaux universitaires récents sur la génération de dialogues stylistiques se concentrent sur l'utilisation d'attributs tels qu'une définition explicite du style recherché, la description du personnage, un corpus limité d'énoncés précédents de ce personnage ou l'historique de la conversation en cours pour représenter le style d'un personnage. Si ces méthodes produisent des résultats intéressants, nous soutenons que le style d'un PNJ de jeu vidéo est trop complexe pour être résumé en quelques phrases ; et, en outre, que ces approches ne sont pas compatibles avec le développement progressif d'un personnage qui se produit au cours du processus d'écriture, incrémentiel par nature.

Les préférences sémantiques, vecteur du style d'un personnage

Par une journée d'été ensoleillée dans les bureaux d'Ubisoft à Montréal, notre équipe se dirigeait vers le toit-terrasse pour déjeuner. L'un de nous, Québécois bilingue, a fait observer en anglais qu'il espérait avoir une table sous un parasol. Un autre collaborateur, originaire des États-Unis, a fait remarquer que le choix du mot « parasol », certes tout à fait correct en anglais, aurait été étrange dans son pays natal où l'on utiliserait plutôt « umbrella ».

Cette conversation dans l'escalier, poursuivie au cours du déjeuner avec autrement plus d'enthousiasme et de rigueur linguistique, nous a conduits à l'hypothèse directrice de ce projet : une composante importante de l'expression d'une personne a trait simplement à ses choix de mots accessoires ou sémantiquement échangeables avec d'autres paradigmes en contexte.

Pour convertir cette intuition en modèle informatique formel, nous sommes partis du modèle linguistique des k plus proches voisins (kNN) afin d'ajouter de la personnalité aux générations des LLMs, conçues pour créer des exemples de textes à partir d'un corpus de références textuelles existantes. Bien que ce corpus de références puisse prendre diverses formes, nous nous sommes aperçus que s'il consistait en une liste complète de toutes les répliques précédemment attribuées à un personnage, toutes les préférences sémantiques que les scénaristes avaient accordées au personnage seraient immédiatement disponibles pour être réutilisées.

Après quelques mois à affiner les données, concevoir un modèle et le tester, notre méthode finale s'est axée sur une synergie entre deux composants qui encadrent le processus de génération des dialogues :

  • Le module de génération de dialogue pour lequel nous avons utilisé GPT-J, un LLM open source englobant 6 milliards de paramètres. Ce composant est chargé de coder le contexte du dialogue et de garantir un flux cohérent avec la scène en cours.
  • Un module de récupération de token non paramétrique capable d'accéder à une collection de toutes les lignes avec contexte du personnage. Ce composant est chargé d'incorporer le style du personnage (en termes de choix de mots) dans les lignes générées.

Ces deux composants génèrent les textes en sélectionnant itérativement le mot suivant ; notre principale contribution scientifique est la conception d'un algorithme de « commutation informée », chargé de choisir le composant qui doit fournir la suite à chaque itération.  Dans l'exemple de génération ci-dessous, le texte coloré est tiré des « énoncés passés » tandis que le texte en noir est créé par le module de génération de dialogue.

[LA FORGE Studio] Generating Video Game Scripts with Style - image 3

Comment créer un index de style de personnage ?

Ces « énoncés passés », représentés dans notre modèle par un index de style propre à chaque personnage, servent de base de données dans le modèle kNN-LM.  À partir d'une liste d'énoncés passés pour un personnage , nous pouvons définir son index de style  comme l'ensemble de paires clé/valeur suivant :

[LA FORGE Studio] Generating Video Game Scripts with Style - formula 1

où f(wi-) est un codage vectoriel du préfixe de s à l'indice i, mais avant que la décision de produire w_i n'ait été prise. En clair, nous créons une entrée dans l'index pour chaque mot de chaque énoncé passé, la clé de l'entrée étant une représentation codée du dialogue aboutissant à ce mot.

Lors de l'inférence, nous connaissons le contexte de dialogue c et l'index de style du locuteur. Nous récupérons alors les k=10 plus proches voisins de f(c) parmi les clés de S, sur la base de la distance euclidienne. Après récupération des tokens, nous appliquons une distribution de probabilité au vocabulaire du LLM (que nous désignons par pkNN) et nous l'associons à la distribution de probabilité renvoyée par le LLM (pLM) en utilisant un terme d'interpolation λ.

[LA FORGE Studio] Generating Video Game Scripts with Style - formula 2

Le paramètre λ est important, puisqu'il correspond grosso modo à une commutation entre pkNN et pLM : il formalise de façon mathématique une décision pourtant floue de confier le choix du mot suivant au style de personnage ou au LLM génératif. Une augmentation globale de λ produirait des répliques plus axées sur le style mais moins fluides ; l'index de style de personnage étant de plus faible ampleur que le corpus d'entraînement d'un LLM, il arrive fréquemment que tous les tokens récupérés ne soient pas pertinents dans le cadre très spécifique de notre dialogue. À l'inverse, un λ constant mais faible se traduirait par des phrases plus fluides mais moins stylisées.

Il apparaît logiquement que le choix de λ doit prendre en compte plusieurs facteurs, dont les distances euclidiennes réelles des plus proches voisins et le contexte du dialogue. De ce fait, notre principal objectif de recherche était de trouver comment définir dynamiquement λ à chaque étape de génération afin d'éviter d'utiliser l'index de style de personnage lorsque le LLM n'a pas de besoin stylistique, ou lorsque les tokens récupérés ne sont pas pertinents dans un contexte de dialogue particulier.

Création d'un adaptateur stylistique

Nous avons identifié les facteurs suivants qui nous permettent d'entraîner un modèle d'interpolation entre les deux distributions de probabilité :

  • Le last hidden state du LLM : il représente le contexte du dialogue.

  • Les distances brutes renvoyées par le composant kNN : elles indiquent le degré de confiance du modèle vis-à-vis des tokens récupérés.

  • La probabilité des k tokens récupérés dans le cadre du LLM : elle quantifie l'adéquation des tokens récupérés par rapport au contexte actuel.

Nous concaténons les représentations vectorisées de ces facteurs en un seul vecteur que nous désignons par [LA FORGE Studio] Generating Video Game Scripts with Style - hi formula, puis nous l'utilisons afin de produire à chaque étape une prédiction d'exécution pour λ, comme suit :

[LA FORGE Studio] Generating Video Game Scripts with Style - formula 3

où σ correspond à la fonction sigmoïde et W à un vecteur paramétrique. Une fois tous les éléments en place, notre modèle de probabilité global peut être résumé dans la figure ci-dessous.

[LA FORGE Studio] Generating Video Game Scripts with Style - image 4

Après avoir entraîné notre architecture avec le dataset UbiScene, nous avons examiné un histogramme des valeurs pour λ prédites dans tout notre ensemble de développement. Nous avons observé une distribution bimodale avec un pic proche de zéro, ce qui indique que le modèle a effectivement été en mesure de construire un comportement de commutation de style dans lequel il a pu identifier les cas où il était préférable d'écarter le style et ceux où il était utile de l'incorporer dans les prédictions du système.

[LA FORGE Studio] Generating Video Game Scripts with Style - image 5

Résultats

Nous avons comparé notre modèle avec une version à λ fixe, ainsi qu'avec une version non optimisée d'une technique d'adaptation de style analogue appelée Pseudo Dialog Prompting (voir notre compte rendu pour plus d'informations).

Pour les mesures d'évaluation, nous avons utilisé la perplexité, la précision d'un classificateur de style auxiliaire et une correspondance de n-grammes[*] , conformément à des travaux antérieurs sur la génération de dialogues stylisés.

[LA FORGE Studio] Generating Video Game Scripts with Style - image 6

Ces résultats mettent en évidence que notre méthode obtient des résultats supérieurs à la méthode kNN-LM standard avec terme d'interpolation fixe (où λ était ajusté à l'ensemble de validation d'UbiScene). Nous notons également que notre méthode peut être combinée au Pseudo Dialog Prompting ainsi qu'à d'autres méthodes de génération de dialogues stylisés de pointe pour améliorer encore 4/5 des mesures, comme le montre la moitié inférieure du tableau.

Une analyse qualitative des résultats indique clairement que notre modèle utilise l'idiolecte du personnage pour effectuer ses prédictions. Il convient toutefois de noter que dans notre analyse qualitative, nous avons remarqué une légère diminution de la fluidité, surtout lorsque le modèle tente d'écrire des répliques pour les narrateurs : l'utilisation du choix des paradigmes comme vecteur de style est alors légèrement inappropriée et se manifeste par une tendance à débiter des noms propres à l'univers du jeu en question.

Conclusion

Comme on peut le constater, il existe toujours une disparité importante entre tous les modèles que nous avons testés et les scripts authentiques rédigés par des humains. Même si cela indique que les LLMs sont loin d'atteindre le niveau de génération stylistique des auteurs humains, notre modèle réalise un pas en avant significatif dans l'écosystème des outils de création de premiers jets ; premiers jets qui peuvent ensuite être édités ou servir d'inspiration pour stimuler le processus créatif, en adaptant la génération pour produire des idiolectes de personnages arbitraires. Dans nos travaux futurs, nous continuerons à développer nos techniques et à intégrer le Style Adaptive Semiparametric Scriptwriter (SASS) dans nos déploiements de la génération linguistique appliquée au pipeline des jeux vidéo AAA.


* Plus d'informations dans notre article.