# GPT-2

Generative Pre-trained Transformer ( GPT ) é uma inteligência artificial de código aberto criada pela OpenAI em fevereiro de 2019. O GPT traduz texto, responde a perguntas, resume passagens, e gera saída de texto em um nível que, embora às vezes indistinguível dos humanos, pode se tornar repetitivo ou sem sentido ao gerar longas passagens. É um aluno de propósito geral ; não foi especificamente treinado para realizar nenhuma dessas tarefas, e sua capacidade de realizá-las é uma extensão de sua capacidade geral de sintetizar com precisão o próximo item em uma sequência arbitrária. O GPT-2 foi criado como um "escalonamento direto" do modelo GPT 2018 da OpenAI, com um aumento de dez vezes na contagem de parâmetros e no tamanho do conjunto de dados de treinamento.
A arquitetura GPT implementa uma rede neural profunda, especificamente um modelo de transformador, que usa atenção no lugar de arquiteturas anteriores baseadas em recorrência e convolução. Mecanismos de atenção permitem que o modelo se concentre seletivamente em segmentos de texto de entrada que ele prevê serem os mais relevantes. Este modelo permite uma paralelização muito maior e supera os benchmarks anteriores para modelos baseados em RNN/CNN/LSTM.
A OpenAI lançou a versão completa do modelo de linguagem GPT-2 (com 1,5 bilhão de parâmetros) em novembro de 2019. O GPT-2 seria seguido pelo GPT-3 de 175 bilhões de parâmetros, revelado ao público em 2020 (cujo código-fonte nunca foi disponibilizado). O acesso ao GPT-3 é fornecido exclusivamente por meio de APIs oferecidas pela OpenAI e pela Microsoft .

## Background

Desde as origens da computação, a inteligência artificial tem sido objeto de estudo; o " jogo da imitação ", postulado por Alan Turing em 1950 (e muitas vezes chamado de "teste de Turing") propunha estabelecer a capacidade de um sistema eletrônico ou mecânico para ação inteligente pela capacidade de um avaliador de distinguir seu comportamento daquele de um ser humano. O termo " aprendizado de máquina " foi usado pela primeira vez para descrever uma possível abordagem à inteligência artificial já em 1959 pelo pesquisador da IBM Arthur Samuel ; o uso atual do termo abrange uma ampla variedade de aprendizado estatístico, ciência de dados e abordagens de redes neurais para problemas computacionais (muitas vezes caindo sob a égide da inteligência artificial).

### linguística computacional

O processamento de linguagem natural usando computadores, uma tarefa originalmente concebida como um subcampo da lingüística computacional, foi tentado assim que o hardware de computação teve capacidade; a primeira aplicação de uma tabela de pesquisa de dicionário foi desenvolvida no Birkbeck College em Londres em 1948. O Experimento de Georgetown de 1954 foi uma demonstração de tradução automática totalmente automatizada, na qual sessenta sentenças russas foram traduzidas para o inglês (principalmente pela substituição de palavras por seus sinônimos em inglês). As traduções eram muitas vezes grosseiras; o sistema tinha apenas 6 regras gramaticais e um vocabulário de 250 palavras, e nenhuma tentativa foi feita para analisar ou traduzir a estrutura sintática . No entanto, o experimento provou ao público que os computadores podem interpretar e processar a linguagem natural, e garantiu o financiamento da CIA para pesquisas futuras. A substituição direta continua sendo um padrão contra o qual os programas de tradução automática são avaliados.

## Transformador pré-treinado generativo

| | arquitetura | contagem de parâmetros | dados de treinamento |
| GPT-1 | Codificador Transformer de 12 níveis e 12 cabeças (sem decodificador), seguido por linear-softmax. | 0,12 bilhões | BookCorpus: 4,5 GB de texto, de 7000 livros inéditos de vários gêneros. |
| GPT-2 | GPT-1, mas com normalização modificada | 1.5 bilhoes | WebText: 40 GB de texto, 8 milhões de documentos, de 45 milhões de páginas votadas no Reddit. |
| GPT-3 | GPT-2, mas com modificação para permitir escala maior. | 175 bilhões | 570 GB de texto simples, 0,4 trilhão de tokens. Principalmente CommonCrawl, WebText, Wikipedia em inglês e dois corpora de livros (Books1 e Books2). |
Em 11 de junho de 2018, a OpenAI lançou um artigo intitulado "Melhorando a compreensão da linguagem por pré-treinamento generativo", no qual eles introduziram o transformador pré-treinado generativo (GPT). Neste ponto, os modelos NLP neurais de melhor desempenho empregavam principalmente aprendizado supervisionado de grandes quantidades de dados rotulados manualmente. Essa confiança no aprendizado supervisionado limitava seu uso em conjuntos de dados que não eram bem anotados, além de tornar proibitivamente caro e demorado treinar modelos extremamente grandes; muitos idiomas (como suaíli ou crioulo haitiano ) são difíceis de traduzir e interpretar usando tais modelos devido à falta de texto disponível para a construção do corpus. Em contraste, a abordagem "semi-supervisionada" do GPT envolveu dois estágios: um estágio de "pré-treinamento" generativo não supervisionado no qual um objetivo de modelagem de linguagem foi usado para definir os parâmetros iniciais e um estágio de "ajuste fino" discriminativo supervisionado no qual esses parâmetros foram adaptados a uma tarefa-alvo.
O uso de uma arquitetura transformadora, em oposição às técnicas anteriores envolvendo RNNs com atenção aumentada, forneceu ao GPT uma memória mais estruturada do que poderia ser obtida por meio de mecanismos recorrentes; isso resultou em "desempenho de transferência robusto em diversas tarefas".
   Durante a transferência, utilizamos adaptações de entrada específicas da tarefa derivadas de abordagens de estilo transversal, que processam a entrada de texto estruturado como uma única sequência contígua de tokens.

### corpus

O pré-treinamento não supervisionado foi realizado usando BooksCorpus, um conjunto de dados de mais de 7.000 livros de ficção inéditos de vários gêneros; esse conjunto de dados foi escolhido em parte porque suas longas passagens de texto contínuo condicionaram o modelo a lidar com informações de longo alcance. Outros conjuntos de dados disponíveis, embora maiores, foram rejeitados com base na falta dessa estrutura de longo alcance (sendo "embaralhados" no nível da frase). A biblioteca ftfy foi utilizada para limpar o texto do BooksCorpus (padronizar pontuação e espaços em branco); foi tokenizado usando spaCy .

### Arquitetura

A própria arquitetura do GPT era um transformador apenas de decodificador de doze camadas, usando doze cabeças de auto-atenção mascaradas, com 64 estados dimensionais cada (para um total de 768). Em vez de uma simples descida de gradiente estocástico, foi usado o algoritmo de otimização de Adam ; a taxa de aprendizagem foi aumentada linearmente de zero nas primeiras 2.000 atualizações, até um máximo de 2,5×10 $^{−4}$, e recozida para 0 usando uma programação de cosseno.
   Treinamos por 100 épocas em minilotes de 64 sequências contíguas amostradas aleatoriamente de 512 tokens. Uma vez que layernorm é usado extensivamente em todo o modelo, uma inicialização de peso simples de N(0,0,02) foi suficiente. Usamos um vocabulário de codificação de bytepair (BPE) com 40.000 mesclagens [53] e perdas residuais, incorporadas e de atenção com uma taxa de 0,1 para regularização. Também empregamos uma versão modificada da regularização L2 proposta em Loshchilov |numero-autores=et al. 2017, com w = 0,01 em todos os pesos sem viés ou ganho.<br>
   [. . . ]<br> Usamos incorporações de posição aprendida em vez da versão senoidal proposta no trabalho original.<br>
   [. . . ]<br> A menos que especificado, reutilizamos as configurações de hiperparâmetros do pré-treinamento não supervisionado. Adicionamos abandono ao classificador com uma taxa de 0,1. Para a maioria das tarefas, usamos uma taxa de aprendizado de 6,25 $^{e-5}$ e um tamanho de lote de 32. Nosso modelo ajusta rapidamente e 3 épocas de treinamento foram suficientes para a maioria dos casos. Usamos um cronograma de decaimento da taxa de aprendizado linear com aquecimento em 0,2% do treinamento. λ foi definido como 0,5.
Enquanto o ajuste fino do GPT foi adaptado para tarefas específicas, seu pré-treinamento não foi; para executar as várias tarefas, foram realizadas alterações mínimas em sua arquitetura de modelo independente de tarefa subjacente. Apesar disso, o GPT ainda melhorou em relação aos benchmarks anteriores em várias tarefas de processamento de linguagem, superando modelos treinados discriminativamente com arquiteturas orientadas a tarefas em várias tarefas diversas.

### Desempenho

Em tarefas de inferência de linguagem natural (também conhecidas como vinculação textual ), os modelos são avaliados em sua capacidade de interpretar pares de sentenças de vários conjuntos de dados e classificar a relação entre eles como "implicação", "contradição" ou "neutra". Exemplos de tais conjuntos de dados incluem QNLI (artigos da Wikipédia ) e MultiNLI (fala transcrita, ficção popular e relatórios governamentais, entre outras fontes); nestes GPT alcançaram, respectivamente, uma melhoria de 5,8% e 1,5% em relação aos melhores resultados anteriores. Ele também superou os modelos anteriores em duas tarefas relacionadas a respostas a perguntas e raciocínio de senso comum - em 5,7% no RACE, um conjunto de dados de pares de perguntas e respostas escritas de exames do ensino fundamental e médio e em 8,9% no Teste Story Cloze.
Outra tarefa, similaridade semântica (ou detecção de paráfrase ), avalia se um modelo pode prever se duas sentenças são paráfrases uma da outra; no conjunto de dados Quora Question Pairs (QQP), o GPT melhorou em 4,2% em relação aos modelos anteriores de melhor desempenho. Em uma tarefa de classificação de texto usando o Corpus of Linguistic Acceptability (CoLA), o GPT alcançou uma pontuação de 45,4, contra um recorde anterior de 35,0. Finalmente, no GLUE, um teste multitarefa, o GPT alcançou uma pontuação geral de 72,8 (em comparação com um recorde anterior de 68,9).

## Ampliação

O GPT-2 foi criado como uma ampliação direta do GPT, com a contagem de parâmetros e o tamanho do conjunto de dados aumentados por um fator de 10. Ambos são modelos de transformadores não supervisionados treinados para gerar texto prevendo a próxima palavra em uma sequência de tokens . O modelo GPT-2 tem 1,5 bilhão de parâmetros e foi treinado em um conjunto de dados de 8 milhões de páginas da web. Embora o GPT-2 tenha sido reforçado com critérios muito simples (interpretar uma sequência de palavras em uma amostra de texto e prever a próxima palavra mais provável), ele produz frases e parágrafos completos ao continuar a prever palavras adicionais, gerando palavras totalmente compreensíveis (e semanticamente significativas). declarações em linguagem natural . Notavelmente, o GPT-2 foi avaliado em seu desempenho em tarefas em uma configuração de tiro zero .

### Treinamento

Como a arquitetura do transformador permitia a paralelização massiva, os modelos da série GPT podiam ser treinados em corpos maiores do que os modelos NLP anteriores. Enquanto o modelo GPT inicial demonstrou que a abordagem era viável, o GPT-2 exploraria ainda mais as propriedades emergentes de redes treinadas em corpora extremamente grandes. CommonCrawl, um grande corpus produzido por web crawling e usado anteriormente em sistemas de treinamento de NLP, foi considerado devido ao seu grande tamanho, mas foi rejeitado após uma análise mais aprofundada revelar grandes quantidades de conteúdo ininteligível. Em vez disso, a OpenAI desenvolveu um novo corpus, conhecido como WebText ; em vez de coletar conteúdo indiscriminadamente da World Wide Web, o WebText foi gerado coletando apenas páginas vinculadas a postagens do Reddit que receberam pelo menos três votos positivos antes de dezembro de 2017. O corpus foi posteriormente limpo; Os documentos HTML foram analisados em texto simples, as páginas duplicadas foram eliminadas e as páginas da Wikipedia foram removidas (já que sua presença em muitos outros conjuntos de dados poderia ter induzido o overfitting ).
Embora se saiba que o custo do treinamento GPT-2 foi de $ 256 por hora, a quantidade de horas necessárias para concluir o treinamento é desconhecida; portanto, o custo geral do treinamento não pode ser estimado com precisão. No entanto, modelos de linguagem grandes comparáveis usando arquiteturas transformadoras tiveram seus custos documentados com mais detalhes; os processos de treinamento para BERT e XLNet consumiram, respectivamente, $ 6.912 e $ 245.000 de recursos.

### Desempenho

Devido à amplitude de seu conjunto de dados e à amplitude de sua abordagem, o GPT-2 tornou-se capaz de realizar uma gama diversificada de tarefas além da simples geração de texto: responder perguntas, resumir e até mesmo traduzir entre idiomas em vários domínios específicos, sem sendo instruído em qualquer coisa além de como prever a próxima palavra em uma sequência.
Um exemplo de aprendizado generalizado é a capacidade do GPT-2 de realizar tradução automática entre francês e inglês, tarefa para a qual o desempenho do GPT-2 foi avaliado usando tarefas de tradução do WMT-14. O corpus de treinamento do GPT-2 não incluía praticamente nenhum texto em francês; O texto não em inglês foi deliberadamente removido durante a limpeza do conjunto de dados antes do treinamento e, como consequência, apenas 10 MB de francês dos 40.000 MB restantes estavam disponíveis para o modelo aprender (principalmente de citações em idiomas estrangeiros em postagens e artigos em inglês) . Apesar disso, o GPT-2 alcançou 5 BLEU no conjunto de testes de inglês para francês WMT-14 (ligeiramente abaixo da pontuação de uma tradução por substituição de palavra por palavra). Ele também foi capaz de superar várias linhas de base de tradução automática não supervisionadas contemporâneas (2017) no conjunto de testes de francês para inglês, onde o GPT-2 alcançou 11,5 BLEU. Isso permaneceu abaixo da abordagem não supervisionada contemporânea de maior desempenho (2019), que alcançou 33,5 BLEU. No entanto, outros modelos usaram grandes quantidades de texto em francês para obter esses resultados; Estima-se que o GPT-2 tenha usado um corpus francês monolíngue de aproximadamente 1/500 do tamanho de abordagens comparáveis.