paint-brush
Comprendre les modèles de langage statistiques et la génération de langage hiérarchiqueby@teleplay
827
827

Comprendre les modèles de langage statistiques et la génération de langage hiérarchique

Des modèles linguistiques tels que Chinchilla LLM et GPT-3 sont utilisés pour la génération de texte basée sur des probabilités statistiques. Dramatron est un outil interactif de co-écriture de récits, tirant parti de l'ingénierie rapide et de la génération hiérarchique pour une narration cohérente.
featured image - Comprendre les modèles de langage statistiques et la génération de langage hiérarchique
Teleplay Technology  HackerNoon profile picture
0-item

Auteurs:

(1) PIOTR MIROWSKI et KORY W. MATHEWSON, DeepMind, Royaume-Uni et les deux auteurs ont contribué à parts égales à cette recherche ;

(2) JAYLEN PITTMAN, Université de Stanford, États-Unis et travaux effectués à DeepMind ;

(3) RICHARD EVANS, DeepMind, Royaume-Uni.

Tableau des liens

Résumé et introduction

La narration, la forme des histoires et les lignes de connexion

L'utilisation de grands modèles de langage pour la génération de texte créatif

Évaluation du texte généré par de grands modèles linguistiques

Entretiens avec les participants

Enquêtes auprès des participants

Discussion et travaux futurs

Conclusions, remerciements et références

A. TRAVAUX CONNEXES SUR LA GÉNÉRATION AUTOMATISÉE D'HISTOIRES ET LA GÉNÉRATION D'HISTOIRES CONTRÔLABLES

B. DISCUSSION SUPPLÉMENTAIRE SUR LES PIÈCES DE L'ÉQUIPE CRÉATIVE DE BOTS

C. DÉTAILS DES OBSERVATIONS QUANTITATIVES

D. CHIFFRES COMPLÉMENTAIRES

E. PRÉFIXES D'INVITE COMPLÈTES POUR DRAMATRON

F. SORTIE BRUTE GÉNÉRÉE PAR DRAMATRON

G. SCRIPTS CO-ÉCRITS

3 L'UTILISATION DE GRANDS MODÈLES DE LANGAGE POUR LA GÉNÉRATION DE TEXTES CRÉATIFS

3.1 Modèles de langage

Les modèles de langage statistiques (modèles de langage ou LM) modélisent la probabilité d'apparition de jetons de texte dans un contexte de jetons précédents : les jetons peuvent être des mots, des caractères ou des bigrammes de caractères. Grâce à l'apprentissage automatique, les LM sont formés sur de grands corpus de texte pour se rapprocher de la distribution de probabilité conditionnelle. Les LM peuvent calculer la probabilité d'un morceau de texte et générer un nouveau texte dans le prolongement d'une invite de texte. La génération de texte est probabiliste et implique un échantillonnage aléatoire à partir des probabilités conditionnelles. Différentes graines aléatoires donnent lieu à différents échantillons aléatoires. La figure 3 illustre un exemple d'alimentation d'une invite de texte et d'utilisation du LM pour générer différents échantillons de texte.


Fig. 3. Illustration de la configuration d'invite pour le modèle de langage, avec une invite générée par l'utilisateur ou Dramatron étant concaténée à un préfixe et décorée de balises. Plusieurs sorties de titre sont générées pour différentes graines aléatoires, chacune se terminant par la balise <end> .


Dans cette étude, nous avons utilisé le grand modèle de langage Chinchilla (LLM) [48], représenté comme un réseau neuronal avec 70B de paramètres et qui a été formé sur 1,4T de jetons de l'ensemble de données MassiveText. Comme décrit par Rae et al. [84], ce corpus contient 604 millions de documents MassiveWeb, 4 millions de livres, 361 millions de questions et réponses de C4, 1,1 milliard d'articles de presse, 142 millions d'entrées de code GitHub et 6 millions d'articles Wikipédia. Notez que des LLM alternatifs pourraient être utilisés, tels que GPT-3.[1]

3.2 Génération de langage hiérarchique pour contourner les contextes limités


Dans ce projet, nous souhaitons un système capable de générer un texte entier présentant une cohérence sémantique à long terme sans nécessairement nécessiter un humain dans la boucle. Nous encourageons les rédacteurs à éditer et modifier le script à tous les niveaux de la hiérarchie. Mais nous n’avons pas besoin d’un être humain pour parvenir à une cohérence sémantique à long terme. La méthode hiérarchique générera un script entier présentant une cohérence raisonnable à long terme à partir d’une seule ligne de journal sans intervention humaine. Notre approche pour parvenir à une cohérence sémantique à long terme consiste à générer l’histoire de manière hiérarchique.


Notre génération narrative est divisée en 3 couches hiérarchiques d'abstraction. La couche la plus élevée est la ligne log définie dans la section 2 : une seule phrase décrivant le conflit dramatique central. La couche intermédiaire contient des descriptions de personnages, un aperçu de l'intrigue (une séquence de descriptions de scènes de haut niveau avec les emplacements correspondants) et des descriptions d'emplacements. La couche inférieure est le véritable dialogue des personnages pour le texte du script. De cette manière, le contenu de chaque couche est cohérent avec le contenu des autres couches. Notez que « cohérent » fait ici référence à « former un tout unifié », sans supposer de bon sens ni de cohérence logique ou émotionnelle dans le texte généré par le LLM.


Comme illustré sur la figure 1, l'histoire est générée de haut en bas [93, 108, 113]. Une fois que l'humain a fourni la ligne de journal, Dramatron génère une liste de personnages, puis une intrigue, puis des descriptions de chaque emplacement mentionné dans l'intrigue. Les personnages, l'intrigue et les descriptions de lieux répondent tous aux spécifications de la ligne de journal, en plus des dépendances causales, permises par le chaînage d'invites [118] et expliquées sur le diagramme de la figure 1. Enfin, pour chaque scène du plan de l'intrigue, Dramatron génère dialogue satisfaisant aux spécifications de scène générées précédemment. Les dialogues résultants sont annexés ensemble pour générer le résultat final. Cette génération hiérarchique a été conçue pour permettre une cohérence sémantique à long terme. Une méthode similaire, quoique inversée, de décomposition récursive des tâches a été utilisée pour générer des résumés d’intrigues [117]. L'incorporation de la couche intermédiaire, où l'intrigue est résumée sous la forme d'une séquence de descriptions de scènes abstraites, permet à l'intrigue entière de s'insérer dans la fenêtre contextuelle des modèles de langage. Cela surmonte les limitations antérieures en matière de cohérence sémantique à long terme. Notre méthode permet aux éléments de la scène finale de clôturer de manière dramatique les éléments introduits dans la scène d'ouverture[3], et aux histoires générées de suivre les arcs narratifs (voir Section 2).

3.3 L'importance d'une ingénierie rapide

Dramatron utilise plusieurs invites codées en dur (c'est-à-dire des préfixes d'entrée) pour guider le grand modèle de langage. L'ingénierie rapide est un moyen courant par lequel les utilisateurs contrôlent ou influencent les LLM [12]. Chaque invite contient quelques exemples de résultats souhaitables. Ceux-ci sont inclus dans le préfixe et l'adaptation à seulement une poignée d'exemples est parfois appelée apprentissage en quelques étapes. Comme l'illustre la figure 3, les invites sont concaténées avec les entrées et/ou sorties fournies par l'utilisateur des générations LLM précédentes. Cette méthode est appelée chaînage d'invites [118], qui est un type d'invite algorithmique [24]. Aux niveaux inférieurs de la hiérarchie (voir Fig. 1), les invites sont enchaînées avec les sorties des niveaux supérieurs de la hiérarchie.


Dans ce travail, nous avons principalement utilisé deux ensembles d'invites : l'un basé sur la tragédie grecque antique Médée d'Euripide et l'autre basé sur des films de science-fiction. Pour Dramatron, chaque ensemble d'invites est composé de : 1) une invite de titre, 2) une invite de description de personnage, 3) une invite d'intrigue, 4) une invite de description de lieu, 5) et une invite de dialogue. Chaque invite est brièvement détaillée ci-dessous pour donner une idée de la façon dont elle est conçue ; des détails supplémentaires se trouvent à l’annexe E.


L' invite de titre est utilisée pour générer des titres à partir d'une ligne de journal. Une invite de titre simplifiée, une ligne de journal fournie par l'utilisateur et des titres échantillonnés de manière aléatoire sont présentés dans la figure 3. Elle montre un préfixe avec une instruction (Exemples de titres alternatifs, originaux et descriptifs pour des scénarios de pièces de théâtre et de films connus.) et un exemple ( Exemple 1. Tragédie grecque antique [...]. Titre : Au nom de mon frère). Le préfixe se termine par : Exemple 2. Une ligne de journal saisie par l'utilisateur (par exemple, Grandma Phyllis et Grandpa Jim [...]) est concaténée à ce préfixe, ainsi que la balise Title :, qui encourage le LLM à générer un titre. qui correspond à la ligne de journal. À partir de quelques exemples, le LLM a « appris » à générer un titre associé et une balise de fin. L' invite de description de personnage est utilisée pour générer des noms et des descriptions de caractères à partir d'une ligne de journal. L' invite de contour du tracé est utilisée pour transformer une ligne de journal et une liste de caractères en un tracé. Cette invite encourage le modèle de langage en quelques plans à transformer une seule ligne de journal de phrases en une séquence de descriptions de scènes. Chaque scène est très compressée, décrivant uniquement le nom court du lieu, l'élément narratif identifiant la position de la scène dans l'arc narratif (voir Sec. 2) et un résumé de ce que font et disent les personnages, souvent appelé un résumé de ce que font et disent les personnages. rythme narratif[69]. À noter que l'invite impose une forte contrainte de représentation sur la façon dont Dramatron représente une scène ; chaque scène est composée d'un lieu, d'un identifiant d'élément narratif et d'un rythme. L' invite de description de lieu est utilisée pour générer une description panoramique détaillée à partir d'un nom de lieu et d'une ligne de journal. Enfin, l' invite de dialogue est utilisée pour transformer un rythme (c'est-à-dire le résumé de la scène), la description de l'emplacement de la scène, la description de chacun des personnages impliqués dans la scène et la ligne du journal (pour la cohérence de l'histoire) en dialogue. Cette invite utilise les informations de scène générées pour les scènes actuelles et précédentes.

3.4 Écriture interactive avec Dramatron

Comme décrit ci-dessus, avec seulement quelques invites (c'est-à-dire 1 à 4) et la ligne de journal des entrées de l'utilisateur, nous exploitons des LLM formés pour générer des scripts et des scénarios complets. L'annexe F montre un exemple de sortie brute générée. Cela dit, Dramatron est conçu pour la co-écriture interactive, en tant qu'outil d'augmentation pour les écrivains humains. La co-auteur avec Dramatron se déroule comme suit : un écrivain commence par une ligne de journal qu'il a écrite. Ils saisissent cette ligne de journal dans Dramatron et génèrent un titre, des personnages, un aperçu de l'intrigue, des descriptions de lieux et le dialogue de chaque scène, étape par étape. A chaque étape, le rédacteur peut effectuer une, ou plusieurs, des opérations suivantes, autant de fois qu'il le souhaite :


• Générez une nouvelle suggestion (c'est-à-dire exécutez à nouveau le LLM avec la même invite).


• Continuez à générer à partir de la fin de la génération précédente, de la même manière que pour la génération LLM « plate » typique.


• Modifiez manuellement tout ou partie de la sortie générée par le LLM.


L'écrivain peut en outre effectuer ces opérations en avançant et en reculant dans la hiérarchie Dramatron. Par exemple, ils pourraient : 1) générer un titre, 2) générer un nouveau titre, 3) modifier le titre, 4) générer une liste de caractères, 5) modifier les caractères en supprimant un caractère et en modifiant la description d'un autre, 6 ) générer un plan d'intrigue, 7) éditer l'intrigue en supprimant une partie de l'arc narratif, 8) générer une suite de cette intrigue éditée, 9) revenir en arrière et réécrire la ligne du journal, etc. Cette approche de co-écriture permet à l'humain et au Dramatron doit tous deux contribuer à la paternité d'un scénario. Suite à ces opérations, l’auteur humain pourrait éditer et formater davantage pour finaliser un script. L'annexe G montre des exemples de scripts édités par des humains.

3.5 Détails de mise en œuvre

Le code de Dramatron est implémenté en Python et l'interface utilisateur a été implémentée dans un Google Colab[4] avec des widgets de texte, permettant une édition interactive. Il existe plusieurs marqueurs spéciaux que nous utilisons pour la génération de scripts : représente le jeton de fin de génération de séquence complète et est un jeton utilisé pour marquer la fin d'une ligne générée. Pour une invite donnée (voir la section 3.3 suivante) transmise au LLM, jusqu'à 511 jetons de texte ont été échantillonnés. Nous avons utilisé l'échantillonnage Nucleus [49] pour encourager diverses sorties, en échantillonnant les jetons à partir de la masse de probabilité supérieure de 0,9 et avec une température softmax de 1,0. Enfin, afin de réduire les boucles dans la génération du dialogue, nous avons implémenté un détecteur simple qui découpe le texte généré en blocs (délimités par 2 lignes vierges) et compte combien de fois chaque bloc apparaît en une seule génération. Au-delà d'un seuil fixe (par exemple 3 fois), le LLM génère une nouvelle sortie en échantillonnant les jetons en utilisant une graine différente dans le générateur de nombres aléatoires.



Cet article est disponible sur arxiv sous licence CC 4.0.


[1] Accessible sur : https://openai.com/api/


[2] Par exemple : https://theguardian.com/commentisfree/2020/sep/08/robot-wrote-this-article-gpt-3


[3] Voir par exemple le pistolet de Tchekhov [27].


[4] https://colab.research.google.com/