Essencial

Linear attention e fast weights

Reescrever attention como uma RNN com estado matricial torna o custo por token constante, e a delta rule transforma esse estado numa memória que corrige os próprios erros.

Atualizada em

01 · Conceito

Conceito

Attention paga pela própria memória do jeito mais literal possível: guarda tudo. Para produzir o token tt, uma camada de attention causal compara a query nova com a key de cada posição anterior e mistura seus values:

ot=i=1texp(qtki)j=1texp(qtkj)vi.o_t=\sum_{i=1}^{t}\frac{\exp(q_t^{\top}k_i)}{\sum_{j=1}^{t}\exp(q_t^{\top}k_j)}\,v_i.

Conte o que esse passo custa de verdade. O plano ingênuo — o que todo decoder com attention segue — armazena os tt vetores passados de key e value e faz tt comparações de similaridade para o token novo. O token um custa uma comparação, o token mil custa mil, o token nn custa nn: o trabalho por token é O(n)O(n) no comprimento do contexto, e as keys e values armazenadas crescem sem limite. Esse depósito é o KV cache, e a lição 7.2 deriva seu preço para o modelo do curso: no Qwen3.8-27B, no contexto nativo de 262.144 tokens, as keys e values em cache das camadas de attention chegam a 16 GiB para uma única sequência. A camada retém cada registro passado de key e value e dá à query nova um caminho ponderado direto para cada um. Isso evita a compressão em estado fixo, mas o softmax ainda forma uma mistura ponderada e não garante a recuperação exata de um token armazenado arbitrário.

A lição 3.2 mostrou o desenho oposto: uma RNN carrega um hidden state de tamanho fixo, paga o mesmo custo a cada passo e não armazena nada por token. A pergunta desta lição é se o comportamento de endereçamento da attention cabe dentro de um estado de tamanho fixo.

Katharopoulos et al. (2020) perceberam que o obstáculo é o softmax. Troque a similaridade exponencial por um feature map ϕ\phi, de modo que o peso da posição ii seja proporcional a ϕ(qt)ϕ(ki)\phi(q_t)^{\top}\phi(k_i), e a soma vira associativa:

ot=ϕ(qt)itϕ(ki)viϕ(qt)itϕ(ki).o_t=\frac{\phi(q_t)^{\top}\sum_{i\le t}\phi(k_i)v_i^{\top}}{\phi(q_t)^{\top}\sum_{i\le t}\phi(k_i)}.

As duas somas deixam de depender da query, então podem ser mantidas incrementalmente. Defina um estado matricial e um normalizador:

St=St1+ϕ(kt)vt,zt=zt1+ϕ(kt),S_t=S_{t-1}+\phi(k_t)v_t^{\top},\qquad z_t=z_{t-1}+\phi(k_t),

e a saída é uma única leitura, ot=Stϕ(qt)ztϕ(qt)o_t=\dfrac{S_t^{\top}\phi(q_t)}{z_t^{\top}\phi(q_t)}. Repare no que aconteceu: isso é uma recorrência. A mesma regra de atualização em toda posição, estado de tamanho fixo, trabalho constante por token — o projeto de RNN da lição 3.2, exceto que o hidden state agora é uma matriz d×dd\times d de associações key-para-value em vez de um vetor. O custo por token cai de O(n)O(n) para O(1)O(1), e a memória, de ilimitada para constante.

Aqui vem o desvio clássico. A atualização aditiva só sabe somar. Grave o value vav_a sob uma key, depois grave um vbv_b diferente sob uma key quase idêntica, e a leitura devolve uma mistura dos dois; a associação velha nunca é removida, e conforme milhares de escritas se superpõem, a interferência cresce. A linear attention inicial abriu mão da precisão da softmax attention e teve desempenho inferior ao dela em tarefas que exigiam recall exato — por isso passou anos como a ideia “derrotada”. A conclusão tentadora é que isso é fundamental: um estado de tamanho fixo não consegue esquecer seletivamente, então o borrão com perdas seria o preço inevitável do O(1)O(1). Essa conclusão está errada, e o conserto estava havia décadas na teoria de memórias associativas: mude a escrita, não o tamanho.

A delta rule torna a escrita corretora de erros. Antes de escrever, recupere o que o estado prevê para a key que chega — lendo do mesmo jeito que qualquer query é lida, St1ϕ(kt)S_{t-1}^{\top}\phi(k_t) — e escreva apenas a diferença:

St=St1+βtϕ(kt)(vtSt1ϕ(kt)),S_t=S_{t-1}+\beta_t\,\phi(k_t)\bigl(v_t-S_{t-1}^{\top}\phi(k_t)\bigr)^{\top},

com βt(0,1)\beta_t\in(0,1) uma força de escrita aprendida. Percorra os dois casos. Se o estado já guarda vtv_t para essa key, o erro é quase zero e o estado fica em paz. Se guarda algo desatualizado, a atualização usa esse erro para mudar o estado ao longo da direção da key que chega — uma escrita corretora de erro, não uma sobrescrita exata, cujo efeito depende de βt\beta_t, das features de key e da interferência de outras associações. Cada passo é um passo de gradient descent online sobre o erro de recuperação da própria memória: o estado aprende enquanto o modelo roda. DeltaNet é linear attention com essa escrita; adicionar os gates de esquecimento aprendido da lição 3.3 — um decay sobre St1S_{t-1} para o estado também desbotar o que não importa mais — produz o Gated DeltaNet (Yang et al., 2024), que a lição 4.15 disseca por completo.

E é exatamente essa diferença que fez a ideia derrotada de 2020 virar arquitetura de produção em 2026. O Qwen3.8-27B, o espécime deste curso, constrói 48 das suas 64 camadas como Gated DeltaNet e mantém softmax attention completa em apenas 16, uma a cada quatro (Qwen3.8-27B Model Card, 2026). No caminho float32 de referência atual do Transformers, o estado recorrente de cada camada DeltaNet ocupa cerca de 3 MiB; nas 48 camadas, algo em torno de 144 MiB — constante, tenha a sequência cem tokens ou 262.144 — contra os 16 GiB que o KV cache das camadas de attention atinge no contexto completo. O híbrido é uma confissão de engenharia de que as duas classes de função merecem o lugar: memória fixa corretora de erros para comprimento barato, umas poucas camadas de acesso a key e value por posição para buscas que a compressão em estado fixo não consegue representar de modo confiável. A RNN não perdeu para a attention afinal; ela se retirou, aprendeu a escrever como uma memória e voltou como a maior parte do modelo.

02 · Analogia

Analogia

Um escritório responde correspondência de dois jeitos. O arquivista guarda toda carta já recebida e relê a pilha inteira antes de cada resposta: perfeitamente fiel, cada vez mais lento, e as prateleiras crescem sem limite. O escriturário mantém um único livro-razão de tamanho fixo com totais acumulados: cada carta atualiza os totais e é descartada, e toda resposta custa o mesmo. O escriturário ingênuo só sabe somar, então entradas contraditórias se acumulam sob o mesmo nome. O cuidadoso primeiro confere o que o livro já diz para aquele nome e anota apenas uma correção dirigida à entrada velha. Linear attention é o escriturário ingênuo; a delta rule é o cuidadoso.

03 · Explique de volta

Explique de volta

Explique como linear attention transforma attention numa RNN com estado matricial, por que a atualização puramente aditiva causa interferência e como a delta rule resolve isso.

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

Aguardando sua explicação.

Comparar com uma resposta-modelo

Trocar a similaridade do softmax por um feature map torna a soma do decode associativa, e todas as contribuições passadas de key e value colapsam numa única matriz corrente S_t=S_{t−1}+φ(k_t)v_tᵀ, que a query lê com uma multiplicação. Isso é uma RNN cujo hidden state é uma matriz de tamanho fixo, então custo e memória por token são constantes no comprimento. Mas a escrita aditiva superpõe todas as associações: gravar dois values diferentes sob keys parecidas mistura os dois na leitura, e nada é removido. A delta rule primeiro recupera o que o estado prevê para a key que chega, S_{t−1}ᵀφ(k_t), e escreve apenas o erro escalado β_t φ(k_t)(v_t−S_{t−1}ᵀφ(k_t))ᵀ, de modo que a escrita corrige o erro em vez de acumular cegamente — um estado fixo que esquece seletivamente.

04 · Teste seu entendimento

Teste seu entendimento

01Como o estado da linear attention se relaciona com o hidden state da RNN da lição 3.2?
Resposta e explicação

Ambos são estados de tamanho fixo atualizados pela mesma regra a cada passo, mas aqui o estado é uma matriz de associações em vez de um vetor — Linear attention é literalmente uma recorrência: mesma regra em toda posição, estado de tamanho constante — o desenho da RNN com um hidden state matricial.

02O que a delta rule muda na escrita da memória?
Resposta e explicação

Ela escreve o erro entre o value que chega e o que o estado já recupera para aquela key, em vez de outro value bruto — Recuperar primeiro, escrever só a correção: se o estado já guarda o value certo, a atualização é quase zero; caso contrário, a correção é proporcional ao erro de recuperação.

03Por que o custo de decode por token fica constante na linear attention, mas cresce na softmax attention?
Resposta e explicação

A query lê uma única matriz de estado de tamanho fixo em vez de comparar com toda key passada armazenada — A associatividade colapsa todo o passado em S_t uma vez; softmax attention precisa tocar as t keys e values do cache a cada passo.

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

◎ · Marcador de evidência

Fontes

  1. Angelos Katharopoulos et al. (2020). Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention.
  2. Songlin Yang et al. (2024). Gated Delta Networks: Improving Mamba2 with Delta Rule.
  3. Qwen Team (2026). Qwen3.8-27B Model Card.