Modelagem de Linguagem

O que é modelagem de linguagem?

Modelagem de linguagem (language modeling) é a tarefa de atribuir probabilidades a sequências de texto e usar essas probabilidades para prever o que vem a seguir. Dada uma sequência de tokens (tokens) (x_{1:n} = (x_1, x_2, \dots, x_n)), um modelo de linguagem (language model, LM) define uma distribuição de probabilidade:

[ P(x_{1:n}) ]

e, de forma crucial para geração, probabilidades condicionais do próximo token:

[ P(x_{t} \mid x_{1:t-1}) ]

Modelos de linguagem grandes (large language models, LLMs) modernos normalmente são treinados para fazer predição do próximo token (next-token prediction): dados os tokens anteriores, prever a distribuição sobre o próximo token.

A modelagem de linguagem está no núcleo de muitos sistemas de processamento de linguagem natural (natural language processing, NLP) porque fornece uma forma de uso geral de modelar fluência, sintaxe e muitas regularidades semânticas. Ela sustenta geração de texto, autocompletar de código, decodificação em reconhecimento de fala, decodificação em tradução automática e pode servir como base para assistentes que seguem instruções.

Este artigo foca em:

  • Predição do próximo token como o objetivo canônico para modelos de linguagem autorregressivos
  • Entropia cruzada / log-verossimilhança negativa como aquilo que eles otimizam
  • Perplexidade como a métrica intrínseca de avaliação mais comum para modelos de linguagem

(Para ver como o texto vira tokens, consulte Aprofundamento em Tokenização e Representação de Texto.)

Tokens e sequências: a unidade de modelagem

Modelos de linguagem operam sobre tokens em vez de caracteres brutos ou palavras na maioria dos sistemas modernos. Tokens são produzidos por um tokenizador (tokenizer) (frequentemente BPE ou Unigram), que mapeia texto para uma sequência de IDs inteiros.

Exemplo:

  • Texto: "Language models predict the next token."
  • Tokens (ilustrativo): ["Language", " models", " predict", " the", " next", " token", "."]

As escolhas de tokenização afetam:

  • Tamanho do vocabulário e comportamento fora do vocabulário (out-of-vocabulary, OOV)
  • O comprimento das sequências (o que impacta a computação)
  • Como as probabilidades são distribuídas (por exemplo, palavras raras podem ser divididas em partes)

Esses detalhes importam para comparações de perplexidade: a perplexidade é definida por token, então mudar a tokenização muda a unidade de medida.

A regra da cadeia e a predição do próximo token

Uma base teórica fundamental é a regra da cadeia de probabilidades (probability chain rule):

[ P(x_{1:n}) = \prod_{t=1}^{n} P(x_t \mid x_{1:t-1}) ]

Essa fatoração transforma a modelagem de sequências em uma série de problemas de predição condicional.

Modelos de linguagem autorregressivos

Um LM autorregressivo (autoregressive) parametrizado por (\theta) modela:

[ P_\theta(x_t \mid x_{1:t-1}) ]

Modelos de linguagem neurais computam um vetor de pontuações (logits) para o próximo token e as convertem em probabilidades com uma softmax (softmax):

[ P_\theta(x_t = v \mid x_{<t}) = \frac{\exp(z_v)}{\sum_{u \in V} \exp(z_u)} ]

onde (V) é o vocabulário e (z) são logits produzidos pela rede (comumente um(a) Arquitetura Transformer).

Teacher forcing durante o treinamento

Durante o treinamento, LMs de predição do próximo token tipicamente usam forçamento do professor (teacher forcing):

  • Entrada: o prefixo ground-truth (x_{1:t-1})
  • Alvo: o próximo token ground-truth (x_t)

Isso é diferente do momento de geração, em que o modelo precisa condicionar em suas próprias saídas previamente amostradas.

O que modelos de linguagem otimizam

Estimação por máxima verossimilhança (MLE)

Treinar um LM autorregressivo em um conjunto de dados (dataset) de sequências de tokens (\mathcal{D}) geralmente usa estimação por máxima verossimilhança (maximum likelihood estimation):

[ \theta^* = \arg\max_\theta \sum_{x \in \mathcal{D}} \log P_\theta(x) ]

Usando a regra da cadeia:

[ \log P_\theta(x_{1:n}) = \sum_{t=1}^{n} \log P_\theta(x_t \mid x_{<t}) ]

Então o modelo é treinado para maximizar a soma das log-probabilidades do próximo token.

Log-verossimilhança negativa (NLL) e entropia cruzada

Na prática, nós minimizamos a log-verossimilhança negativa (negative log-likelihood, NLL):

[ \mathcal{L}(\theta) = -\sum_{t=1}^{n} \log P_\theta(x_t \mid x_{<t}) ]

Se você fizer a média disso por token em um conjunto de dados, obtém a perda de entropia cruzada (cross-entropy loss) (em nats se usar logaritmos naturais; em bits se usar log base 2):

[ H(p, q_\theta) = \mathbb{E}{x \sim p}\left[-\log q\theta(x)\right] ]

Aqui:

  • (p) é a distribuição verdadeira dos dados (desconhecida)
  • (q_\theta) é a distribuição do modelo

Minimizar entropia cruzada é equivalente a minimizar a divergência de KL (KL divergence) até uma constante aditiva:

[ H(p, q_\theta) = H(p) + D_{KL}(p | q_\theta) ]

Como (H(p)) não depende de (\theta), minimizar entropia cruzada empurra (q_\theta) na direção de (p).

A otimização é feita com métodos baseados em gradiente (veja Descida do Gradiente e Retropropagação).

O que esse objetivo incentiva — e o que não incentiva

O treinamento por entropia cruzada do próximo token incentiva:

  • Atribuir alta probabilidade a continuações observadas
  • Capturar padrões estatísticos locais e de longo alcance
  • Boa calibração das probabilidades de tokens (na medida em que a classe de modelos e os dados permitem)

Ele não otimiza diretamente:

  • Veracidade ou factualidade
  • Utilidade ou seguimento de instruções
  • Um comportamento “bom” de decodificação sob amostragem/busca em feixe
  • Métricas específicas de tarefa como BLEU/ROUGE (veja Avaliação para PLN)

Essas propriedades frequentemente exigem curadoria adicional de dados, métodos de alinhamento ou ajuste fino específico por tarefa.

Perplexidade: definição e intuição

Perplexidade (perplexity, PPL) é a métrica intrínseca padrão para modelos de linguagem de predição do próximo token. Ela é uma transformação exponencial da NLL média por token.

Dada uma sequência (x_{1:n}), defina a NLL média:

[ \text{NLL}{avg} = -\frac{1}{n}\sum{t=1}^{n} \log P_\theta(x_t \mid x_{<t}) ]

Então a perplexidade é:

[ \text{PPL} = \exp(\text{NLL}_{avg}) ]

Se você usar (\log_2) em vez de logaritmo natural, então:

[ \text{PPL} = 2^{H_{bits}} ]

Intuição: “fator de ramificação efetivo”

A perplexidade pode ser entendida como o número médio efetivo de escolhas igualmente prováveis do modelo em cada passo.

  • Se o modelo sempre atribui probabilidade 1,0 ao próximo token correto, NLL = 0, então PPL = 1 (perfeito).
  • Se, em média, o modelo se comporta como se estivesse escolhendo uniformemente entre (k) opções, a perplexidade é aproximadamente (k).

Um pequeno exemplo resolvido

Suponha que um modelo preveja o próximo token correto com probabilidades:

  • Passo 1: (p=0.5)
  • Passo 2: (p=0.25)
  • Passo 3: (p=0.125)

NLL média (logaritmo natural):

[ -\frac{1}{3}(\ln 0.5 + \ln 0.25 + \ln 0.125) = -\frac{1}{3}(\ln 2^{-1} + \ln 2^{-2} + \ln 2^{-3}) = -\frac{1}{3}(-1\ln2 -2\ln2 -3\ln2) = 2\ln2 ]

Perplexidade:

[ \exp(2\ln2) = 4 ]

Então a incerteza média do modelo é como escolher entre ~4 tokens igualmente prováveis por passo.

Computando perplexidade na prática

Em toolchains modernos, você tipicamente computa a perda de entropia cruzada em um conjunto de dados e depois aplica a exponenciação.

Exemplo no estilo PyTorch (conceitual)

import torch
import torch.nn.functional as F

# logits: [batch, seq_len, vocab]
# input_ids: [batch, seq_len]
# We predict token t given tokens <t, so shift.
shift_logits = logits[:, :-1, :]          # predict positions 1..T-1
shift_labels = input_ids[:, 1:]           # targets are positions 1..T-1

loss = F.cross_entropy(
    shift_logits.reshape(-1, shift_logits.size(-1)),
    shift_labels.reshape(-1),
    reduction="mean"
)

perplexity = torch.exp(loss)
print(loss.item(), perplexity.item())

Notas práticas:

  • Você frequentemente ignora tokens de padding via uma máscara (ou ignore_index).
  • Reporte perplexidade em um conjunto de teste retido da mesma distribuição que treino/validação.
  • Valores de perplexidade não são comparáveis entre tokenizadores diferentes ou pré-processamentos significativamente diferentes.

Perplexidade vs. qualidade downstream

A perplexidade é útil, mas não é a mesma coisa que “boas saídas”.

Quando a perplexidade é significativa

A perplexidade tende a correlacionar com:

  • Melhor predição do próximo token em texto similar
  • Fluência e gramaticalidade aprimoradas
  • Melhor desempenho em tarefas que dependem fortemente de regularidades linguísticas (especialmente in-domain)

Ela é mais significativa quando:

  • Os dados de teste combinam com o domínio e o estilo de interesse
  • O protocolo de tokenização e avaliação é consistente
  • Você está comparando modelos com comprimentos de contexto e pré-processamento similares

Quando a perplexidade pode enganar

A perplexidade pode falhar em refletir:

  • Correção factual: um modelo pode atribuir alta probabilidade a uma afirmação plausível, porém falsa.
  • Seguimento de instruções: comportamento otimizado para chat não é capturado diretamente pela verossimilhança bruta do próximo token em corpora genéricos.
  • Coerência de longo horizonte sob amostragem: a geração introduz loops de realimentação (o modelo condiciona em suas próprias saídas).
  • Propriedades de segurança ou viés.

Por isso a avaliação de LLMs tipicamente combina perplexidade com avaliações baseadas em tarefas e julgamentos humanos (veja Avaliação para PLN).

Predição do próximo token e geração: decodificação não é o objetivo de treinamento

Uma confusão comum: modelos de linguagem otimizam probabilidades, mas usuários se importam com sequências geradas. A geração requer uma estratégia de decodificação (decoding strategy).

Dado (P_\theta(x_t \mid x_{<t})), a decodificação escolhe tokens para formar uma sequência. Estratégias comuns:

  • Decodificação gulosa (greedy decoding): escolher (\arg\max) em cada passo
  • Busca em feixe (beam search): busca aproximada por sequências de alta probabilidade (comum em tradução)
  • Amostragem (sampling): sortear tokens da distribuição (frequentemente com temperatura (temperature), top-k, ou filtragem por núcleo/top-p (nucleus/top-p filtering))

Distinção importante:

  • Objetivo de treinamento: maximizar a verossimilhança do próximo token verdadeiro (minimizar entropia cruzada).
  • Objetivo de decodificação: produzir uma única sequência que atenda às preferências humanas (o que pode envolver diversidade, evitar repetição, seguir instruções).

Então “um modelo com menor perplexidade” não implica automaticamente “melhores gerações” sob toda configuração de decodificação, especialmente para comportamento de assistente interativo.

Variantes de objetivos de modelagem de linguagem (contexto)

Embora este artigo enfatize a predição do próximo token, ajuda saber que “modelagem de linguagem” pode se referir a vários objetivos relacionados:

  • LM causal (autorregressivo): prever (x_t) a partir de (x_{<t}) (predição do próximo token).
  • Modelagem de linguagem mascarada (masked language modeling, MLM): prever tokens mascarados usando contexto à esquerda e à direita (por exemplo, pré-treinamento no estilo BERT).
  • Sequência a sequência (sequence-to-sequence) (codificador–decodificador (encoder–decoder)): modelar (P(y \mid x)) para tradução/sumarização, onde o decodificador ainda é autorregressivo.

Mesmo quando a arquitetura difere, muitos sistemas ainda acabam usando entropia cruzada em tokens como a perda central.

Aplicações práticas de modelos de linguagem

Geração de texto e assistência

LMs autorregressivos podem gerar:

  • Rascunhos, resumos, explicações
  • Respostas de diálogo
  • Autocompletar de código

Em sistemas de produção, a geração frequentemente é combinada com recuperação (retrieval) ou ferramentas em vez de depender somente de memória paramétrica (parametric memory) (veja Recuperação de Informação e Busca Semântica).

Tradução automática e sumarização (decodificação com LMs)

Antes de seq2seq neural dominar, tradução automática baseada em frases usava um LM externo para pontuar fluência. Hoje, componentes decodificadores ainda são autorregressivos e treinados com entropia cruzada por token; busca em feixe é comum.

Reconhecimento de fala (reclassificação por LM)

Em reconhecimento automático de fala (automatic speech recognition, ASR), um modelo acústico (acoustic model) propõe transcrições candidatas; um modelo de linguagem pode reponderar (rescore) hipóteses para favorecer sequências de texto mais prováveis (por exemplo, corrigindo “recognize speech” vs “wreck a nice beach”).

Adaptação de domínio e personalização

Ajuste fino (fine-tuning) de um LM pré-treinado (pretrained) em texto de domínio (médico, jurídico, documentos internos) frequentemente reduz a perplexidade de forma acentuada nesse domínio e melhora a usabilidade — embora seja necessária avaliação cuidadosa para evitar sobreajuste (overfitting) e memorização (memorization).

Armadilhas práticas e boas práticas

A perplexidade depende de tokenização e normalização

A perplexidade é sensível a:

  • Escolha do tokenizador e vocabulário
  • Se o texto é colocado em minúsculas, normalizado ou contém markup
  • Como números, espaços em branco e Unicode são tratados

Comparar perplexidade entre modelos só é justo quando isso é controlado.

Vazamento e contaminação de dados

Um modelo pode alcançar excelente perplexidade em um benchmark se esse benchmark (ou quase duplicatas) apareceu nos dados de treinamento. Para resultados críveis:

  • Remova duplicatas dos dados de treinamento
  • Audite sobreposição com conjuntos de avaliação
  • Prefira avaliações com divisão por tempo ou por fonte quando possível

Efeitos de comprimento e janela de contexto

Janelas de contexto (context window) mais longas podem reduzir a perplexidade porque o modelo condiciona em mais informação. No entanto:

  • Os ganhos podem diminuir se o modelo não conseguir usar efetivamente contexto de longo alcance
  • A avaliação deve corresponder ao caso de uso pretendido (prompts curtos vs documentos longos)

Calibração e qualidade das probabilidades

A entropia cruzada treina estimativas de probabilidade, mas LMs ainda podem ser mal calibrados (overconfident). A calibração importa quando probabilidades orientam decisões (por exemplo, estimação de incerteza, geração seletiva).

Resumo

  • Modelagem de linguagem atribui probabilidades a sequências de tokens, geralmente fatorizando pela regra da cadeia em termos de predição do próximo token.
  • A maioria dos LMs autorregressivos modernos treina com entropia cruzada / log-verossimilhança negativa, equivalente a estimação por máxima verossimilhança sobre o conjunto de dados.
  • Perplexidade é (\exp()NLL média por token()), interpretável como um fator de ramificação efetivo; ela é útil para comparar qualidade de predição do próximo token em configurações de avaliação consistentes.
  • Menor perplexidade frequentemente correlaciona com melhor fluência, mas não mede diretamente seguimento de instruções, veracidade, segurança ou qualidade de geração sob estratégias específicas de decodificação.

Para um contexto de apoio mais aprofundado, veja Aprofundamento em Tokenização, Arquitetura Transformer e Avaliação para PLN.