Essencial

Self-attention desde os primeiros princípios: Q, K e V

Self-attention permite que cada token construa uma representação sensível ao contexto, escolhendo o que ler nas outras posições.

Atualizada em

1

Conceito

O embedding de um token começa como uma consulta sem contexto. O token equivalente a “banco” recebe o mesmo vetor inicial em “banco da praça” e “conta no banco”. Um modelo de linguagem útil precisa de uma representação que mude depois de ler a sequência ao redor. Self-attention é a operação do Transformer que realiza essa mistura contextual: cada posição decide quanta informação deve buscar nas outras posições.

Comece com uma sequência representada pela matriz XX. Cada linha corresponde a uma posição de token e contém as features atuais dessa posição. A camada de attention aprende três matrizes de projeção, WQW_Q, WKW_K e WVW_V. A multiplicação de XX por elas cria três matrizes:

Q=XWQ,K=XWK,V=XWVQ = XW_Q,\qquad K = XW_K,\qquad V = XW_V

Os nomes descrevem funções, não três sequências de entrada diferentes. Queries expressam o que cada posição receptora procura. Keys descrevem como cada posição disponível deve ser comparada. Values carregam a informação que pode ser transferida. Toda posição cria os três a partir da sua representação atual.

Para uma posição receptora, pegue sua query e calcule o produto escalar com cada key. Um produto maior indica vetores apontando em direções mais compatíveis. Reunir todos os pares de uma só vez produz a matriz de pontuações QKQK^\top. A linha de uma query contém sua compatibilidade com cada key. O Transformer divide essas pontuações pela raiz quadrada da dimensão da key e normaliza cada linha com softmax:

Attention(Q,K,V)=softmax(QKdk)V\operatorname{Attention}(Q,K,V) = \operatorname{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V

Os valores de softmax são pesos de attention. Eles não são negativos, e cada linha soma um. Multiplicar os pesos por VV produz, para cada posição de query, uma soma ponderada de vetores de value. Esta separação é fundamental: keys determinam onde ler, enquanto values determinam o que é lido. Se keys e values tivessem de ser idênticos, endereço e conteúdo ficariam presos numa única representação.

Considere “A cozinheira colocou sal porque a sopa estava insossa”. A query em “insossa” pode combinar mais com as keys de “sopa” e “estava” do que com a key de “cozinheira”. Sua nova representação mistura informação dos values dessas posições. Em outra frase, a mesma palavra parte do mesmo embedding, mas recebe contexto diferente. Self-attention transforma a identidade estática do token em um estado contextual.

A palavra self indica que queries, keys e values vêm da mesma sequência. Em cross-attention, as queries pertencem a uma sequência, enquanto keys e values vêm de outra, como ocorre quando um decoder lê estados do encoder. O mesmo mecanismo de endereçamento atende aos dois casos.

Modelos de linguagem decoder-only acrescentam uma máscara causal. Ao prever o token na posição ii, essa posição não pode ler tokens futuros. Antes de softmax, as pontuações das posições proibidas recebem um valor muito negativo, fazendo seu peso normalizado ficar praticamente zero. Sem a máscara no treinamento, o modelo conseguiria espiar a resposta que deveria prever.

Um único cálculo de attention não precisa capturar todas as relações. Transformers usam múltiplas heads: projeções aprendidas separadas executam attention em paralelo, e suas saídas são concatenadas e projetadas novamente. Heads distintas podem se especializar em padrões úteis diferentes, embora uma interpretação humana limpa não seja garantida. O bloco completo também contém conexões residuais, normalização e uma rede feed-forward. Attention é uma operação de roteamento dentro desse sistema maior, não o Transformer inteiro.

Self-attention tem duas propriedades computacionais marcantes. Primeiro, todos os pares podem ser calculados por operações matriciais, permitindo processar posições em paralelo durante o treinamento, em vez de avançar por um estado recorrente token a token. Segundo, a matriz possui uma entrada para cada par de posições, causando crescimento quadrático no comprimento da sequência. Kernels eficientes como FlashAttention reduzem tráfego de memória sem alterar o resultado matemático exato; variantes esparsas e lineares mudam o cálculo de modo mais profundo.

Pesos de attention são interessantes para inspeção, mas não explicam sozinhos o raciocínio do modelo. Um peso alto mostra que uma head transferiu informação de value por uma aresta em determinada camada. O residual stream, outras heads, blocos feed-forward e camadas posteriores podem ampliar, transformar ou cancelar essa contribuição. Dizer “o modelo prestou attention neste token” é evidência de roteamento, não uma prova isolada de importância causal.

O modelo mental durável é um sistema de consulta diferenciável. Cada posição escreve uma query, expõe uma key e oferece um value. A semelhança entre queries e keys produz endereços; softmax converte endereços em pesos de mistura; os values ponderados viram contexto. Como as projeções são aprendidas de ponta a ponta, o modelo descobre quais perguntas, rótulos e conteúdos ajudam a prever linguagem.

2

Como explicar para uma criança de cinco anos

Imagine uma redação de jornal movimentada. Cada repórter escreve uma pergunta num cartão: essa é a query. Cada fonte usa um crachá que descreve os assuntos em que pode ajudar: essa é a key. A repórter compara a pergunta com todos os crachás e distribui sua attention. Aquilo que a fonte realmente informa é o value. Um crachá pode combinar muito com a pergunta e, ainda assim, o conteúdo entregue ser outra representação. Self-attention repete essa pequena redação para cada token, em paralelo.

3

Ensine de volta

Usando uma frase concreta, explique os papéis diferentes de queries, keys e values em self-attention e por que a saída depende do contexto.

Mínimo: 80 caracteres e 15 palavras. Seu texto fica somente neste navegador.

Salvo somente neste dispositivo.

Ver uma resposta-modelo

Em “O animal não atravessou a rua porque estava cansado”, a posição relevante forma uma query que representa o que precisa descobrir. Cada posição oferece uma key para comparação e um value com a informação que pode ser recuperada. A query pode combinar mais com a key de “animal” do que com a de “rua”. Softmax transforma as pontuações em pesos, e a saída é uma soma ponderada dos values. Como os pesos dependem de todos os tokens da frase, a representação final muda com o contexto.

4

Teste seu entendimento

1. O que é comparado para produzir as pontuações brutas de attention?
Resposta e explicação

Um vetor de query com vetores de key — Produtos escalares, com escala, entre a query de uma posição e as keys disponíveis produzem pontuações de compatibilidade.

2. O que é combinado depois que softmax produz os pesos de attention?
Resposta e explicação

Os vetores de value — A saída de attention é uma soma ponderada dos values; keys participam do endereçamento, enquanto values carregam o conteúdo recuperado.

Conclua o teach-back e acerte o quiz para finalizar a aula.

Fontes

  1. Ashish Vaswani et al. (2017). Attention Is All You Need.
  2. Dzmitry Bahdanau, Kyunghyun Cho e Yoshua Bengio (2015). Neural Machine Translation by Jointly Learning to Align and Translate.