paint-brush
Compreendendo modelos estatísticos de linguagem e geração hierárquica de linguagemby@teleplay
827
827

Compreendendo modelos estatísticos de linguagem e geração hierárquica de linguagem

Modelos de linguagem como Chinchilla LLM e GPT-3 são usados para geração de texto com base em probabilidades estatísticas. Dramatron é uma ferramenta interativa para co-escrever narrativas, aproveitando a engenharia imediata e a geração hierárquica para uma narrativa coerente.
featured image - Compreendendo modelos estatísticos de linguagem e geração hierárquica de linguagem
Teleplay Technology  HackerNoon profile picture
0-item

Autores:

(1) PIOTR MIROWSKI e KORY W. MATHEWSON, DeepMind, Reino Unido e Ambos os autores contribuíram igualmente para esta pesquisa;

(2) JAYLEN PITTMAN, Universidade de Stanford, EUA e trabalho realizado na DeepMind;

(3) RICHARD EVANS, DeepMind, Reino Unido.

Tabela de links

Resumo e introdução

Contação de histórias, a forma das histórias e linhas de registro

O uso de grandes modelos de linguagem para geração de texto criativo

Avaliando texto gerado por grandes modelos de linguagem

Entrevistas com participantes

Pesquisas de Participantes

Discussão e Trabalho Futuro

Conclusões, agradecimentos e referências

A. TRABALHO RELACIONADO COM GERAÇÃO AUTOMATIZADA DE HISTÓRIAS E GERAÇÃO DE HISTÓRIAS CONTROLÁVEIS

B. DISCUSSÃO ADICIONAL DE JOGOS DA EQUIPE CRIATIVA DE BOTS

C. DETALHES DAS OBSERVAÇÕES QUANTITATIVAS

D. FIGURAS SUPLEMENTARES

E. PREFIXOS DE PROMPT COMPLETOS PARA DRAMATRON

F. SAÍDA BRUTA GERADA PELO DRAMATRON

G. SCRIPTS CO-ESCRITOS

3 O USO DE MODELOS DE GRANDES LÍNGUAS PARA GERAÇÃO DE TEXTOS CRIATIVOS

3.1 Modelos de Linguagem

Modelos estatísticos de linguagem (modelos de linguagem ou LMs) modelam a probabilidade de tokens de texto dado um contexto de tokens anteriores - os tokens podem ser palavras, caracteres ou bigramas de caracteres. Usando aprendizado de máquina, os LMs são treinados em grandes corpora de texto para aproximar a distribuição de probabilidade condicional. Os LMs podem calcular a probabilidade de um trecho de texto e gerar novo texto como continuação de um prompt de texto. A geração de texto é probabilística e envolve amostragem aleatória das probabilidades condicionais. Diferentes sementes aleatórias resultam em diferentes amostras aleatórias. A Figura 3 ilustra um exemplo de alimentação de um prompt de texto e uso do LM para gerar diferentes amostras de texto.


3. Ilustração da configuração do prompt para o modelo de linguagem, com o prompt gerado pelo usuário ou pelo Dramatron sendo concatenado a um prefixo e decorado com tags. Várias saídas de título são geradas para diferentes sementes aleatórias, cada uma terminando com a tag <end> .


Neste estudo, empregamos o modelo de linguagem grande Chinchilla (LLM) [48], representado como uma rede neural com parâmetros 70B e que foi treinado em tokens 1.4T do conjunto de dados MassiveText. Conforme descrito por Rae et al. [84], esse corpora contém 604 milhões de documentos MassiveWeb, 4 milhões de livros, 361 milhões de perguntas e respostas de C4, 1.1B artigos de notícias, 142 milhões de entradas de código GitHub e 6 milhões de artigos da Wikipedia. Observe que LLMs alternativos poderiam ser empregados, como GPT-3.[1]

3.2 Geração Hierárquica de Linguagem para Contornar Contextos Limitados


Neste projeto, desejamos um sistema que possa gerar um texto inteiro exibindo coerência semântica de longo prazo sem necessariamente exigir um humano no circuito. Encorajamos os escritores a editar e modificar o roteiro em todos os níveis da hierarquia. Mas não precisamos de um ser humano informado para alcançar a coerência semântica a longo prazo. O método hierárquico gerará um script inteiro exibindo coerência razoável de longo prazo a partir de uma única linha de registro sem intervenção humana. Nossa abordagem para alcançar coerência semântica de longo prazo é gerar a história hierarquicamente.


Nossa geração narrativa é dividida em 3 camadas hierárquicas de abstração. A camada mais alta é a linha de registro definida na Seção 2: uma única frase que descreve o conflito dramático central. A camada intermediária contém descrições de personagens, um esboço do enredo (uma sequência de descrições de cenas de alto nível junto com os locais correspondentes) e descrições de locais. A camada inferior é o diálogo real dos personagens do texto do roteiro. Dessa forma, o conteúdo de cada camada é coerente com o conteúdo das outras camadas. Observe que “coerente” aqui se refere a “formar um todo unificado”, não assumindo qualquer bom senso e consistência lógica ou emocional ao texto gerado pelo LLM.


Conforme ilustrado na Figura 1, a história é gerada de cima para baixo [93, 108, 113]. Depois que o humano fornece a linha de registro, o Dramatron gera uma lista de personagens, depois um enredo e, em seguida, descrições de cada local mencionado no enredo. As descrições de personagens, enredo e localização atendem às especificações na linha de log, além das dependências causais, habilitadas pelo encadeamento imediato [118] e explicadas no diagrama da Figura 1. Finalmente, para cada cena no esboço do enredo, Dramatron gera diálogo que satisfaça as especificações de cena geradas anteriormente. Os diálogos resultantes são anexados para gerar o resultado final. Esta geração hierárquica foi projetada para permitir coerência semântica de longo prazo. Um método semelhante, embora invertido, de decomposição recursiva de tarefas foi usado para gerar resumos de gráficos [117]. A incorporação da camada intermediária, onde o enredo é resumido como uma sequência de descrições abstratas de cenas, permite que todo o enredo caiba na janela de contexto dos modelos de linguagem. Isso supera limitações anteriores na coerência semântica de longo prazo. Nosso método torna possível que os elementos da cena final proporcionem um encerramento dramático dos elementos introduzidos na cena de abertura[3], e que as histórias geradas sigam arcos narrativos (ver Seção 2).

3.3 A importância da engenharia imediata

O Dramatron usa vários prompts codificados (ou seja, prefixos de entrada) para orientar o grande modelo de linguagem. A engenharia imediata é uma forma comum de os usuários controlarem ou influenciarem os LLMs [12]. Cada prompt tem alguns exemplos de resultados desejáveis. Eles estão incluídos no prefixo e a adaptação a apenas alguns exemplos é às vezes chamada de aprendizado de poucas tentativas. Conforme ilustrado na Figura 3, os prompts são concatenados com entradas e/ou saídas fornecidas pelo usuário de gerações anteriores do LLM. Este método é chamado de encadeamento de prompt [118], que é um tipo de prompt algorítmico [24]. Nos níveis mais baixos da hierarquia (ver Fig. 1), os prompts são encadeados com as saídas dos níveis mais altos da hierarquia.


Neste trabalho, usamos principalmente dois conjuntos de sugestões: um baseado na tragédia grega antiga Medeia, de Eurípides, e outro baseado em filmes de ficção científica. Para Dramatron, cada conjunto de prompts é composto por: 1) prompt de título, 2) prompt de descrição do personagem, 3) prompt de enredo, 4) prompt de descrição de local, 5) e prompt de diálogo. Cada prompt é detalhado brevemente abaixo para dar uma ideia de como eles são projetados; detalhes adicionais estão no Apêndice E.


O prompt de título é usado para gerar títulos a partir de uma linha de registro. Um prompt de título simplificado, uma linha de registro fornecida pelo usuário e títulos amostrados aleatoriamente são mostrados na Figura 3. Ela mostra um prefixo com uma instrução (Exemplos de títulos alternativos, originais e descritivos para roteiros de peças e filmes conhecidos.) e um exemplo ( Exemplo 1. Tragédia da Grécia Antiga [...]. Título: Em nome do meu irmão). O prefixo termina com: Exemplo 2. Uma linha de registro de entrada do usuário (por exemplo, vovó Phyllis e vovô Jim [...]) é concatenada a esse prefixo, bem como a tag Title:, que incentiva o LLM a gerar um título que corresponde à linha de log. A partir de alguns exemplos, o LLM “aprendeu” a gerar um título relacionado e uma tag de finalização. O prompt de descrição de caracteres é usado para gerar nomes e descrições de caracteres a partir de uma linha de registro. O prompt de esboço do enredo é usado para transformar uma linha de registro e uma lista de personagens em um enredo. Este prompt incentiva o modelo de linguagem de poucas cenas a transformar uma linha de registro de frase única em uma sequência de descrições de cena. Cada cena é altamente comprimida, descrevendo apenas o nome abreviado do local, o elemento narrativo que identifica a posição da cena no arco narrativo (ver Seção 2) e um resumo do que os personagens estão fazendo e dizendo, muitas vezes chamado de batida narrativa[69]. Como observação, a sugestão impõe uma forte restrição representacional na forma como Dramatron representa uma cena; cada cena é composta por um local, identificador de elemento narrativo e batida. O prompt de descrição do local é usado para gerar uma descrição panorâmica detalhada a partir do nome de um local e de uma linha de registro. Finalmente, o Prompt de Diálogo é usado para transformar uma batida (isto é, o resumo da cena), a descrição do local da cena, a descrição de cada um dos personagens envolvidos na cena e a linha de registro (para consistência da história) em diálogo. Este prompt usa informações de cena geradas para as cenas atuais e anteriores.

3.4 Escrita Interativa com Dramatron

Conforme descrito acima, com apenas alguns prompts (ou seja, 1-4) e a linha de registro de entrada do usuário, aproveitamos LLMs treinados para gerar scripts e roteiros completos. O Apêndice F mostra um exemplo de saída gerada bruta. Dito isto, o Dramatron foi projetado para co-escrita interativa, como uma ferramenta aumentativa para escritores humanos. A coautoria com Dramatron ocorre da seguinte forma: um escritor começa com uma linha de registro que escreveu. Eles inserem essa linha de registro no Dramatron e geram um título, personagens, um esboço do enredo, descrições de locais e o diálogo de cada cena passo a passo. Em cada etapa, o redator pode realizar uma ou várias das seguintes operações, quantas vezes desejar:


• Gere uma nova sugestão (ou seja, execute o LLM novamente com o mesmo prompt).


• Continuar gerando a partir do final da geração anterior, de forma semelhante à típica geração LLM “plana”.


• Edite manualmente alguns ou todos os resultados gerados pelo LLM.


Além disso, o escritor pode realizar essas operações avançando e retrocedendo na hierarquia Dramatron. Por exemplo, eles poderiam: 1) gerar um título, 2) gerar um novo título, 3) editar o título, 4) gerar uma lista de caracteres, 5) editar os caracteres removendo um caractere e alterando a descrição de outro, 6 ) gerar um esboço do enredo, 7) editar o enredo removendo parte do arco narrativo, 8) gerar uma continuação do enredo editado, 9) voltar e reescrever a linha do log, etc. Dramatron contribuirá para a autoria de um roteiro. Após essas operações, o autor humano poderia editar e formatar ainda mais para finalizar um roteiro. O Apêndice G mostra exemplos de scripts editados por humanos.

3.5 Detalhes de Implementação

O código do Dramatron é implementado em Python e a interface voltada ao usuário foi implementada em um Google Colab[4] com widgets de texto, permitindo edição interativa. Existem vários marcadores especiais que usamos para geração de script: representa o final do token de geração de sequência completa e é um token usado para marcar o final de uma linha gerada. Para um determinado prompt (veja a próxima Seção 3.3) enviado ao LLM, foram amostrados até 511 tokens de texto. Usamos a amostragem Nucleus [49] para encorajar resultados diversos, amostrando tokens da massa de probabilidade superior de 0,9 e com uma temperatura softmax de 1,0. Por fim, para reduzir loops na geração de diálogos, implementamos um detector simples que corta o texto gerado em blocos (delimitados por 2 linhas em branco) e conta quantas vezes cada bloco aparece em uma única geração. Além de um limite fixo (por exemplo, 3 vezes), o LLM gera uma nova saída amostrando tokens usando uma semente diferente no gerador de números aleatórios.



Este artigo está disponível no arxiv sob licença CC 4.0.


[1] Acessível em: https://openai.com/api/


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


[3] Veja, por exemplo, a arma de Chekhov [27].


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