“Una sala de reuniones donde cada palabra decide a qué otras palabras prestar oído.”
El problema que resuelve la atención
Toma la frase: «El trofeo no cabía en la maleta marrón porque era demasiado grande.» ¿A qué se refiere «era»? Obviamente al trofeo. Ahora dale la vuelta: «…porque era demasiado pequeña.» Ahora «era» se refiere a la maleta. Para resolver el sujeto, tienes que mirar el resto de la frase y decidir qué importa.
Las arquitecturas anteriores (RNN, LSTM) procesaban el texto de izquierda a derecha, una palabra cada vez, con la esperanza de que el contexto relevante sobreviviera en un estado oculto para cuando llegara el pronombre. Eran lentas, difíciles de entrenar y a menudo olvidaban. El transformer (2017) dijo: olvídate del izquierda a derecha. Deja que cada palabra mire a todas las demás, *al mismo tiempo*, y decida qué ponderar. Eso es la atención.
La autoatención, conceptualmente
Cada token desempeña tres papeles encarnados por tres vectores derivados de su embedding: una query («¿qué busco?»), una key («¿con qué encajo?»), y un value («¿qué aporto si me encuentran?»).
Para un token dado, compara su query con la key de cada otro token (un producto escalar da una puntuación de similitud). Aplica softmax a esas puntuaciones para obtener una distribución de probabilidad sobre todos los tokens. Ahora suma el value de cada token, ponderado por su puntuación. El resultado es una nueva representación de este token, mezclada a partir de las partes de la frase que ha juzgado relevantes.
Haz esto para cada token en paralelo. Toda la capa es una gigantesca multiplicación de matrices. Toda la capa se ejecuta en una GPU en milisegundos incluso para miles de tokens.
Cabezas múltiples, conversaciones múltiples
Una capa de atención aprende una sola «forma de mirar». Pero una frase tiene muchas estructuras simultáneas (sintáctica, semántica, correferencia, sentimiento). Por eso los transformers ejecutan la atención en paralelo varias veces por capa (las «cabezas»), cada una con sus propias proyecciones Q/K/V aprendidas. Una cabeza podría rastrear «¿cuál es el sujeto de este verbo?» Otra podría rastrear «¿a qué se refiere este pronombre?» Otra podría rastrear «¿es esto una pregunta?»
La mayoría de los transformers de producción tienen entre 16 y 128 cabezas de atención por capa, y entre 30 y 120 capas apiladas unas sobre otras. La cantidad total de «miradas alrededor» que hace el modelo para un solo token es asombrosa.
El bloque transformer completo
Un transformer es una pila de bloques idénticos. Cada bloque hace dos cosas:
- Capa de autoatención: cada token presta atención a todos los demás tokens y actualiza su representación.
- Capa feed-forward: la representación de cada token pasa por una pequeña red neuronal privada (la misma red para cada token, aplicada de forma independiente). Aquí reside la mayor parte del «conocimiento» bruto del modelo, en términos de parámetros.
Ambas capas tienen conexiones residuales (la entrada se vuelve a sumar a la salida) y un paso de normalización. La conexión residual es lo que permite apilar más de 100 capas sin que la señal se degrade. Sin ella, los transformers profundos no se entrenan.
# one transformer block, conceptually
def block(x):
x = x + multi_head_attention(layer_norm(x))
x = x + feed_forward(layer_norm(x))
return x
¿De dónde sale la posición?
La atención en sí es invariante a las permutaciones; no sabe qué palabra vino primero. A las frases claramente sí les importa el orden («el perro muerde al hombre» frente a «el hombre muerde al perro»). Por eso los transformers añaden una codificación posicional al embedding de cada token en la entrada. O bien un patrón sinusoidal fijo (artículo original de 2017) o, más recientemente, embeddings posicionales rotatorios aprendidos (RoPE). El modelo aprende a usar esa señal para codificar el orden.
El enmascaramiento causal: convertirlo en un modelo de lenguaje
Un modelo de lenguaje predice el siguiente token a partir de los tokens previos. Así que al calcular la atención para el token *t*, no se le puede permitir ver los tokens *t+1, t+2…*, ya que sería hacer trampa. El arreglo es una máscara causal: poner a cero las puntuaciones de atención de cada token hacia todos los tokens futuros. El modelo queda obligado a predecir solo a partir del pasado.
Esta es la diferencia entre los modelos de la familia GPT (causales, solo decodificador) y los de la familia BERT (bidireccionales, solo codificador, sin máscara). GPT genera texto; BERT entiende texto. La mayoría de los LLM modernos son solo decodificador porque generar resulta subsumir al entender.
Por qué escala tan bien
Que cada token preste atención a cada token es O(n²) según la longitud de la secuencia. Para n=4000 tokens son 16 millones de productos escalares por cabeza por capa. Mucho, pero trivialmente paralelizable en una GPU. El patrón de cálculo del transformer (multiplicaciones de matrices masivas) es exactamente para lo que están construidos los aceleradores modernos. Por eso digiere bien el cómputo y por eso las leyes de escalado siguen cumpliéndose.
El coste cuadrático es también la razón de que las ventanas de contexto sean difíciles de agrandar. La mayor parte del esfuerzo de ingeniería detrás de los modelos de «contexto de 1 M de tokens» se dedica a aproximaciones ingeniosas: atención dispersa, ventanas deslizantes, caché KV, variantes de atención lineal.
Una línea por cada uno
- La autoatención permite a cada token decidir qué otros tokens le importan, en paralelo, todo a la vez.
- La atención multicabeza ejecuta muchas «formas de mirar» en paralelo; las capas feed-forward almacenan la mayor parte del conocimiento bruto.
- Las conexiones residuales y la normalización de capa son lo que hace entrenables a los transformers de más de 100 capas.
- La posición se inyecta por separado porque la atención por sí sola no tiene noción de orden; la caché KV es lo que abarata la generación.
Adónde ir ahora