Codificación posicional

Definición breve

La codificación posicional es un mecanismo que permite a los modelos de tipo transformer incorporar información sobre el orden de los elementos en una secuencia.

Explicación del concepto

A diferencia de modelos como las redes neuronales recurrentes, los transformers procesan todos los elementos de una secuencia en paralelo.

Esto implica que, por sí solos, no tienen información sobre el orden de las palabras o tokens.

La codificación posicional resuelve este problema al añadir información sobre la posición de cada elemento, permitiendo al modelo:

  • entender el orden de las palabras
  • capturar relaciones secuenciales
  • interpretar el contexto correctamente

Cómo funciona

La codificación posicional añade vectores a las representaciones de entrada.

El proceso incluye:

  1. Cada posición en la secuencia recibe un vector único.
  2. Este vector se combina con el embedding del token.
  3. El modelo utiliza esta información para inferir relaciones posicionales.

Una forma común de codificación utiliza funciones seno y coseno.

Fórmula clave

PE(pos,2i)=sin(pos100002i/d),PE(pos,2i+1)=cos(pos100002i/d)PE_{(pos,2i)}=\sin\left(\frac{pos}{10000^{2i/d}}\right),\quad PE_{(pos,2i+1)}=\cos\left(\frac{pos}{10000^{2i/d}}\right)PE(pos,2i)​

Tipos de codificación posicional

1. Codificación fija

Basada en funciones matemáticas (seno y coseno).

2. Codificación aprendida

El modelo aprende las posiciones durante el entrenamiento.

Por qué es importante

La codificación posicional es esencial para el funcionamiento de los transformers.

Beneficios:

  • permite modelar secuencias sin recurrencia
  • mejora la comprensión del orden
  • facilita el aprendizaje de dependencias a largo plazo
  • es clave en modelos como GPT y BERT

Ejemplo conceptual

En la frase:

“El perro muerde al hombre” vs “El hombre muerde al perro”

Las palabras son las mismas, pero el orden cambia completamente el significado.
La codificación posicional permite al modelo distinguir estas diferencias.

Ejemplo en PyTorch

Un ejemplo simplificado de codificación posicional:

import torch
position = torch.arange(0, 100).unsqueeze(1)

Estos valores se combinan con embeddings para representar posiciones.

Conceptos relacionados

Resumen

La codificación posicional permite a los modelos transformer incorporar información sobre el orden de los elementos en una secuencia. Es un componente esencial que hace posible el procesamiento paralelo de datos secuenciales sin perder el contexto posicional.