o problema
Em 2018 a receita para uma tarefa de linguagem era: junte dados anotados, desenhe uma arquitetura para aquela tarefa, treine do zero. Dado anotado é caro e escasso; texto cru é abundante. A única ponte que funcionava de verdade entre os dois era o word embedding pré-treinado, que transfere informação no nível da palavra e para aí. Tudo acima disso — a relação entre duas frases, o que um documento responde sobre uma pergunta — o modelo tinha que aprender de novo, em cada tarefa, com os poucos exemplos rotulados que existissem.
O paper enuncia duas perguntas em aberto. A primeira: qual objetivo não supervisionado produz representação que transfere? Language modeling, tradução automática e coerência de discurso tinham cada um vencido em tarefas diferentes, sem consenso. A segunda: como transferir? As respostas da época envolviam arquitetura específica por tarefa empilhada sobre a representação pré-treinada, esquemas de treino elaborados e objetivos auxiliares. Cada uma dessas saídas reintroduz parâmetros novos e trabalho manual por tarefa — exatamente o que o pré-treino deveria eliminar.
a ideia
Duas fases e um modelo só. Primeiro, treine um transformer decoder para prever o próximo token num corpus grande de texto sem rótulo. Depois, para cada tarefa, pegue esse mesmo modelo, ponha uma camada linear sobre a última ativação e ajuste os pesos inteiros com o objetivo supervisionado. Nenhuma arquitetura nova.
O que faz isso caber é o segundo movimento: quando a tarefa tem input estruturado — par premissa/hipótese, trio documento/pergunta/resposta —, quem se dobra é o input, não o modelo. O par vira uma sequência contígua com um delimitador no meio, do jeito que o modelo já sabe ler. A tarefa é reescrita na língua do pré-treino.
como funciona
O modelo é um transformer decoder de 12 camadas com self-attention mascarada, estados de 768 dimensões, 12 attention heads e feed-forward interno de 3.072. GELU como ativação, position embeddings aprendidos em vez dos senoidais, vocabulário BPE com 40.000 merges. O forward é curto de descrever:
h0 = U·We + Wp
hl = transformer_block(h_{l-1}) # 12 vezes
P(u) = softmax(hn · Weᵀ) # pré-treino: prever o próximo token
P(y) = softmax(hm_l · Wy) # fine-tuning: rótulo a partir da última ativação
A matriz de saída do pré-treino é a própria matriz de embedding transposta. Pré-treino: BooksCorpus, mais de 7.000 livros, 100 épocas, minibatches de 64 sequências contíguas de 512 tokens, Adam com learning rate máximo de 2,5e-4, aquecimento linear em 2.000 updates e recozimento por cosseno. Perplexidade final de 18,4 no corpus. Fine-tuning: learning rate 6,25e-5, batch 32, três épocas bastam na maioria dos casos, e o objetivo é a soma do supervisionado com o de language model ponderado por λ = 0,5.
As transformações de input seguem um padrão de travessia. Entailment: premissa e hipótese concatenadas com um delimitador $. Similaridade: como não há ordem natural entre as duas frases, o modelo processa as duas ordens de forma independente e soma as representações elemento a elemento antes da camada linear. Question answering e senso comum: monta-se [documento; pergunta; $; resposta_k] para cada alternativa, processa cada sequência separadamente e normaliza com softmax sobre as alternativas. Toda transformação adiciona tokens de início e fim inicializados aleatoriamente.
o que isso custou
O modelo perde onde o dataset é pequeno. No RTE, com 2.490 exemplos de treino, ele faz 56,0% contra 61,7% de um biLSTM treinado em múltiplas tarefas. Os autores admitem que provavelmente se beneficiariam de treino multitarefa e que não exploraram isso.
O objetivo auxiliar de language model no fine-tuning não é ganho grátis: ajuda nas tarefas de NLI e no QQP, atrapalha nos datasets menores, e na média das tarefas do ablation a versão sem ele ficou ligeiramente à frente da versão completa. É um botão a calibrar por tarefa, não uma melhoria universal.
O corpus tem uma exigência que não é de tamanho. O BooksCorpus foi escolhido por conter longos trechos contíguos; o 1B Word Benchmark, de tamanho parecido, está embaralhado no nível da frase, o que destrói a estrutura de longo alcance que o modelo deveria aprender a explorar. Trocar de corpus não é trocar de volume.
E a transferência continua supervisionada: cada tarefa exige seus rótulos, sua rodada de ajuste e sua cópia de pesos. As avaliações sem fine-tuning existem no paper apenas como heurísticas de análise — pontuar por log-probabilidade média de token, restringir a saída a duas palavras —, construídas para investigar o que o pré-treino aprendeu, não como forma de uso.
onde isso aparece hoje
Este é o primeiro modelo da linha GPT, e a receita — transformer decoder-only, pré-treino por previsão do próximo token, adaptação depois — virou a base dela. O BERT chegou logo em seguida com a aposta oposta na direção do contexto, e a discussão entre pré-treino unidirecional e bidirecional se organizou em torno desses dois pontos.
A parte que envelheceu de forma mais interessante é a das transformações de input. Achatar uma tarefa estruturada numa sequência de tokens com delimitadores, em vez de construir uma cabeça específica para ela, é o antepassado direto de descrever tarefa dentro do prompt. E a seção de análise, que mostra as heurísticas sem fine-tuning melhorando de forma estável ao longo dos updates de pré-treino, deixa esse fio à vista antes de alguém puxá-lo.