Essencial
Self-attention a partir de princípios básicos: Q, K, V
Self-attention permite que cada token construa uma representação sensível ao contexto — trabalhada aqui com os shapes reais de projeção do Qwen3.8-27B, onde 24 heads de largura 256 tornam a projeção de Q não quadrada.
Atualizada em
01 · Conceito
Conceito
O embedding de um token é uma consulta sem contexto. O token “banco” recebe o mesmo vetor inicial em “banco do rio” e em “conta no banco”, mas um modelo útil precisa tratar essas duas ocorrências de forma diferente. Esse é o problema concreto: transformar uma identidade estática de token numa representação que dependa da sequência ao redor. Self-attention é a operação que faz isso — cada posição decide quanta informação vai buscar em cada outra posição permitida. As próprias posições são saídas do tokenizador da lição 1.2; no Qwen3.8-27B cada uma delas é um vetor de 5120 números, o hidden size do modelo.
Represente a sequência como uma matriz : uma linha por posição de token, 5120 features por linha. A camada de attention aprende três matrizes de projeção, , e , produzindo
Os nomes descrevem papéis, não entradas diferentes. Queries expressam o que cada posição receptora está procurando. Keys descrevem como cada posição disponível deve ser encontrada. Values contêm a informação que pode ser transferida. Toda posição cria as três a partir da sua representação atual.
- q_proj (queries + porta)5120 → 12288
- divide por head24 × (256 query + 256 porta)
- k_proj · v_proj5120 → 1024 cada
- sigmoid(porta) · o_proj6144 → 5120
Agora o exemplo trabalhado, com shapes reais. Um primeiro palpite razoável — e o clássico palpite errado — é que cada projeção mapeia o hidden size nele mesmo: , uma matriz quadrada. A configuração do Qwen3.8-27B refuta isso. As camadas de Gated Attention do modelo usam 24 query heads, cada uma de dimensão 256. A projeção de query precisa produzir todas elas, então o query state é o número de heads vezes a dimensão de head:
Esses 6144 são a largura do query state, e ela é genuinamente não quadrada — mais larga do que uma matriz quadrada seria. A matriz de pesos que a produz é mais larga ainda. Estas são camadas de attention com porta (attn_output_gate na config), e a porta está fundida na mesma projeção: q_proj emite número de heads vezes dimensão de head duas vezes, . A divisão é por head, não ao meio — a saída é vista como 24 heads de , e o último eixo de cada head é cortado em 256 valores de query e 256 de porta. Junte as metades de query e você tem o query state de 6144; junte as metades de porta e você tem um segundo 6144 que nunca entra na matriz de scores. Em vez disso, depois que a atenção roda, sua saída é escalada elemento a elemento por e só então projetada. Em disco, portanto, o tensor é ; só metade dele vira query. Keys e values são ainda mais estreitos: o modelo tem apenas 4 KV heads (um projeto grouped-query coberto na lição 7.6), então
e tanto a projeção de key quanto a de value são . Depois que os heads calculam suas saídas e são concatenados de volta à largura 6144, uma projeção de saída mapeia para que o resultado caiba de novo no residual stream. Quatro retângulos, nenhum quadrado: (queries e porta juntas), , , . Note que a entrada de tem 6144 de largura, não 12288: o que chega até ela é a saída da atenção concatenada e escalada pela porta, que por acaso tem a mesma largura do query state. A porta é aplicada elemento a elemento logo antes de , então escala o que recebe sem alargá-lo.
Com os shapes resolvidos, o mecanismo: para uma posição receptora, pegue sua query e calcule o produto escalar com cada key. Um produto escalar maior significa direções mais compatíveis. Todos os pares de uma vez formam a matriz de scores . Escale pela raiz quadrada da dimensão de head (assunto da lição 4.3) e normalize cada linha com softmax:
As saídas do softmax são os pesos de attention: não negativos, cada linha somando um. Multiplicar por dá a cada posição de query uma soma ponderada de vetores de value. Essa é a separação crucial — keys decidem onde ler, values determinam o que é lido. Se keys e values fossem forçados a ser os mesmos vetores, endereçamento e conteúdo compartilhariam uma única representação e cada um comprometeria o outro.
Considere “O chef adicionou sal porque a sopa estava sem graça.” A query em “graça” pode casar com as keys de “sopa” e “estava” mais fortemente do que com a key de “chef”. Sua nova representação então mistura informação de value dessas posições. Em outra frase o mesmo token parte do mesmo embedding, mas termina em outro lugar. Essa é a mistura contextual que nos propusemos a construir.
A palavra self significa que queries, keys e values vêm de uma única sequência. Modelos decoder-only como o Qwen3.8-27B acrescentam um causal mask — a posição não pode ler posições depois de —, tema que a lição 4.4 desenvolve. E um único cálculo de attention não é encarregado de capturar todas as relações: as projeções são divididas nos 24 heads paralelos mencionados acima, assunto da lição 4.5. O bloco completo acrescenta conexões residuais, normalização e uma rede feed-forward; attention é a operação de roteamento dentro desse sistema maior.
Duas propriedades computacionais importam mais adiante. Primeira, todos os scores por pares são operações matriciais, então o treinamento processa as posições em paralelo. Segunda, a matriz de scores tem uma entrada para cada par de posições, gerando crescimento quadrático no comprimento da sequência — a conta que a lição 4.3 quantifica no comprimento de contexto real desse modelo e que a track 7 trabalha para reduzir.
Pesos de attention são evidência sobre roteamento, não prova de raciocínio. Um peso alto mostra que um head transferiu informação de value por uma aresta, numa camada; residual streams, outros heads e camadas posteriores podem amplificar ou cancelar isso. O modelo mental durável é o de uma consulta diferenciável: cada posição escreve uma pergunta, veste um crachá e oferece um conteúdo, e as projeções que definem os três são aprendidas de ponta a ponta.
02 · Analogia
Analogia
Imagine uma redação movimentada. Cada repórter escreve uma pergunta num cartão: essa é a query. Cada fonte usa um crachá descrevendo com que tipo de informação pode ajudar: essa é a key. O repórter compara a pergunta com cada crachá e distribui attention conforme a compatibilidade. O que a fonte escolhida de fato diz é o value. Uma fonte pode ter um crachá que casa fortemente com a pergunta e ainda assim entregar um conteúdo separado. Self-attention repete essa redação em miniatura para cada token, em paralelo.
03 · Explique de volta
Explique de volta
Usando as dimensões reais do Qwen3.8-27B, explique as funções das projeções Q, K, V e de saída, e por que nenhuma delas é uma matriz quadrada.
Comparar com uma resposta-modelo
O hidden state de 5120 dimensões de cada token é projetado de três formas. A projeção de query produz 24 query heads de dimensão 256, então o query state tem 24 vezes 256 = 6144 de largura, não 5120. Como estas são camadas de gated attention, a mesma matriz também emite uma porta de 6144, então o peso em si vai de 5120 para 12288 e é dividido por head em 256 valores de query e 256 de porta; só as metades de query entram na atenção, e o sigmoid da porta escala a saída da atenção antes da projeção de saída. As projeções de key e value mapeiam 5120 para 1024 porque existem apenas 4 KV heads de dimensão 256: 4 vezes 256 é 1024. Queries expressam o que uma posição está procurando, keys descrevem como uma posição pode ser encontrada, values carregam o conteúdo recuperável. Depois que attention mistura os values, a projeção de saída mapeia a concatenação de largura 6144 de volta para 5120, para que o resultado possa ser somado ao residual stream. As larguras são definidas pelo número de heads vezes a dimensão de head, então nada obriga que sejam iguais ao hidden size.
04 · Teste seu entendimento
Teste seu entendimento
Conclua o teach-back e acerte o quiz para finalizar a aula.
◎ · Marcador de evidência
Fontes
- Ashish Vaswani et al. (2017). Attention Is All You Need.
- Dzmitry Bahdanau, Kyunghyun Cho e Yoshua Bengio (2015). Neural Machine Translation by Jointly Learning to Align and Translate.
- Qwen Team (2026). Qwen3.8-27B Model Card.