ARQUITECTURA

Attention

Mecanismo central de los transformers que permite a cada token de una secuencia ponderar la relevancia de todos los demás tokens al construir su nueva representación.

Nivel · avanzado6 min de lecturaActualizado 23 may 2026
También conocido como: Mecanismo de atención, Self-attention, Scaled dot-product attention

Definición

La attention o self-attention es el mecanismo central de la arquitectura transformer. Permite que cada token de una secuencia "atienda" (consulte y pondere) a todos los demás tokens al construir su nueva representación. Es lo que permite a un modelo conectar palabras distantes, resolver correferencias, captar contexto largo y modelar relaciones complejas.

El nombre del paper que la popularizó (Attention Is All You Need, 2017) sintetiza la tesis: con solo atención y capas feed-forward —sin convolución ni recurrencia— se pueden construir modelos del lenguaje que superan todo lo anterior. Esa idea desató la era moderna de los LLMs.

Intuición rápida: cuando lees "Antonio dijo que él vendría", tu cerebro automáticamente conecta "él" con "Antonio". El mecanismo de atención hace exactamente eso, pero matemáticamente y en paralelo para todos los tokens a la vez.

Cómo funciona: Q, K, V

La atención se basa en tres proyecciones por token, calculadas multiplicando el embedding del token por tres matrices entrenables (W_Q, W_K, W_V):

  • Query (Q) — "qué busco". El token pregunta qué información necesita.
  • Key (K) — "qué ofrezco". Cada token expone sus características.
  • Value (V) — "qué transmito". El contenido real que el token aporta.

El cálculo, llamado scaled dot-product attention, se hace así:

Attention(Q, K, V) = softmax(Q · Kᵀ / √d_k) · V

Paso a paso:

  1. Q · Kᵀ: cada query se compara con todas las keys → matriz de "scores" de cuánto le interesa a cada token cada otro token.
  2. /√d_k: se escala dividiendo por la raíz de la dimensión de la key, para que los softmax no saturen.
  3. softmax: se normaliza fila a fila → cada token tiene una distribución de probabilidad sobre todos los demás (cuánto les "atiende").
  4. · V: se ponderan los values con esa distribución → cada token recibe una nueva representación que es promedio ponderado de los values de todos.

Resultado: cada token "absorbe" información de los demás según su relevancia.

Multi-head attention

En lugar de hacer una sola operación de atención, los transformers hacen varias en paralelo (típicamente 16-128 "cabezas"). Cada cabeza tiene proyecciones Q, K, V distintas y aprende a atender a aspectos diferentes:

  • Una cabeza puede aprender a conectar pronombre con antecedente.
  • Otra puede capturar relación sujeto-verbo.
  • Otra puede atender a palabras semánticamente similares.
  • Otra puede captar estructura sintáctica.

Las salidas se concatenan y se proyectan de nuevo. El modelo elige durante el entrenamiento qué cabezas son útiles para qué. Esto es la "multi-head attention" y es lo que da al transformer flexibilidad para modelar tantos tipos de relaciones a la vez.

Tipos de atención

  • Self-attention (la más común): la secuencia se atiende a sí misma. Cada token usa Q de sí mismo y K/V de todos los tokens del input.
  • Cross-attention: en encoder-decoder (T5, modelos de traducción). El decoder genera Q, el encoder provee K y V. Permite al decoder atender a la entrada.
  • Causal / masked attention: en LLMs decoder-only (GPT, Claude). Se aplica una máscara que impide que un token atienda a tokens futuros. Esto garantiza la propiedad autoregresiva: cada token solo depende de los anteriores.
  • Sliding window attention: el token solo atiende a una ventana local. Reduce coste y permite contextos largos eficientes (Mistral, Longformer).
  • Sparse attention: cada token atiende solo a un subconjunto fijo o aprendido. Reduce complejidad.

Ejemplo práctico

Imaginemos el modelo procesando "El gato negro saltó":

Tokens: [El, gato, negro, saltó].

En una cabeza de atención que aprendió relaciones sujeto-verbo:

  • El query de "saltó" busca su sujeto.
  • Las keys de "gato" y "negro" puntúan alto contra ese query.
  • Tras softmax, la distribución podría ser: El=0.05, gato=0.55, negro=0.30, saltó=0.10.
  • La nueva representación de "saltó" es 0.05·V(El) + 0.55·V(gato) + 0.30·V(negro) + 0.10·V(saltó).

Resultado: "saltó" ahora "sabe" que el sujeto es "gato" (modificado por "negro") sin que esto se haya programado explícitamente. El modelo lo aprendió durante pretraining.

En modelos reales, esta operación se hace simultáneamente para miles de tokens, con 64-128 cabezas en paralelo, en 64-128 capas, sobre vectores de 4096+ dimensiones. La cantidad de "miradas" que un modelo grande lanza por cada paso es enorme.

El problema de la complejidad cuadrática

La atención estándar tiene complejidad O(n²) donde n es la longitud de la secuencia. Si duplicas el contexto, el cómputo se cuadruplica. Por eso:

  • Procesar 1.000 tokens es trivial.
  • Procesar 100.000 tokens es costoso.
  • Procesar 1.000.000 tokens sería brutal sin optimizaciones.

Variantes para mitigarlo:

  • Flash Attention: misma operación matemáticamente, pero implementada para minimizar lecturas/escrituras a memoria HBM de la GPU. Acelera significativamente sin perder calidad.
  • Sliding window: limitar el radio de atención a una ventana local fija.
  • Linear attention (Performer, Linformer): aproximaciones que escalan linealmente.
  • Mamba / State Space Models: arquitecturas alternativas sin atención cuadrática.

Gracias a estas técnicas, modelos modernos manejan ventanas de 200k-1M tokens en producción.

Errores comunes al pensar en attention

  • Confundirla con "memoria": la atención no es memoria persistente, es ponderación en tiempo de inferencia sobre el contexto actual.
  • Pensar que es "consciente": el modelo no decide racionalmente a qué atender; las matrices Q/K/V aprenden patrones estadísticos durante pretraining.
  • Subestimar el coste: ventana de contexto larga + muchos usuarios = factura grande.
  • Asumir atención full por defecto en LLMs: GPT, Claude y compañía usan atención causal, no bidireccional.
  • No considerar la posición: la atención por sí sola es permutation-invariant. Necesita position encoding (RoPE moderno) para saber el orden.

Por qué fue revolucionaria

Antes del transformer, las RNN procesaban secuencias paso a paso y perdían información temprana en secuencias largas. La atención permitió:

  • Procesamiento paralelo: todas las posiciones a la vez → entrenamiento mucho más rápido.
  • Conexión directa entre cualquier par de tokens: sin importar la distancia.
  • Escalabilidad lineal con cómputo: más GPUs = más paralelización efectiva.
  • Generalización masiva: misma arquitectura sirve para texto, imagen, audio, código, multimodal.

Es por eso que toda la frontera moderna de la IA (LLMs, ViTs en visión, Whisper en audio, AlphaFold en biología) usa transformers basados en attention.

Cuándo conviene entenderla

Sí, entiende attention si:

  • Trabajas con LLMs y debates de arquitectura te afectan.
  • Optimizas inferencia y necesitas saber dónde se va el cómputo.
  • Investigas o entrenas modelos propios.
  • Quieres entender por qué un modelo falla en ciertas tareas (limitaciones de atención causal, ventanas, etc.).

Es menos crítico si:

  • Solo consumes APIs de LLMs y no decides arquitectura.
  • Tu trabajo es producto/UX donde basta saber qué hace el modelo.

Referencias

Tagsiaarquitecturadeep-learningtransformers