La autoatención compara todos los tokens con todos, pero no sabe en qué orden vinieron: sin información extra, trata la entrada como un conjunto. «El perro mordió al hombre» y «El hombre mordió al perro» tienen exactamente los mismos tokens. Como el Transformer no tiene recurrencia ni convolución, sus autores tuvieron que «inyectar» la posición en cada vector (Vaswani et al., 2017, sec. 3.5).
La solución original fue sumar a cada embedding un vector de senos y cosenos de frecuencias distintas:
PE(pos, 2i) = sin(pos / 10000^(2i/d)), PE(pos, 2i+1) = cos(pos / 10000^(2i/d))
Cada dimensión es una onda; juntas funcionan como un odómetro de muchas ruedas. Los autores eligieron esta forma porque el desplazamiento en k posiciones es una función lineal, lo que debería facilitar atender a posiciones relativas. Probaron también posiciones aprendidas y los resultados fueron casi idénticos (Vaswani et al., 2017, secs. 3.5 y 6.2).
Posiciones aprendidas. GPT-1 y BERT suman a cada token un vector aprendido por posición, lo que fija un largo máximo: 512 tokens en ambos casos (Radford et al., 2018, sec. 4.1; Devlin et al., 2019, pp. 4174, 4183). Vision Transformer (ViT) hace lo mismo con los parches de imagen.
RoPE. Hoy predominan las rotary position embeddings: en lugar de sumarse a la entrada, rotan los vectores de consulta y clave en un ángulo proporcional a la posición, justo antes de compararlos, de modo que el puntaje depende de la distancia entre tokens (Alammar y Grootendorst, 2024, pp. 102–104). Las usan LLaMA y sus sucesores (Touvron, Lavril et al., 2023, sec. 2.2). Esto importa, además, porque en el entrenamiento se empaquetan varios documentos en una misma ventana y no conviene decirle al modelo que el primer token de un documento es el número 50 (Alammar y Grootendorst, 2024, p. 103).
Un ángulo lingüístico. Aquí el orden de palabras no es parte de la estructura del cómputo, como en una gramática o en una red recurrente: es un rasgo más, sumado al vector de cada palabra, que el modelo debe aprender a usar. Buckner (2024) señala que dividir cada vector en consulta, clave y valor y agregar codificación posicional fueron las dos innovaciones que permitieron abandonar la recurrencia (2024, p. 272). Que la composicionalidad sintáctica pueda reconstruirse a partir de eso es una pregunta empírica abierta.