o problema
Entre 2018 e 2019, transfer learning para nlp virou uma enxurrada. Cada trabalho novo trocava o objetivo de pré-treino, o corpus não rotulado, a arquitetura, o vocabulário e a escala — tudo ao mesmo tempo — e reportava um número melhor no GLUE. Não dava para saber de onde vinha o ganho. Era do objetivo mascarado? Do corpus dez vezes maior? De treinar por mais passos? Todo mundo tinha uma hipótese e ninguém tinha o experimento.
Pior: os corpora quase nunca eram publicados. BERT usava Wikipedia mais Toronto Books Corpus, o WebText do GPT-2 não era público, cada laboratório tinha o seu. E como as tarefas tinham formatos diferentes — classificação com uma cabeça, extração de span com outra, tradução com um decoder —, um mesmo objetivo de pré-treino nem sequer podia ser avaliado sobre o conjunto todo. Comparar era um ato de fé.
a ideia
Para variar um botão de cada vez, é preciso que todo o resto seja o mesmo. Os autores forçam isso pela raiz: toda tarefa entra como texto e sai como texto. A entrada ganha um prefixo que diz o que fazer — translate English to German: That is good. — e o alvo é Das ist gut. Tradução, resumo, inferência, sentimento e até regressão passam pela mesma loss de máxima verossimilhança e pelo mesmo decoder.
O paper diz com todas as letras que não está propondo método novo. O texto-para-texto é o instrumento de medição, não a contribuição. A contribuição é a bancada: um baseline honesto, rodado dez vezes para ter desvio padrão, e depois dezenas de variantes trocando um fator por vez.
como funciona
O baseline é um Transformer encoder-decoder com 12 blocos de cada lado e cerca de 220 milhões de parâmetros — encoder e decoder do tamanho de um BERT-base cada. Duas mudanças em relação ao Transformer original: layer norm sem bias aditivo e fora do caminho residual, e position embedding relativo simplificado — um escalar somado ao logit de atenção, com 32 buckets que crescem logaritmicamente até offset 128, compartilhados entre camadas.
O objetivo de pré-treino corrompe 15% dos tokens. Cada span consecutivo corrompido some e vira um sentinel token único no exemplo; o alvo é só a concatenação dos spans removidos, delimitados pelos mesmos sentinels. Alvo curto, treino rápido. Na versão final, os spans são amostrados de propósito com comprimento médio 3 em vez de i.i.d.
O corpus é o C4: um mês do Common Crawl (abril de 2019) passado por heurísticas — só linhas terminadas em pontuação, fora páginas com menos de três frases, fora “lorem ipsum”, fora “javascript”, fora páginas com chave, fora lista de palavrões, deduplicação de trechos de três frases, detecção de inglês com probabilidade mínima de 0,99. Sobram 745 GB. Sem os filtros seriam 6,1 TB — e o desempenho cai em toda tarefa.
O baseline pré-treina em cerca de 34 bilhões de tokens. Os modelos finais vão de 60 milhões a 11 bilhões de parâmetros, pré-treinam em cerca de 1 trilhão de tokens sobre uma mistura multi-task, e fecham state-of-the-art em 18 das 24 tarefas: GLUE 90,3, SuperGLUE 88,9 contra 89,8 humano, SQuAD 91,26 de exact match.
o que isso custou
O método é subida por coordenada: um fator por vez, a partir de um baseline fixo. Os próprios autores admitem que isso perde efeitos de segunda ordem — um objetivo pode ser ruim no tamanho base e ótimo em 11 bilhões, e o estudo não veria.
Em tradução, não houve state-of-the-art nenhum. O pré-treino é só em inglês, e os melhores resultados de WMT usam backtranslation. O vocabulário SentencePiece de 32.000 wordpieces é treinado numa mistura fixa de inglês, alemão, francês e romeno — o modelo só processa as línguas decididas antes de treinar.
O que não funcionou também é resultado. Adapter layers e gradual unfreezing ficaram atrás de atualizar todos os parâmetros. Multi-task learning puro perdeu para pré-treinar e depois fazer fine-tuning; só a combinação das duas coisas empatou. E como todas as variantes de denoising deram na mesma, os autores concluem que continuar mexendo nessa família provavelmente não rende — o caminho seria usar dados não rotulados de um jeito inteiramente diferente.
Sobra a inconveniência do tamanho. O modelo de 11 bilhões é caro de servir, e o servidor de avaliação do SQuAD nem conseguiu rodar inferência com ele — o número reportado é de validação.
onde isso aparece hoje
O C4 foi publicado no TensorFlow Datasets e virou corpus de pré-treino padrão, com todas as suas heurísticas embutidas — inclusive a que apaga código. Os pesos de T5 em cinco tamanhos foram liberados e viraram base de família inteira de modelos seq2seq. E a ideia de descrever a tarefa ao modelo com um prefixo em linguagem natural, em vez de com uma cabeça treinada, é a semente direta do prompt como interface.