Laboratório GPT-2 · RoBERTa · Parte III — A família BERT
10

RoBERTa:
BERT feito direito

Masked Language Modeling, o mascaramento dinâmico, e a lição de que às vezes o avanço é treinar melhor o que já existia.

Apostila 10 de 15 Pré-requisito: apostilas 03, 04 e 08

1 O outro galho da árvore

Em outubro de 2018, quatro meses depois do GPT-1, o Google publicou o BERT. Ele partiu do mesmo bloco Transformer e tomou uma decisão diferente:

remover a máscara causal.

Sem a máscara, cada token vê a frase inteira — passado e futuro. A representação de "banco" em "sentei no banco da praça" passa a ser construída com "praça" disponível desde o primeiro bloco.

O ganho em compreensão é enorme e imediato. O BERT quebrou recordes em onze tarefas de uma vez. Mas há um preço, e ele é fatal para uma coisa específica.

2 O problema que a bidirecionalidade cria

Se cada token vê todos os outros, o objetivo de prever a próxima palavra fica trivial. Para prever a palavra 5, basta olhar a palavra 5. O modelo aprenderia a copiar, e nada mais.

Repare que este é exatamente o vazamento de rótulo que a máscara causal existia para impedir (apostila 04). Ao remover a máscara, o BERT perdeu o direito de usar o objetivo do GPT. Ele precisava de outro objetivo de treino.

A solução: mascarar o alvo, não o futuro

A ideia do BERT é elegante: em vez de esconder o futuro, esconda palavras sorteadas ao acaso, espalhadas pelo texto, e peça ao modelo que as reconstrua usando tudo o que sobrou dos dois lados.

Texto original:
  The cat sat on the mat and slept peacefully

Entrada do modelo (15% dos tokens mascarados):
  The cat <mask> on the mat and <mask> peacefully
                                    ^
Alvo: reconstruir 'sat' e 'slept'.

Para acertar 'sat', o modelo usa 'cat' (a esquerda) E 'on the mat'
(a direita). E isso que uma tarefa BIDIRECIONAL significa.

Isso se chama Masked Language Modeling (MLM). Em português: a tarefa da lacuna, o exercício de completar frases que você fez na escola. O modelo é forçado a entender o contexto inteiro para preencher o buraco.

O detalhe estranho do 80/10/10

Dos 15% de tokens selecionados para mascaramento, o BERT não substitui todos por <mask>. Ele faz:

FraçãoO que fazPor quê
80%troca por <mask>a tarefa principal
10%troca por um token aleatórioforça o modelo a desconfiar de todo token, não só dos mascarados. Sem isso, ele aprenderia a copiar cegamente qualquer token não-mascarado.
10%deixa o token originalevita que o modelo aprenda "só preciso pensar quando vejo <mask>". Ele precisa manter uma representação boa de todo token, sempre.
A grande desvantagem do MLM

Compare a eficiência. No GPT-2, uma sequência de n tokens gera n previsões — todas as posições são cobradas. No BERT, apenas os 15% mascarados geram sinal de treino. 85% do trabalho computacional é desperdiçado.

É por isso que modelos MLM precisam de muito mais passes pelos dados para atingir o mesmo aprendizado — e é uma das razões pelas quais a família decoder acabou dominando quando a escala se tornou o fator decisivo.

Há também um descasamento entre treino e uso: o token <mask> aparece no treino e nunca na aplicação real. O 80/10/10 é justamente um remendo para reduzir esse descasamento.

3 O que o RoBERTa mudou (2019)

O RoBERTa não é uma arquitetura nova. É o mesmo BERT, treinado direito. O nome é a sigla de Robustly Optimized BERT Approach, e o artigo dos autores do Facebook AI tem um subtítulo implícito que é quase uma provocação: o BERT estava significativamente subtreinado.

As mudanças, todas de procedimento de treino. A arquitetura é idêntica.
MudançaBERTRoBERTa
Mascaramentoestático — as máscaras são sorteadas uma vez, no pré-processamento, e o modelo vê sempre o mesmo padrão em cada frasedinâmico — sorteado de novo a cada época. A mesma frase é vista com buracos diferentes.
Tarefa NSPprevia se duas frases eram consecutivasremovida — os autores mostraram que ela atrapalhava
Dados16 GB160 GB (10×)
Lotes256 sequências8 000 sequências
TokenizadorWordPiece, 30 000BPE byte-level do GPT-2, 50 265
Treino1 M passos500 K passos com lotes muito maiores

Por que o mascaramento dinâmico importa

No BERT original, a frase "O gato sentou no tapete" tinha suas máscaras decididas uma única vez. Se o sorteio escolheu "sentou", o modelo veria sempre essa mesma lacuna, época após época — e podia simplesmente decorar aquele par específico.

No RoBERTa, cada época sorteia de novo. Numa época o buraco é "sentou", na outra é "tapete", na outra é "gato". Cada frase vira múltiplos exercícios diferentes, e o modelo é forçado a construir uma representação que serve para reconstruir qualquer parte. É mais barato que coletar dados novos, e funciona.

Por que remover o NSP foi a decisão corajosa

O BERT tinha um segundo objetivo: dado um par de frases, prever se a segunda seguia a primeira no documento original (Next Sentence Prediction). A intuição era ensinar relações entre frases, útil para tarefas como inferência textual.

Os autores do RoBERTa testaram e mostraram que o NSP não ajudava — e em várias tarefas, atrapalhava. A tarefa era fácil demais: distinguir duas frases do mesmo documento de duas frases de documentos aleatórios é quase sempre uma questão de tópico, não de coerência. O modelo aprendia a detectar mudança de assunto, um sinal raso, e gastava capacidade nisso.

A lição que vale mais que o modelo

O RoBERTa não inventou nada. Ele pegou uma arquitetura existente, questionou cada decisão de treino, mediu, e removeu o que não funcionava. Ganhou vários pontos em benchmarks e virou a base de boa parte da indústria de NLP.

Em uma área que costuma valorizar arquiteturas novas, esse artigo é um lembrete importante: uma parte considerável do que se atribui a "arquitetura melhor" é, na verdade, treino melhor — e quase nunca é medido separadamente. Vale desconfiar disso sempre que ler um paper que anuncia uma arquitetura nova.

4 As diferenças estruturais que você vai encostar

GPT-2RoBERTa
Máscara causalsimnão
Objetivo de treinoprever o próximo tokenreconstruir tokens mascarados
Sinal por sequência100% das posições15% das posições
Tokens especiais<|endoftext|><s> </s> <pad> <unk> <mask>
Envolve a frase?não<s> … </s>
Vocabulário50 25750 265
Contexto1024512
Gera texto?simnão
Cache KV possível?simnão

Os 8 tokens a mais do RoBERTa (50 265 − 50 257) são exatamente os especiais que ele precisa e o GPT-2 não. O <s> merece atenção especial: ele é o primeiro token de toda sequência e, por ver tudo (bidirecionalmente), acaba funcionando como um resumo da frase inteira. É dele que sai a classificação — e é o assunto da apostila 12.

5 No laboratório

.venv\Scripts\python.exe lab\10_roberta_mlm.py
Uma limitação honesta dos nossos modelos

Os dois RoBERTa que baixamos são *-openai-detector: eles foram fine-tunados para classificação, e no processo a cabeça de MLM foi descartada e substituída por uma cabeça de classificação binária.

Isso significa que não conseguimos preencher lacunas com eles — a cabeça necessária não está nos pesos. O que conseguimos, e é o que o lab faz: mostrar o corpo bidirecional funcionando (que é o que importa conceitualmente), medir a diferença de representação contra o GPT-2, e usar a cabeça de classificação que eles de fato têm. É uma restrição real deste conjunto de modelos, e o laboratório a registra em vez de fazer o script parecer mais completo do que é.

  1. Mostra o tokenizador do RoBERTa, com o <s>/</s> envolvendo a frase e o <mask> disponível no vocabulário.
  2. Simula o mascaramento 80/10/10 sobre uma frase, várias vezes, para você ver o mascaramento dinâmico em ação — a mesma frase virando exercícios diferentes.
  3. Compara a representação de uma palavra ambígua ("bank" em dois contextos) no GPT-2 e no RoBERTa, medindo quanto cada um separa os dois sentidos.
  4. Refaz a prova de causalidade do lab 04, agora explicando o resultado do ponto de vista do encoder.
  5. Mede o desperdício do MLM: quantas posições geram sinal em cada família.

Exercício 10 — preveja antes de rodar

  1. Por que o RoBERTa tem contexto de 512 e o GPT-2 de 1024? Isso é limitação arquitetural ou escolha de treino? (Pense no custo quadrático e no que cada um precisa fazer.)
  2. Se o MLM aproveita só 15% das posições, por que não mascarar 50%? Onde está o limite? (Dica: o que sobra para dar contexto?)
  3. O RoBERTa adotou o tokenizador do GPT-2 — um modelo concorrente, de outro laboratório. Por que isso não é estranho?
  4. Difícil: um encoder não pode gerar texto autoregressivamente. Mas existe uma forma de gerar com MLM (preencher lacunas iterativamente, como fazem os modelos de difusão de texto). Por que isso é mais lento e costuma dar pior?
Referências

As fontes primárias dos conceitos deste capítulo. Os números do texto foram medidos no laboratório; as ideias vêm daqui.

Os termos técnicos têm aqui o sentido de aprendizado de máquina. O glossário do curso mostra esse sentido ao lado dos outros que as mesmas palavras têm na TI.

  1. Devlin, J., Chang, M.-W., Lee, K. e Toutanova, K. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL 2019. arXiv:1810.04805
  2. Liu, Y. et al. (2019). RoBERTa: A Robustly Optimized BERT Pretraining Approach. Preprint. arXiv:1907.11692

Você já viu os dois galhos separadamente. A apostila 11 os coloca frente a frente
e mostra que todas as diferenças descem de uma única linha de código.