Capítulo 04 · Atenção · 12 min

Atenção é tudo que você precisa

O mecanismo que muda tudo. Como cada token olha para todos os outros para entender o contexto.

O pronome e o medico

Voltemos a esta frase:

"O medico mandou a enfermeira para casa dela porque ela..."

Para uma pessoa, "ela" se conecta naturalmente a enfermeira. Para um LLM isso nao e obvio: quando ele processa o token ela, a palavra enfermeira esta varias posicoes atras. Como ele as conecta?

Esse e o papel da atencao.

Por que a atencao existe

Antes de 2017, modelos de linguagem eram em grande parte recorrentes (RNN, LSTM): liam o texto token por token, propagando um "estado oculto" que resumia tudo o que tinham visto ate ali.

Problema: esse estado oculto e um gargalo. Tudo precisa passar por ele. Conforme a frase cresce, informacoes antigas se diluem. E o aprendizado e sequencial: para tratar a centesima palavra, e preciso ter tratado as 99 anteriores, o que dificulta a paralelizacao.

O paper Attention Is All You Need (Vaswani et al., 2017) propoe uma ruptura:

Sem recorrencia. Cada token olha diretamente para todos os outros, em paralelo.

E o mecanismo que torna possiveis os modelos modernos.

A intuicao

Em cada camada do modelo, cada token faz tres operacoes:

  1. Faz uma pergunta ao resto da frase (o vetor Query).
  2. Cada outro token mostra uma etiqueta que resume o que ele e (o vetor Key).
  3. O token compara sua pergunta com cada etiqueta: onde ha correspondencia, recupera um pouco de conteudo (o vetor Value).

Resultado: uma nova representacao para cada token, uma soma ponderada dos outros, em que os pesos vem das correspondencias Q-K.

Attention(Q, K, V) = softmax(QKT / √dk) · V

Nao e preciso decorar a formula: guarde a ideia. Cada token olha para os outros e mistura o que acha relevante.

De onde saem Q, K e V exatamente?

Nao saem do nada. Para cada token, pegamos seu vetor de embedding x e multiplicamos por tres matrizes aprendidas durante o treinamento:

Q = x · W_Q
K = x · W_K
V = x · W_V

Essas tres matrizes W_Q, W_K, W_V sao os parametros da atencao. Elas sao as mesmas para todos os tokens de uma mesma camada — e o que o modelo ajusta, a cada passo de gradiente, para que as "perguntas" certas encontrem as "etiquetas" certas.

O fator √d_k na formula serve para evitar que os produtos escalares explodam quando a dimensao e grande. Sem ele, os valores antes do softmax ficam enormes, o softmax satura e o gradiente morre. Detalhe tecnico, mas necessario.

Varias perguntas ao mesmo tempo

Um unico conjunto de perguntas nao basta. Um token pode precisar olhar para seu sujeito sintatico e para sua coreferencia e para o verbo principal ao mesmo tempo.

Dai a multi-head attention: em vez de um unico sistema Q-K-V, rodamos varios em paralelo (tipicamente 8, 16, 32). Cada um aprende a se especializar em um tipo de relacao. Em modelos treinados, vemos heads dedicadas a:

  • atencao local (cada token olha para si mesmo ou para vizinhos imediatos)
  • ligacao sujeito-verbo
  • coreferencias (pronomes em direcao ao referente)
  • delimitadores (pontuacao, inicio/fim de frase)
  • rima ou estrutura poetica
  • coisas que ainda nao sabemos nomear

Manipule

A visualizacao abaixo mostra, em duas frases, como a atencao de diferentes heads pode parecer. Os padroes sao estilizados (pesos reais viriam de um modelo treinado), mas cada head corresponde a um comportamento observado em modelos atuais.

Cada linha mostra como um token olha para todos os outros. Algumas heads seguem a sintaxe (sujeito ↔ verbo), outras captam a semântica (referentes, antecedentes). Nenhuma destas é programada manualmente: estes padrões emergem do treinamento.

Tres coisas para testar:

  • Em O gato dorme com a head "Sujeito ↔ verbo", observe a linha dorme. O peso mais forte vai para gato. O verbo "encontrou" seu sujeito.
  • Em Coreferencia com a head "Coreferencia", observe a linha ele. O peso mais forte volta para menino. E exatamente o mecanismo que resolve o enigma do pronome.
  • Em qualquer head, olhe o triangulo superior direito: ele e cinza. E a mascara causal — um token so pode olhar para tokens anteriores. E isso que obriga o modelo a prever, nao a copiar.

Causal ou bidirecional?

Nem toda atencao e igual. Existem dois regimes.

Bidirecional. Cada token enxerga todos os outros, para tras e para frente. E o que o BERT (Google, 2018) e o lado encoder do T5 usam. Esses modelos sao otimos para entender uma frase — classificacao, perguntas e respostas extrativas, busca semantica — mas nao geram texto token por token.

Causal. Cada token so enxerga os anteriores. E a mascara triangular vista acima. Essa restricao e o que torna possivel a geracao autoregressiva: para prever a proxima palavra, o modelo precisa trabalhar so com o passado.

GPT, Claude, Llama, Gemini, Mistral — todos os LLMs voltados ao publico usam atencao causal. E essa mascara que os torna capazes de prever, nao apenas de descrever.

A atencao custa

Essa elegancia tem um preco. Para uma sequencia de comprimento n, calcular a matriz de atencao exige O(n²) operacoes. Dobrar o tamanho do contexto quadruplica o custo.

Por isso as janelas de contexto eram limitadas a 2.048 tokens no GPT-2, a 8.192 tokens no GPT-3.5, e foram necessarios truques algoritmicos (FlashAttention, sliding window, sparse attention) para chegar aos 200.000 tokens atuais. Voltamos a essas tecnicas no capitulo 18, onde elas se conectam a memoria do KV cache.

A atencao e poderosa; tambem e o principal gargalo dos LLMs modernos.

O proximo passo

A atencao sozinha nao faz um modelo de linguagem. E preciso empilha-la em blocos sucessivos, adicionar camadas de calculo "feed-forward", normalizacoes, conexoes residuais. Essa e a arquitetura Transformer completa: o tema do proximo capitulo.

Atualizado em

Attention: o mecanismo que muda tudo · Step by Token