Como um modelo lê sem parar sem reler nada.

SRC·33 Source
Lê o livro inteiro — sem reler uma só palavra.

Lê o livro inteiro — sem reler uma só palavra.

A atenção relê cada palavra contra todas as outras; o dobro de texto, o quádruplo de trabalho. Mas há outro caminho. Carregue um único estado corrente — um resumo pequeno e fixo — e dissolva nele cada palavra nova conforme avança. Sem olhar para trás, sem uma grade que cresce. O custo continua plano, por mais longa que seja a página. A pergunta passa a ser: o que vale a pena guardar?
Não guarde cada palavra. Guarde um único resumo corrente.

Não guarde cada palavra. Guarde um único resumo corrente.

Eis o outro caminho, num só gesto. Em vez de armazenar cada palavra e comparar todas, mantenha um único estado — um resumo corrente e compacto — e misture nele cada palavra nova. Como uma panela à qual você segue acrescentando: você não enfileira de novo cada ingrediente a cada passo; incorpora o novo e prova. A panela guarda a refeição inteira até aqui, num só lugar.
A máquina inteira em uma linha: desbota, soma, lê.

A máquina inteira em uma linha: desbota, soma, lê.

ht=Aht1+Bxt,yt=Chth_t = A\,h_{t-1} + B\,x_t,\qquad y_t = C\,h_t
O estado se atualiza por uma regra simples. A cada passo, o estado antigo desbota um pouco (o termo A), a palavra nova é somada (o termo B), e o que você reporta é uma leitura do estado (o termo C). Como o eco de um cânion: cada novo grito se junta à reverberação que se apaga suavemente de todos os gritos anteriores — e o que seu ouvido capta é a mistura.
Congele a regra, e ela vira um único filtro fixo.

Congele a regra, e ela vira um único filtro fixo.

yt=k=0tCAkBxtk=(Kx)t,Kk=CAkBy_t = \sum_{k=0}^{t} C A^{k} B\,x_{t-k} = (K * x)_t,\qquad K_k = C A^{k} B
Se A, B, C nunca mudam, desenrole a recorrência e ela colapsa num único filtro deslizado por toda a entrada — calculável de uma vez, estonteantemente rápido. Mas há um preço: como uma escada rolante a velocidade fixa, carrega cada palavra no mesmo ritmo. Não pode apressar o enchimento nem se demorar na palavra que importa. Rápido, mas cego.
O salto: deixe a palavra decidir o que guardar.

O salto: deixe a palavra decidir o que guardar.

Δt,Bt,Ct=f(xt),ht=Aˉtht1+Bˉtxt,Aˉt=exp(ΔtA)\Delta_t,\,B_t,\,C_t = f(x_t),\qquad h_t = \bar{A}_t\,h_{t-1} + \bar{B}_t\,x_t,\quad \bar{A}_t = \exp(\Delta_t A)
Agora o truque de verdade. Faça os portões dependerem da própria palavra: quanto escrever (B), com que rapidez esquecer (o passo Δ), o que ler na saída (C) — todos funções da entrada. Como um surfista lendo cada onda: deixe as pequenas marolas passarem por baixo, reme com força pela que vale a pena pegar. O modelo agora escolhe, palavra por palavra, o que vale a pena lembrar.
A seletividade quebrou o atalho. Uma varredura o refaz.

A seletividade quebrou o atalho. Uma varredura o refaz.

(Aj,bj)(Ai,bi)=(AjAi,  Ajbi+bj)O(logn) depth(A_j,\,b_j)\oplus(A_i,\,b_i) = (A_j A_i,\;\, A_j\,b_i + b_j)\quad\Rightarrow\quad O(\log n)\ \text{depth}
Deixar a palavra guiar significa que não há mais um único filtro fixo — então o truque de uma vez só desaparece. Mas o passo ainda é associativo: combinar dois trechos de 'desbota-e-soma' dá um trecho do mesmo tipo. Então emparelhe-os e mescle em paralelo. Como um chaveamento eliminatório: rodadas inteiras se resolvem de uma vez, e o campeão é conhecido em apenas um punhado de rodadas — não de partida em partida.
Custo linear — e uma memória que nunca cresce.

Custo linear — e uma memória que nunca cresce.

time O(ndN),state size O(dN) (fixed in n)vs. attention O(n2d)\text{time } O(n\,d\,N),\qquad \text{state size } O(d\,N)\ \text{(fixed in } n)\qquad \text{vs. attention } O(n^2 d)
Some a conta. O trabalho cresce em linha reta com o comprimento, não como o seu quadrado. E na hora de gerar você carrega apenas um estado de tamanho fixo — ele nunca incha como faz um histórico guardado, por mais longa que seja a conversa. Como a vara de equilíbrio de um equilibrista: a mesma vara única nas suas mãos no passo dez ou no passo dez mil. O comprimento deixa de ser uma parede.
Guarda um resumo — nunca o passado em si.

Guarda um resumo — nunca o passado em si.

Um leitor de todos-contra-todos guarda cada palavra e pode sempre olhar para trás. Este guarda apenas um estado que evolui — e precisa decidir, no instante em que cada palavra chega, o que incorporar e o que deixar desbotar. Nunca pode des-esquecer. 🌱 Se uma mente escolhe o que guardar no momento em que vê, e nunca revisita o passado bruto — o que ela carrega é memória, ou apenas a história que contou a si mesma sobre o que importava?
toque →deslize ↑ para maisdeslize ↓ para sair