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) é:

  1. Selecionar ~15% das posições de tokens para corromper.
  2. 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:

  1. O objetivo é naturalmente adequado a tarefas sequência a sequência (sequence-to-sequence).
  2. 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 é:

  1. começar de um modelo geral pré-treinado com MLM
  2. continuar o treinamento de MLM em texto não rotulado do domínio
  3. 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.