Inicio · Parte 16 — Matemática de Transformers, modelos generativos, grafos y RL
PE(pos, 2i) = sin(pos / 10000^{2i/d})
PE(pos, 2i+1) = cos(pos / 10000^{2i/d})
sin parámetros aprendidos
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.
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.
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
dimensioncodificacionesnormasproducto_pos0_pos1producto_pos0_pos5la_similitud_decae_con_la_distanciaparametros_aprendidosextrapola_a_secuencias_mas_largasalternativas{
"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
}
Todos los Transformers, modelos de visión con parches, modelos de audio y cualquier arquitectura con atención sobre secuencias.
Esta parte es la traducción matemática directa de los papers que definen el estado del arte actual.
10.48550/arxiv.1706.03762 verificado en DataCite (2026-08-19).10.48550/arxiv.2104.09864 verificado en DataCite (2026-08-19).