Atención: cómo decide un Transformer qué mirar
El mecanismo de atención compara cada token con todos los demás y reparte un presupuesto de 100 %. Aquí no lo lees: lo mueves.
- #transformers
- #atencion
- #fundamentos
El problema que resuelve
Una frase no se entiende palabra a palabra. En "el gato duerme porque el gato está
cansado", el segundo gato es el mismo que el primero, y cansado habla de él, no de
duerme. Un modelo necesita una forma de conectar tokens distantes sin recorrer la
frase en orden.
La atención hace exactamente eso: para cada token, calcula cuánto debería "mirar" a cada uno de los otros, y con esas proporciones mezcla su información.
Mueve las variables
Antes de la teoría, tócalo. Elige un token, cambia la frase, arrastra los deslizadores.
Token que consulta (fila del mapa)
| Consulta | El | gato | duerme | porque | el | gato | está | cansado |
|---|---|---|---|---|---|---|---|---|
| El | ||||||||
| gato | ||||||||
| duerme | ||||||||
| porque | ||||||||
| el | ||||||||
| gato | 0% | 39% | 3% | 0% | 0% | 44% | 2% | 11% |
| está | ||||||||
| cansado |
Adónde mira gato
- El0%
- gato39%
- duerme3%
- porque0%
- el0%
- gato44%
- está2%
- cansado11%
Modelo de juguete, sin red: una sola cabeza, sin proyecciones aprendidas, y la similitud entre tokens es ortográfica (trigramas de letras), no semántica. La mecánica del softmax, la temperatura, la posición y la máscara causal es exactamente la de un Transformer real.
Fíjate en tres cosas:
- Con la frase por defecto y el segundo
gatoenfocado, la atención se va al primergato. Se parecen, así que se atienden. - Baja la temperatura hacia 0,1: casi todo el 100 % cae en un solo token. Súbela a 3: se reparte casi uniforme.
- Activa la máscara causal: las celdas a la derecha de la diagonal se apagan. Cada token solo puede mirar hacia atrás.
Qué está pasando dentro
Cada token empieza como un vector (su embedding) al que se le suma información de posición, porque sin ella el modelo no distinguiría "perro muerde hombre" de "hombre muerde perro".
Después, para cada par de tokens (i, j) se calcula un puntaje con el producto escalar de sus vectores. Ese puntaje se escala y pasa por un softmax fila a fila:
atencion(i, j) = exp(s_ij / T) / SUM_k exp(s_ik / T)
El softmax convierte puntajes arbitrarios en proporciones que suman 1. La temperatura T controla la nitidez: dividir por un número pequeño exagera las diferencias; por uno grande, las aplana. Es la misma temperatura que verás en el muestreo de texto.
Por último, la salida de cada token es la media ponderada de los vectores de todos los tokens usando esas proporciones. Un token que atiende 80 % a otro sale pareciéndose un 80 % a él.
Queries, keys y values
En un Transformer real, el mismo vector se proyecta con tres matrices aprendidas:
| Nombre | Pregunta que responde |
|---|---|
| Query (Q) | ¿Qué estoy buscando? |
| Key (K) | ¿Qué ofrezco para que me encuentren? |
| Value (V) | ¿Qué información aporto si me eligen? |
El puntaje es Q·K, y la mezcla final se hace sobre V. Separar los tres permite que un token busque una cosa y ofrezca otra. Y hay varias cabezas en paralelo, cada una con sus propias matrices, para capturar relaciones distintas a la vez (sintaxis en una, correferencia en otra).
Qué tiene de juguete el visualizador
Para que puedas predecir el resultado y comprobarlo, el explorador simplifica dos cosas:
- La similitud es ortográfica. Dos tokens se parecen si comparten trigramas de
letras (
gato~gatos). Un modelo real aprende similitud semántica:gato~felino. - No hay proyecciones ni cabezas. Q = K = V = el propio vector. Una cabeza.
Todo lo demás (softmax, temperatura, posición, máscara causal) es literalmente lo que hace un Transformer. Si te queda claro aquí, te queda claro allí.
Para llevarte
La atención es un presupuesto de 100 % que cada token reparte entre los demás, calculado comparando vectores. La temperatura decide si ese reparto es tacaño o generoso. La máscara causal decide si puede mirar al futuro. Todo lo demás son detalles de ingeniería sobre esa idea.