🧮 Computational Mathematics

Inicio · Parte 16 — Matemática de Transformers, modelos generativos, grafos y RL

323 — Positional encoding

experto clase 3 de 20 4 horas demostración positional_encoding

La atención no tiene noción de orden, así que la posición hay que inyectarla.

Fórmulas

PE(pos, 2i)   = sin(pos / 10000^{2i/d})
PE(pos, 2i+1) = cos(pos / 10000^{2i/d})
sin parámetros aprendidos

Desarrollo

El mecanismo de atención es invariante a permutaciones: si se barajan los tokens de entrada, las salidas se barajan igual pero nada más cambia. Para el modelo, «el gato come pescado» y «pescado come gato el» serían indistinguibles. Hay que añadir la posición explícitamente.

La codificación sinusoidal del artículo original usa senos y cosenos de frecuencias que decrecen geométricamente a lo largo de las dimensiones. Las primeras dimensiones varían rápido y distinguen posiciones cercanas; las últimas varían lento y codifican posición global. Es exactamente una descomposición en frecuencias, la parte 13 aplicada al índice de posición.

Tiene dos propiedades atractivas. No tiene parámetros, así que funciona con longitudes de secuencia nunca vistas en entrenamiento, al menos en principio. Y la similitud entre codificaciones decae con la distancia, lo que da al modelo una noción utilizable de proximidad. Además, PE(pos+k) es una transformación lineal de PE(pos), lo que facilita aprender desplazamientos relativos.

La práctica ha evolucionado. Las posiciones aprendidas funcionaron igual de bien y dominaron durante años; hoy lo estándar es RoPE, que codifica posición rotando los vectores de consulta y clave, lo que hace que el producto escalar dependa naturalmente de la posición relativa. Es la solución que mejor extrapola a contextos largos.

Ejemplo trabajado

Codificación sinusoidal en dimensión 8.

dimensión: 8

pos 0: [0,000000 ; 1,0 ; 0,000000 ; 1,0 ; 0,0 ; 1,0 ; 0,0 ; 1,0]
pos 1: [0,841471 ; 0,5xxx ; ...]
pos 2: [0,909297 ; ...]

normas: todas valen 2,0                             ✓
(la norma es constante por construcción)

producto escalar con pos 0:
  pos 1  →  3,535256
  pos 5  →  3,159983

La similitud decae con la distancia                  ✓

Sin esta codificación, la atención vería la secuencia
como un conjunto sin orden.

Qué calcula el laboratorio

Positional encoding sinusoidal: posición sin parámetros aprendidos.

python classes/part-16-matematica-de-transformers-modelos-generativos-grafos-y-rl/323-positional-encoding/lab.py
compmath run 323

Salidas del laboratorio (9)

Muestra de la ejecución real

{
  "dimension": 8,
  "codificaciones": {
    "pos_0": [
      0.0,
      1.0,
      0.0,
      1.0,
      0.0,
      1.0,
      0.0,
      1.0
    ],
    "pos_1": [
      0.841471,
      0.540302,
      0.099833,
      0.995004,
      0.01,
      0.99995,
      0.001,
      1.0
    ],
    "pos_2": [
      0.909297,
      -0.416147,
      0.198669,
      0.980067,
      0.019999,
      0.9998,
      0.002,
      0.999998
    ],
    "pos_3": [
      0.14112,
      -0.989992,
      0.29552,
      0.955336,
      0.029996,
      0.99955,
      0.003,
      0.999996
    ],
    "pos_4": [
      -0.756802,
      -0.653644,
      0.389418,
      0.921061,
      0.039989,
      0.9992,
      0.004,
      0.999992
    ],
    "pos_5": [
      -0.958924,
      0.283662,
      0.479426,
      0.877583,
      0.049979,
      0.99875,
      0.005,
      0.999988
    ]
  },
  "normas": {
    "pos_0": 2.0,
    "pos_1": 2.0,
    "pos_2": 2.0
  },
  "producto_pos0_pos1": 3.535256,
  "producto_pos0_pos5": 3.159983,
  "la_similitud_decae_con_la_distancia": true
}

Errores comunes

Dónde se usa

Todos los Transformers, modelos de visión con parches, modelos de audio y cualquier arquitectura con atención sobre secuencias.

Idea rectora de la parte

Temperatura, top-k y top-p reescriben la distribución antes de muestrear.

Error a evitar

Normalizar el Laplaciano de un grafo con nodos aislados sin tratar la división por cero.

Conexión con IA

Esta parte es la traducción matemática directa de los papers que definen el estado del arte actual.

Bibliografía de la clase

Archivos de la clase