Inteligência artificial, sem ruído.
Modelos e LLMs5 min

Por que transformers precisam de codificação posicional para séries temporais

Guia visual sobre como a self-attention perde a noção de ordem e como a codificação posicional devolve a estrutura temporal aos transformers.

Por que transformers precisam de codificação posicional para séries temporais

O problema: atenção que enxerga tudo, mas não sabe a ordem

Modelos de fundação para séries temporais — como previsão de demanda, temperatura ou consumo de energia — herdaram a arquitetura dos transformers, que nasceram para processar linguagem. A ponte entre os dois mundos é mais natural do que parece: ambos lidam com sequências, e em sequências a ordem muda o significado.

Em linguagem, “o cachorro morde o homem” é muito diferente de “o homem morde o cachorro”. Em séries temporais, registrar 30 °C ontem e 20 °C hoje conta uma história oposta à de 20 °C ontem e 30 °C hoje. Os valores são os mesmos; a ordem é que carrega o sentido.

O detalhe incômodo é que a self-attention — o coração do transformer — compara todas as observações de uma vez, sem nenhuma noção embutida de quem veio antes ou depois. É exatamente essa lacuna que a codificação posicional preenche. Este guia reconstrói a intuição do zero.

De observação escalar a vetor

Imagine a temperatura registrada em cinco dias úteis. Cada observação é apenas um número (um escalar). Um transformer, porém, trabalha com vetores de dimensão fixa. A primeira etapa é mapear cada valor para esse espaço por meio de uma projeção linear aprendida — o embedding:

e_t = W_e · x_t + b_e

Os parâmetros W_e e b_e não são definidos à mão: eles são aprendidos durante o treino para que as representações resultantes sejam úteis à tarefa. O ponto crucial é que, neste estágio, e_t descreve apenas o que foi observado — não onde, na sequência, aquilo ocorreu.

Como a self-attention monta o contexto

Para atualizar a representação de um dia (digamos, sexta-feira), o modelo cria três projeções aprendidas a partir de cada embedding: query (q), key (k) e value (v). A query de sexta-feira é comparada com as keys de todos os outros dias, gerando um score de atenção:

s = (q · k) / √d_k

O fator √d_k impede que os produtos escalares cresçam demais conforme a dimensão aumenta. Os scores passam por um softmax, virando pesos de atenção, que por sua vez combinam os valores v numa representação nova, consciente do contexto. Em resumo: queries e keys aprendem quais observações se relacionam; os values carregam a informação que é combinada.

O que acontece se embaralharmos a sequência?

Agora a pergunta decisiva. Reorganize as mesmas cinco temperaturas. Os valores não mudaram — só a ordem. Após a projeção, os embeddings continuam os mesmos, apenas rearranjados. A self-attention consegue comparar tudo com tudo, mas nada dentro do embedding diz que 27 °C veio de quinta-feira. Pior: se quarta e sexta tiverem a mesma temperatura, o modelo gera embeddings idênticos para as duas — e fica incapaz de distingui-las.

Essa é a limitação central: a atenção aprende quais observações estão relacionadas, mas não onde elas estão na sequência.

O que a informação posicional precisa dizer ao modelo

No mínimo, o modelo precisa saber:

  • Qual posição uma observação ocupa (posição 2 ≠ posição 20);
  • Quem veio antes ou depois (distinguir t−1 de t+1);
  • A distância entre observações (a diferença entre t−1, t−7 e t−30 importa — dependência de curto prazo versus padrão semanal);
  • Que posições próximas sejam representadas de forma relacionada;
  • Que o esquema continue útil em sequências longas.

Ou seja: posição não pode ser só um rótulo único por timestep — precisa ser uma representação estruturada de ordem e distância relativa.

A solução sinusoidal: relógios em velocidades diferentes

Atribuir um número cru (1, 2, 3…) não funciona bem: os valores crescem sem limite e um único número não dá riqueza representacional. A saída clássica do transformer original é a codificação posicional sinusoidal, que usa seno e cosseno em frequências distintas:

PE(t, 2i) = sin(t / 10000^(2i/d))
PE(t, 2i+1) = cos(t / 10000^(2i/d))

Uma intuição útil é imaginar vários relógios correndo em velocidades diferentes: algumas dimensões mudam rápido entre posições vizinhas, outras mudam devagar. Juntas, as leituras dão a cada posição uma assinatura estruturada. A propriedade mais valiosa é que avançar um número fixo de passos produz o mesmo tipo de mudança — um deslocamento de 7 posições tem a mesma relação matemática tanto da posição 3 para a 10 quanto da 20 para a 27. Isso é ouro para séries temporais, onde a distância relativa (t−1, t−7, t−30) costuma importar mais que a posição absoluta.

Juntando valor e posição

Com a informação posicional, cada timestep vira a soma do embedding de valor com o vetor de posição:

h_t = e_t + p_t

A self-attention passa a construir queries e keys a partir de h_t, e não mais do valor isolado. O score de atenção passa a depender de o que foi observado e de onde. Assim, o modelo pode aprender que uma observação de um passo atrás merece tratamento diferente de uma de sete passos atrás, mesmo com valores parecidos.

Onde a codificação posicional fica aquém

É importante notar o limite: a codificação representa posição na sequência, não o tempo real. Se as observações forem irregularmente espaçadas, estar “uma posição à frente” não significa “uma hora à frente”. Para esses casos, entram em cena codificações temporais mais ricas — timestamps, efeitos de calendário, periodicidade e gaps irregulares. E a sinusoidal é só o começo: existem ainda embeddings posicionais aprendidos (os vetores de posição são treinados junto) e codificações relativas (focadas na distância entre duas observações, não na posição absoluta). Arquiteturas modernas de séries temporais frequentemente usam variações como representações rotativas (RoPE) ou posições aprendidas.

Entender a construção sinusoidal simples é a fundação para compreender por que esses métodos mais sofisticados existem — e por que a pergunta de verdade não é “como digo ao modelo que isto é a posição 7?”, mas “que noção de tempo o modelo realmente precisa para a tarefa?”.



Descubra mais sobre noticiAI

Assine para receber nossas notícias mais recentes por e-mail.

R
Sobre o autorRedação Noticiai

Equipe editorial dedicada a explicar inteligência artificial com clareza, independência e contexto.