Demonstrações interativas da aula de language modeling, tradução e atenção
Quatro demonstrações que acompanham os slides: o playground de decoding (temperatura, top-k, top-p), a comparação entre greedy e beam search, as métricas de avaliação (perplexidade, BLEU, ROUGE) e o mecanismo de atenção. O modelo por trás das duas primeiras é um n-gram de palavras treinado por contagem, aqui no navegador, sobre um pequeno corpus em português. Notação dos slides: P(yt | y<t).
A cada passo o modelo dá a distribuição do próximo token, P(yt | y<t). A temperatura τ divide os logits e deixa a distribuição mais nítida (τ < 1) ou mais plana (τ > 1). Top-k e top-p restringem o sorteio aos tokens mais prováveis: as barras cinzas ficam de fora. Experimente um contexto com distribuição concentrada e outro com distribuição espalhada e observe que o mesmo k corta de formas bem diferentes (o ponto dos slides sobre top-k vs top-p).
Distribuição do próximo token (roxo = elegível, cinza = excluído por top-k/top-p)
O acumulado usa a probabilidade do modelo antes dos filtros, que é o que ∏ P(yt | y<t) significa. Clique em um token gerado para voltar até aquele ponto.
O modelo é um trigrama por contagem: aproximamos P(yt | y<t) ≈ P(yt | yt−2, yt−1), ou seja, só os dois últimos tokens do contexto importam (a aproximação de contexto curto dos slides). Cada frase do corpus é cercada por ⟨bos⟩ ⟨bos⟩ … ⟨eos⟩ e o "treinamento" é só contar: quantas vezes cada palavra w aparece depois de cada par (u, v), depois de cada palavra v, e no total.
A estimativa é a razão de contagens, por exemplo p(dorme | o, gato) ≈ c(o, gato, dorme)/c(o, gato) = 4/20 = 0,20. Como muitos trigramas nunca aparecem no corpus (o problema de sparsity dos slides), o modelo interpola três níveis: trigrama (peso 0,6), bigrama (0,3) e unigrama suavizado (0,1), o que dá uma probabilidade pequena, mas não nula, até para palavras nunca vistas naquele contexto. Use a consulta ao lado para ver os três níveis compondo a probabilidade final.
De onde vem p(w | u, v): consulte um contexto
Greedy escolhe o token mais provável a cada passo, uma decisão local que pode ser ruim globalmente. Beam search mantém os b caminhos de maior Σ ln P. No exemplo dos slides, greedy escolhe "The nice" (0,5) e perde "The dog has", cuja probabilidade conjunta é maior. Ao final, a penalidade por comprimento divide o escore por nα.
Árvore de busca: greedy · beams sobreviventes · podados (tracejado)
A perplexidade é 2−L/m, com L = Σ log2 p(yt | y<t): o "número médio efetivo de tokens" entre os quais o modelo fica em dúvida a cada passo. Compare o exemplo numérico dos slides com frases avaliadas pelo modelo n-gram do corpus.
BLEU mede precisão de n-grams com contagens clipadas e penalidade por brevidade; ROUGE é orientado a recall (quanto da referência foi coberto), com a variante ROUGE-L usando a maior subsequência comum (LCS). Edite as frases e veja as contagens, os n-grams casados e as notas mudarem.
O exemplo numérico dos slides, ao vivo: os estados do encoder sk (verde) e o estado do decoder ht (rosa) são vetores 2D que você pode arrastar pela ponta. Os scores ht⊤sk passam pela softmax, viram pesos ak, e o vetor de contexto c = Σ ak·sk (roxo) é recalculado na hora. Arraste ht na direção de um sk e veja a atenção migrar para aquele token.
Vetores 2D (arraste as pontas de sk e ht)
Pesos de atenção ak = softmax(ht⊤sk)