Modelagem de Linguagem com Mascaramento
Visão geral
A modelagem de linguagem mascarada (masked language modeling, MLM) é um objetivo de pré-treinamento (pretraining objective) autossupervisionado (self-supervised) no qual um modelo aprende a prever tokens (tokens) ausentes (mascarados) ou corrompidos em uma sequência de texto usando o contexto ao redor. Como o modelo pode atender a tokens tanto à esquerda quanto à direita de uma posição mascarada, a MLM é comumente usada para aprender representações bidirecionais (bidirectional) — especialmente com a Arquitetura Transformer.
A MLM ficou amplamente conhecida por meio do BERT, e refinamentos e variantes posteriores incluem o RoBERTa (melhores práticas de treinamento e mascaramento) e objetivos de autoencodificação com remoção de ruído (denoising autoencoding), como a corrupção de spans (span corruption) do T5.
A MLM se encaixa na família mais ampla de Aprendizado Autossupervisionado: você cria um sinal de treinamento supervisionado a partir de texto bruto definindo um processo de “corrupção” e treinando o modelo para desfazê-lo.
Intuição: “Complete as lacunas”, mas com contexto profundo
Um exemplo simples:
“O gato sentou no [MASK].”
Dada essa entrada, um modelo treinado com MLM aprende a prever que o token mascarado provavelmente é “tapete”, “sofá” etc., usando tanto o contexto à esquerda (“O gato sentou no”) quanto potencialmente o contexto à direita (se houver).
Na prática, a MLM é mais do que um brinquedo de completar lacunas:
- O mascaramento acontece no nível de token (subpalavras, bytes etc.).
- Apenas um subconjunto de posições é corrompido.
- Modelos são treinados em corpora enormes, aprendendo sintaxe, semântica e associações factuais que se transferem para tarefas posteriores.
Objetivo formal
Seja uma sequência tokenizada:
[ x = (x_1, x_2, \dots, x_T) ]
Escolha um subconjunto de posições ( M \subset {1,\dots,T} ) para corromper (mascarar/substituir/deletar). Seja ( \tilde{x} ) a sequência de entrada corrompida. Uma MLM treina um modelo ( p_\theta(\cdot) ) para prever os tokens originais ( x_i ) nas posições mascaradas ( i \in M ):
[ \mathcal{L}{MLM}(\theta) = - \sum{i \in M} \log p_\theta(x_i \mid \tilde{x}) ]
Isso normalmente é implementado como função de perda de entropia cruzada (cross-entropy loss) sobre o vocabulário nas posições selecionadas. É importante notar que a perda é computada apenas nas posições corrompidas (não necessariamente em todo token).
Por que isso produz representações “bidirecionais”
Como o modelo vê a sequência corrompida completa ( \tilde{x} ) e pode atender a tokens em ambos os lados, as representações aprendidas em cada posição incorporam contexto à esquerda e à direita. Isso contrasta fortemente com modelos de linguagem (language models, LMs) autorregressivos, descritos mais adiante.
Esquemas comuns de mascaramento e corrupção
O desempenho da MLM depende muito de como você corrompe as entradas. O processo de corrupção define o problema de aprendizado.
Mascaramento de tokens (estilo BERT)
A abordagem clássica (usada no BERT) é:
- Selecionar ~15% das posições de tokens para corromper.
- Para cada posição selecionada:
- 80%: substituir o token por [MASK]
- 10%: substituir o token por um token aleatório
- 10%: manter o token inalterado (mas ainda assim prevê-lo)
O truque 80/10/10 reduz um desalinhamento: no momento de ajuste fino (fine-tuning)/inferência (inference), você normalmente não tem tokens [MASK]. Se o modelo só aprendeu a prever tokens mascarados quando vê [MASK], ele pode depender demais desse artefato.
Exemplo prático
Original:
“Paris é a capital da França.”
Entrada corrompida (uma possível corrupção):
“Paris é a [MASK] da França.”
Rótulo-alvo na posição mascarada:
“capital”
Mascaramento dinâmico (estilo RoBERTa)
O BERT originalmente usava mascaramento estático (static masking): as posições de máscara eram escolhidas uma vez no pré-processamento. O RoBERTa popularizou o mascaramento dinâmico (dynamic masking), em que o mascaramento é amostrado em tempo de execução toda vez que uma sequência é fornecida ao modelo. Isso efetivamente aumenta a variedade de padrões de corrupção vistos durante o treinamento.
Por que isso importa: o modelo aprende com problemas de “completar lacunas” mais diversos sem precisar de mais texto bruto.
Mascaramento de palavra inteira
Com tokenização por subpalavras (subword tokenization) (por exemplo, WordPiece/BPE), uma palavra pode se dividir em vários tokens:
- “unbelievable” → “un”, “##bel”, “##ievable”
O mascaramento de palavra inteira mascara todos os subtokens de uma palavra juntos. Isso evita que a tarefa fique fácil demais (por exemplo, prever “##ievable” a partir de “un ##bel [MASK]”).
Mascaramento por n-grama / span (SpanBERT e além)
Em vez de mascarar tokens individuais de forma independente, o mascaramento por span (span masking) mascara spans contíguos, normalmente amostrados de uma distribuição de comprimentos (por exemplo, geométrica). Isso treina o modelo a reconstruir fragmentos ausentes mais longos e pode corresponder melhor a tarefas como perguntas e respostas ou sumarização.
Exemplo:
“A rápida raposa marrom salta sobre o cão preguiçoso.”
Com span mascarado:
“A rápida [MASK] [MASK] salta sobre o cão preguiçoso.”
Alvos:
“raposa marrom”
Corrupção por substituição de tokens (estilo ELECTRA)
Um objetivo relacionado, mas distinto: em vez de prever tokens mascarados, um modelo gerador (generator model) substitui alguns tokens, e um discriminador (discriminator) é treinado para prever se cada token é original ou substituído.
Isso não é “MLM pura”, mas é intimamente relacionado em espírito: aprender representações desfazendo corrupção. Muitas vezes melhora a eficiência computacional (compute efficiency) porque o discriminador recebe um sinal de aprendizado (learning signal) em todas as posições.
Deleção e preenchimento (autoencodificação com remoção de ruído)
A MLM pode ser vista como um autoencoder com remoção de ruído (denoising autoencoder) para texto: corromper a entrada e depois reconstruir o original. As corrupções podem incluir:
- mascarar/substituir tokens
- deletar tokens
- embaralhar spans (menos comum em LMs modernas)
- adicionar tokens de ruído
Isso é comum no pré-treinamento de modelos codificador-decodificador (encoder-decoder) (por exemplo, T5).
Autoencodificação com remoção de ruído e corrupção de spans (T5)
O T5 usa um objetivo de remoção de ruído frequentemente chamado de corrupção de spans (ou preenchimento de texto):
- Amostrar spans de tokens.
- Substituir cada span por um token sentinela (sentinel token) (por exemplo,
<extra_id_0>,<extra_id_1>, …). - Treinar um modelo codificador-decodificador para produzir a concatenação dos spans ausentes, separados por tokens sentinela.
Exemplo:
Entrada para o codificador:
“O gato sentou
<extra_id_0>o tapete<extra_id_1>.”
Saída-alvo (previsão do decodificador):
“
<extra_id_0>no<extra_id_1>.”
Isso difere da MLM no estilo BERT em dois aspectos importantes:
- O objetivo é naturalmente adequado a tarefas sequência a sequência (sequence-to-sequence).
- O decodificador prevê spans ausentes de forma autorregressiva (autoregressively), mas condicionado a uma entrada corrompida codificada de modo bidirecional.
Arquitetura: quais modelos são treinados com MLM?
A MLM é mais comumente usada com codificadores Transformer (Transformer encoders):
- Autoatenção (self-attention) bidirecional sobre a sequência completa.
- Um classificador de vocabulário (vocabulary classifier) (camada linear (linear layer)) sobre cada posição de token.
O exemplo canônico é o BERT:
- Entrada: tokens corrompidos (com
[MASK], substituições aleatórias etc.) - Saída: embeddings contextuais (contextual embeddings) em cada posição
- Perda: entropia cruzada nas posições mascaradas
Variantes codificador-decodificador (por exemplo, T5) usam um objetivo de remoção de ruído em vez de uma cabeça (head) pura de “prever tokens mascarados no lugar”.
Esboço de implementação (estilo PyTorch)
A seguir, um exemplo simplificado de como dados de treinamento para MLM poderiam ser criados e como a perda é computada.
import torch
import torch.nn.functional as F
def mask_tokens(input_ids, mask_token_id, vocab_size, mlm_prob=0.15):
"""
Returns:
corrupted_input_ids: input_ids with some tokens replaced
labels: original tokens at masked positions, and -100 elsewhere
"""
labels = input_ids.clone()
# sample mask positions
prob = torch.full(labels.shape, mlm_prob, device=input_ids.device)
mask = torch.bernoulli(prob).bool()
# do not train loss on unmasked positions
labels[~mask] = -100 # ignore_index for cross-entropy
# BERT-style 80/10/10
rand = torch.rand(input_ids.shape, device=input_ids.device)
# 80% -> [MASK]
mask80 = mask & (rand < 0.8)
input_ids = input_ids.clone()
input_ids[mask80] = mask_token_id
# 10% -> random token
mask10 = mask & (rand >= 0.8) & (rand < 0.9)
input_ids[mask10] = torch.randint(vocab_size, (mask10.sum(),), device=input_ids.device)
# 10% -> unchanged (do nothing)
return input_ids, labels
# Given model outputs logits: [batch, seq_len, vocab_size]
def mlm_loss(logits, labels):
return F.cross_entropy(
logits.view(-1, logits.size(-1)),
labels.view(-1),
ignore_index=-100
)
Essa é a ideia central usada por muitos pipelines de treinamento: criar entradas corrompidas e rótulos em tempo real, computar a entropia cruzada apenas nas posições mascaradas.
Como a MLM difere da modelagem de linguagem autorregressiva
A MLM é frequentemente contrastada com a modelagem de linguagem autorregressiva (autoregressive language modeling, AR LM) (por exemplo, estilo GPT), em que o modelo prevê o próximo token dados apenas os tokens anteriores.
Contexto de condicionamento
- MLM (bidirecional): prevê tokens mascarados usando contexto à esquerda e à direita.
- AR LM (causal): prevê (x_t) apenas a partir de (x_{<t}).
Isso torna a MLM particularmente eficaz para aprender representações usadas em:
- classificação
- rotulagem de sequência
- perguntas e respostas extrativas
- tarefas de recuperação e similaridade
Objetivo de treinamento e verossimilhança
AR LM define uma fatoração verdadeira da verossimilhança da sequência: [ p(x) = \prod_{t=1}^{T} p(x_t \mid x_{<t}) ] Isso permite avaliação direta por perplexidade (perplexity) e geração.
MLM não define diretamente uma verossimilhança da esquerda para a direita sobre sequências completas da mesma forma, porque prevê posições selecionadas sob um processo de corrupção artificial. O modelo é treinado para resolver uma tarefa de remoção de ruído (denoising), não para modelar (p(x)) via uma fatoração causal.
Capacidades de geração
- AR LMs geram naturalmente (amostram tokens sequencialmente).
- Modelos MLM podem gerar texto via refinamento iterativo (mascarar e preencher repetidamente), mas isso é menos padrão e frequentemente menos eficiente.
Viés de exposição vs desalinhamento de corrupção
- AR LMs enfrentam viés de exposição (exposure bias) (treinam com prefixos verdadeiros, geram a partir das próprias previsões).
- Modelos MLM enfrentam um desalinhamento diferente: o pré-treinamento vê tokens
[MASK]ou corrupções artificiais que não aparecem durante o uso em tarefas posteriores.
Esquemas de mascaramento como 80/10/10 e mascaramento dinâmico ajudam, mas o desalinhamento ainda é uma diferença conceitual importante.
Por que a MLM funciona: o que é aprendido?
A MLM incentiva o aprendizado de:
- sintaxe (concordância, estrutura gramatical)
- semântica (significado das palavras pelo contexto)
- associações de entidades e fatos (até certo ponto, dependendo dos dados)
- desambiguação contextual de sentido (resolução de polissemia)
- dependências de longo alcance (já que a atenção é global)
Como o modelo precisa inferir tokens ausentes a partir do contexto ao redor, ele aprende representações altamente transferíveis para tarefas que exigem compreensão, e não geração.
Aplicações práticas
1) Pré-treinamento de modelos codificadores para tarefas de PLN
Codificadores pré-treinados com MLM (tipo BERT) frequentemente são ajustados finamente para:
- classificação de sentimento/tópico
- reconhecimento de entidades nomeadas (named entity recognition) e classificação de tokens (token classification)
- inferência de linguagem natural (natural language inference)
- perguntas e respostas extrativas
- similaridade textual semântica (semantic textual similarity)
- recuperação baseada em embeddings (embedding-based retrieval) (frequentemente com objetivos adicionais)
Ajuste fino normalmente significa adicionar uma pequena cabeça específica da tarefa e treinar de ponta a ponta (end-to-end) com Retropropagação usando dados rotulados.
2) Adaptação de domínio via pré-treinamento contínuo
Se você tem uma mudança de domínio (por exemplo, jurídico, médico, código, finanças), uma abordagem comum é:
- começar de um modelo geral pré-treinado com MLM
- continuar o treinamento de MLM em texto não rotulado do domínio
- fazer ajuste fino na sua tarefa-alvo
Isso pode aumentar significativamente o desempenho quando os dados rotulados são limitados.
3) Aprendizado eficiente em dados e cenários multilíngues
A MLM permite aproveitar grandes corpora não rotulados, o que é valioso em:
- línguas de poucos recursos (low-resource languages)
- modelos multilíngues (multilingual models) (vocabulários de subpalavras compartilhados (shared subword vocabularies))
- cenários em que rótulos são escassos ou caros
4) Como componente em pré-treinamento com múltiplos objetivos
Sistemas modernos frequentemente misturam objetivos: remoção de ruído no estilo MLM, perdas contrastivas (contrastive losses), remoção de ruído sequência a sequência etc. A MLM pode complementar objetivos de alinhamento de embeddings usados em Aprendizado Contrastivo.
Principais escolhas de design e seus trade-offs
Taxa de mascaramento
Taxas comuns de mascaramento (masking rate) são ~15% (BERT), mas as taxas variam por modelo e objetivo. Taxas mais altas:
- tornam a tarefa mais difícil (mais informação ausente)
- podem reduzir o comportamento de cópia
- podem prejudicar se contexto demais for removido
A corrupção de spans frequentemente usa uma corrupção efetiva maior porque spans removem mais conteúdo contíguo.
Efeitos da tokenização
A tokenização por subpalavras pode tornar a previsão mais fácil ou mais difícil dependendo de as unidades mascaradas se alinharem com unidades semânticas. Mascaramento de palavra inteira ou por span frequentemente melhora a dificuldade “semântica” da tarefa.
Estratégia de substituição
Substituir por [MASK] cria um sinal claro, mas aumenta o desalinhamento entre pré-treinamento e ajuste fino (pretrain–finetune mismatch). Substituir por tokens aleatórios aumenta a robustez, mas pode introduzir entradas pouco naturais. A mistura 80/10/10 é um compromisso pragmático.
Corrupção estática vs dinâmica
A corrupção dinâmica normalmente melhora a eficiência de dados e reduz o sobreajuste a um padrão fixo de mascaramento.
Limitações e armadilhas comuns
Não é um objetivo perfeito para geração
A MLM aprende representações bidirecionais fortes, mas não é inerentemente otimizada para geração fluente da esquerda para a direita. Objetivos de remoção de ruído em modelos codificador-decodificador (estilo T5) reduzem parte dessa lacuna.
“A previsão é local demais” se o mascaramento for trivial
Se você mascarar apenas peças únicas de subpalavras, o modelo pode depender de pistas rasas. Mascaramento por span e por palavra inteira ajudam.
A avaliação é menos padronizada do que perplexidade
A perda de MLM (entropia cruzada nas posições mascaradas) é útil para curvas de treinamento, mas não corresponde à perplexidade padrão sobre sequências da mesma forma que modelos autorregressivos.
Sensibilidade potencial ao design de corrupção
Pequenas mudanças na distribuição de corrupção podem alterar o que o modelo aprende (por exemplo, mais ênfase em sintaxe local vs semântica de longo alcance). Boas práticas frequentemente são específicas do modelo e do domínio.
Resumo
A modelagem de linguagem mascarada é um objetivo autossupervisionado fundamental para aprender representações de texto bidirecionais treinando modelos para reconstruir tokens mascarados/corrompidos a partir do contexto. A MLM clássica (BERT) usa mascaramento de tokens com uma estratégia de substituição 80/10/10, enquanto abordagens posteriores (RoBERTa) melhoraram práticas de treinamento (por exemplo, mascaramento dinâmico). Objetivos mais gerais de autoencodificação com remoção de ruído (por exemplo, a corrupção de spans do T5) estendem as ideias de MLM a modelos codificador-decodificador e tarefas sequência a sequência.
A MLM difere fundamentalmente da modelagem de linguagem autorregressiva em condicionamento (bidirecional vs causal), fatoração de verossimilhança e comportamento de geração. Na prática, a MLM continua sendo uma técnica central para pré-treinar modelos que se destacam em tarefas de compreensão de linguagem, adaptação de domínio e aprendizado de representações dentro do panorama mais amplo de Aprendizado Autossupervisionado.