Essencial

Positional encoding I: senoidal e aprendido

Como attention sozinha é equivariante a permutações, Transformers precisam de um sinal explícito que distinga posição e ordem — as respostas de 2017 foram carimbos senoidais e tabelas aprendidas.

Atualizada em

01 · Conceito

Conceito

Tudo o que foi construído nesta track até aqui tem um ponto cego, e ele é fácil de enunciar concretamente. Alimente a pilha de attention com os vetores de token de “cachorro morde pessoa” e depois com os mesmos três vetores reordenados como “pessoa morde cachorro”. Attention compara vetores por conteúdo: cada produto escalar query–key entre o mesmo par de vetores é idêntico nos dois casos, então as saídas são os mesmos vetores, apenas reordenados do mesmo jeito que as entradas foram. Essa equivariância a permutações significa que o modelo literalmente não consegue dizer quem mordeu quem. (O causal mask da lição 4.4 restringe quais pares interagem, o que quebra a simetria só parcialmente — ele diz quem vem antes, não a que distância nem onde.) A linguagem precisa de ordem; attention sozinha não a enxerga.

Tente a primeira correção óbvia: anexar a posição como um número extra, de modo que o token na posição 7 receba uma feature de valor 7. Ela falha duas vezes. O escalar solitário precisa sobreviver a projeções desenhadas para milhares de features de conteúdo, então é facilmente abafado; e sua magnitude cresce sem limite — a posição 100.000 tem uma feature 100.000 vezes maior que a da posição 1, arruinando as estatísticas cuidadosamente escaladas da lição 4.3. A correção que o artigo de 2017 escolheu: dar à posição um vetor de largura completa com entradas limitadas e estrutura em muitas escalas, e somá-lo ao embedding do token antes da primeira camada:

xt=etokent+pt.x_t = e_{token_t}+p_t.

Como ambos os vetores têm largura dmodeld_{model}, posição e conteúdo compartilham o residual stream, e toda projeção de todo head (lição 4.5) pode usar combinações dos dois.

O esquema senoidal define esse vetor por fórmula, pareando dimensões em frequências espaçadas geometricamente:

PE(pos,2i)=sin(pos/100002i/dmodel),PE(pos,2i)=\sin\left(pos/10000^{2i/d_{model}}\right), PE(pos,2i+1)=cos(pos/100002i/dmodel).PE(pos,2i+1)=\cos\left(pos/10000^{2i/d_{model}}\right).

Um pequeno exemplo trabalhado com dmodel=4d_{model}=4 torna isso tangível. Para a posição pos=1pos = 1: o par de dimensões i=0i=0 usa frequência 1/100000=11/10000^{0} = 1, dando PE(1,0)=sin(1)0.84PE(1,0)=\sin(1)\approx 0.84 e PE(1,1)=cos(1)0.54PE(1,1)=\cos(1)\approx 0.54. O par i=1i=1 usa frequência 1/100002/4=1/1001/10000^{2/4} = 1/100, dando PE(1,2)=sin(0.01)0.01PE(1,2)=\sin(0.01)\approx 0.01 e PE(1,3)=cos(0.01)1.00PE(1,3)=\cos(0.01)\approx 1.00. O par rápido já oscilou de forma perceptível na posição 1; o par lento mal se moveu e vai levar centenas de posições para mudar de modo apreciável. A posição 2 dobra cada ângulo (sin(2)0.91\sin(2)\approx 0.91, sin(0.02)0.02\sin(0.02)\approx 0.02), e assim por diante: cada posição recebe uma leitura distinta de relógio multivelocidade, com todas as entradas limitadas a [1,1][-1,1]. Posições próximas têm carimbos parecidos; posições distantes diferem nas dimensões lentas. Deslocamentos relativos são linearmente recuperáveis a partir dos pares seno–cosseno, uma propriedade que discretamente antecipa a próxima lição.

Um embedding de posição absoluta aprendido substitui a fórmula por uma tabela treinável: uma linha por posição suportada, consultada exatamente como um embedding de token. O BERT e a linhagem GPT usaram isso com sucesso — a otimização descobre qualquer geometria posicional que ajude a distribuição de treino, em vez de aceitar uma predeterminada.

O tradeoff não é “princípios versus aprendizado”. Uma tabela aprendida tem um comprimento máximo declarado e simplesmente não tem linha além dele; estender significa redimensionar e interpolar linhas que nunca foram treinadas. A fórmula senoidal produz um valor para qualquer posição inteira — mas um valor definido não é um valor útil.

Dois detalhes operacionais pesam na prática. A soma não obriga a rede a manter conteúdo e posição separáveis — eles ficam emaranhados num único vetor desde a primeira camada, e os Q, K e V de cada head herdam a mistura. E os índices de posição são um contrato: padding à esquerda, documentos empacotados e reinícios de fronteira mudam qual inteiro cada token recebe, então um descasamento entre a numeração de treino e a de inferência degrada a saída mesmo quando todos os shapes são válidos.

Uma forma útil de comparar esquemas é perguntar onde a posição entra. Esquemas absolutos — os dois sabores desta lição — a carimbam na entrada, atrelando a informação a um índice (“este é o token 37”) em vez de a uma distância (“este token está três atrás”), e deixando a rede inferir os deslocamentos a partir de dois carimbos absolutos. Esquemas relativos movem a posição para dentro do próprio cálculo de attention, onde deslocamentos vivem naturalmente.

Foi exatamente esse o caminho que a área tomou, e o modelo deste curso é a evidência: o Qwen3.8-27B não usa nenhum dos esquemas desta lição. Nenhum carimbo senoidal é somado aos seus embeddings e nenhuma tabela de posição absoluta aprendida existe nos seus pesos; a posição entra por rotações aplicadas a queries e keys dentro das suas camadas de attention — RoPE, com o toque extra de aplicação parcial e seções multimodais. Esse mecanismo é a próxima lição. Trate as tabelas senoidais e aprendidas como a baseline histórica que definiu o problema — quebrar a simetria de permutação com um sinal limitado e multiescala — cuja solução mais conhecida hoje mora em outro ponto do bloco.

02 · Analogia

Analogia

Imagine cartões soltos com as falas de uma peça. As palavras identificam o que cada ator diz, mas embaralhar os cartões muda a história. O encoding senoidal carimba em cada cartão vários ponteiros de relógio girando em velocidades diferentes; cartões próximos têm carimbos parecidos, e os ciclos longos distinguem regiões mais amplas. Embeddings aprendidos, em vez disso, dão a cada assento do roteiro seu próprio rótulo editável. Nos dois casos, conteúdo mais marca de posição restaura a ordem.

03 · Explique de volta

Explique de volta

Explique por que self-attention precisa de informação de posição e compare embeddings de posição absoluta senoidais e aprendidos.

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

Aguardando sua explicação.

Comparar com uma resposta-modelo

Sem informação de posição, permutar os vetores de token permuta as saídas de attention da mesma maneira, então a camada não consegue distinguir sequências que contêm os mesmos tokens em ordens diferentes. Encodings senoidais atribuem deterministicamente várias frequências de seno e cosseno a cada posição e podem ser calculados além das posições treinadas, embora a extrapolação não tenha comportamento garantido. Embeddings absolutos aprendidos otimizam um vetor por posição suportada, mas exigem uma tabela de tamanho fixo e não oferecem regra embutida fora dela. Ambos somam um vetor de posição ao embedding do token; modelos modernos como o Qwen3.8-27B não usam nenhum dos dois, codificando posição dentro da attention com rotações.

04 · Teste seu entendimento

Teste seu entendimento

01Que propriedade de ordem falta à self-attention baseada só em conteúdo?
Resposta e explicação

Ela não distingue permutações sem um sinal posicional — Attention aplicada a um conjunto não ordenado de vetores de token é equivariante a permutações; a informação de posição quebra essa simetria.

02Se vetores de posição são somados aos embeddings, quais tensores de attention acabam carregando informação de posição (lição 4.5)?
Resposta e explicação

Queries, keys e values, já que todas as projeções de head leem o mesmo residual stream — As projeções de Q, K e V de cada head leem o residual stream onde o vetor de posição foi somado, então a posição vaza para os três — uma das razões pelas quais esquemas posteriores optaram por rotacionar apenas queries e keys.

03Qual é uma diferença estrutural entre encodings absolutos senoidais e aprendidos?
Resposta e explicação

Valores senoidais seguem uma fórmula fixa; valores aprendidos vêm de uma tabela treinada — O esquema senoidal não tem parâmetros de tabela de posição, enquanto embeddings absolutos aprendidos otimizam um vetor para cada posição indexada.

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

◎ · Marcador de evidência

Fontes

  1. Ashish Vaswani et al. (2017). Attention Is All You Need.
  2. Jacob Devlin, Ming-Wei Chang, Kenton Lee e Kristina Toutanova (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.
  3. Qwen Team (2026). Qwen3.8-27B Model Card.