Como um modelo decide para onde olhar.

SRC·01 Source
O truque inteiro: cada palavra pode olhar para todas as outras.

O truque inteiro: cada palavra pode olhar para todas as outras.

Você lê uma frase uma palavra por vez. Um modelo não — ele joga todas as palavras na mesa de uma só vez e deixa cada uma perguntar para as outras: quem aqui importa pra mim? Esse único movimento é a atenção, e é o motor por trás de quase tudo: chat, código, imagens. O resto é só como uma palavra pergunta.
Uma palavra sozinha não significa nada — só no contexto.

Uma palavra sozinha não significa nada — só no contexto.

“Banco” — de praça ou de dinheiro? Impossível saber só pela palavra. O modelo guarda cada palavra como um vetor que é um borrão de todos os sentidos que ela já teve; pra escolher o que está valendo, ela olha para os vizinhos. Como numa festa barulhenta: você não escuta cem vozes por igual — você sintoniza na que importa e deixa o resto virar zoeira de fundo.
Cada palavra solta três coisas: um desejo, uma oferta e uma entrega.

Cada palavra solta três coisas: um desejo, uma oferta e uma entrega.

Q=xWQ,K=xWK,V=xWVQ = xW_Q,\quad K = xW_K,\quad V = xW_V
Query = o que estou procurando. Key = sobre o que eu sou. Value = o que eu entrego se você me escolher. Uma barra de busca, as etiquetas da prateleira e o que está de fato dentro da caixa. Cada palavra vasculha a sala com seu Query e lê os Keys de todo mundo. Como um bando de estorninhos: nenhum pássaro acompanha o bando inteiro — cada um só lê os vizinhos e se mexe.
Quanto A deve ligar para B? Multiplique os vetores dos dois.

Quanto A deve ligar para B? Multiplique os vetores dos dois.

scores=QK\text{scores} = QK^{\top}
Pegue o Query de A e o Key de B e multiplique — um produto escalar, um único número, alto quando os dois se alinham. Faça isso para cada par e então aplique o softmax em cada linha pra que as notas virem pesos que somam 1: uma cota fixa de holofote que cada palavra gasta. Como uma única luz de palco: 80% na estrela, uma fatia em outros dois, nada no resto.
Tem um detalhe: divida por √d, ou tudo trava.

Tem um detalhe: divida por √d, ou tudo trava.

weights=softmax ⁣(QKd)\text{weights} = \mathrm{softmax}\!\left(\dfrac{QK^{\top}}{\sqrt{d}}\right)
Vetores longos deixam esses produtos escalares gigantes, e o softmax de números gigantes trava no oito ou oitenta — um peso ≈ 1, o resto ≈ 0. Isso achata o gradiente e o aprendizado empaca. A solução é quase simples demais: encolha por √d antes. Como uma caixa de som forçada além do limite — não fica mais alta, distorce. Baixe o volume e os detalhes voltam.
O novo sentido de uma palavra é uma mistura do que ela prestou atenção.

O novo sentido de uma palavra é uma mistura do que ela prestou atenção.

Attention(Q,K,V)=softmax ⁣(QKd)V\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\!\left(\dfrac{QK^{\top}}{\sqrt{d}}\right)V
Gaste o holofote: pese o Value de cada palavra pela atenção que ela recebeu e some tudo. Agora a palavra não é só ela mesma — é uma mistura das palavras com que ela se importou. “banco” do lado de “rio” é uma coisa bem diferente de “banco” do lado de “dinheiro”. A linha abaixo é o Transformer — não um desenho dele, a coisa em si. Como misturar tinta: vários pigmentos puxados pra formar a cor exata que a pincelada pede.
Tudo acontece de uma vez — e a atenção não faz ideia da ordem das coisas.

Tudo acontece de uma vez — e a atenção não faz ideia da ordem das coisas.

Um: cada Query encontra cada Key numa única multiplicação de matrizes — paralelismo absurdo, que é exatamente por que essa arquitetura devora GPUs e por que a escala decolou. Dois: embaralhe as palavras e a conta devolve a mesma resposta. A atenção enxerga um saco de palavras, não uma sequência — a ordem é grampeada à parte. Como um quebra-cabeça despejado na mesa: todas as peças, nenhuma ordem; o único motivo de ele distinguir “cachorro morde homem” de “homem morde cachorro” é uma minúscula coordenada escrita em cada peça antes.
🌱 Se ele lê um saco de palavras com coordenadas presas por cima, o modelo está realmente <em>lendo</em>?

🌱 Se ele lê um saco de palavras com coordenadas presas por cima, o modelo está realmente lendo?

Você atravessa uma frase em ordem, cada palavra te puxando pra próxima. Um Transformer vê tudo de uma vez e reconstrói a ordem a partir de uma etiqueta de posição. Esse é o superpoder — a palavra 1 consegue conversar com a palavra 1.000 tão fácil quanto com a palavra 2. E é também a rachadura: nada lá dentro exige ordem, então quanto mais longo o texto, mais peso aquele senso de lugar grampeado por cima tem que aguentar. Então se a ordem é a única coisa que a atenção não sente sozinha — talvez o próximo salto não seja um modelo maior. Seja um jeito melhor de dizer pra ele onde ele está.
toque →deslize ↑ para maisdeslize ↓ para sair