1. Introducción
En 2017, el paper “Attention Is All You Need” de Vaswani et al. introdujo el Transformer, una arquitectura que reemplazó las redes recurrentes con un mecanismo aparentemente simple: cada token en una secuencia puede “mirar” directamente a todos los demás tokens y decidir cuánta atención prestarle a cada uno.
Este mecanismo — el self-attention — es la piedra angular de GPT, BERT, y prácticamente todos los modelos de lenguaje modernos. Su poder radica en que captura dependencias de largo alcance sin las limitaciones secuenciales de las RNNs.
Esta simulación descompone el self-attention en 7 pasos visuales, desde los embeddings de entrada hasta la salida ponderada, mostrando exactamente cómo cada token decide a quién atender.
2. Conceptos Fundamentales
2.1 De secuencias a matrices
Cada token (palabra) se representa como un vector de embedding x_i \in \mathbb{R}^{d}. Para una secuencia de n tokens, apilamos los vectores en una matriz:
X = [x_1, x_2, \ldots, x_n]^T \in \mathbb{R}^{n \times d}
2.2 Las tres proyecciones: Q, K, V
El self-attention proyecta cada embedding en tres espacios diferentes mediante matrices de pesos aprendidas:
Query (pregunta) — lo que el token busca:
Q = X W_Q, \quad W_Q \in \mathbb{R}^{d \times d_k}
Key (clave) — lo que el token ofrece como identificador:
K = X W_K, \quad W_K \in \mathbb{R}^{d \times d_k}
Value (valor) — la información que el token aporta:
V = X W_V, \quad W_V \in \mathbb{R}^{d \times d_v}
2.3 La intuición
Piensa en una biblioteca: el Query es tu pregunta, los Keys son las etiquetas de los libros, y los Values son los contenidos. Buscas los libros cuyas etiquetas más coincidan con tu pregunta, y lees proporcionalmente más de esos libros.
2.4 La fórmula completa
\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right) V
3. La Interfaz
3.1 Canvas principal
El canvas muestra los 7 pasos del self-attention de forma secuencial:
- Input Embeddings — vectores de entrada como barras coloreadas
- Proyección Q — transformación a queries
- Proyección K — transformación a keys
- QK^T — matriz de compatibilidad
- /\sqrt{d_k} — escalado
- Softmax — normalización a probabilidades
- \times V — output ponderado
Cada paso se ilumina al activarse. Los tokens aparecen como columnas, y las conexiones de atención se muestran como líneas cuyo grosor refleja el peso.
3.2 Panel lateral
- Ecuación destacada: \text{Attention}(Q,K,V) = \text{softmax}(QK^T / \sqrt{d_k})V
- Indicador de paso: 7 puntos navegables (inactivo/activo/completado)
- Métricas: dimensión d_k, entropía de atención, máximo peso, token query actual
- Controles: siguiente paso, animar, reset, selector de oración
3.3 Barra de estado
Muestra el paso actual (e.g., “Paso: 3/7”) y el token query seleccionado.
4. Controles Interactivos
4.1 Secuencia de entrada
Selector con tres oraciones predefinidas: - “el gato se sienta en la mesa” — 7 tokens, relaciones sintácticas claras - “la red neuronal aprende rapido” — 5 tokens, vocabulario técnico - “atencion es todo lo que necesitas” — 7 tokens, referencia al paper original
4.2 Navegación por pasos
- Siguiente Paso — avanza al siguiente de los 7 pasos
- Animar — reproduce todos los pasos automáticamente con transiciones
- Reset — vuelve al paso 1 con la secuencia actual
- Step dots — click en cualquier punto para saltar a ese paso
4.3 Configuración
| Control | Rango | Efecto |
|---|---|---|
| Temperatura | 0.1 – 5.0 | Controla la “nitidez” del softmax. T < 1 concentra atención; T > 1 la distribuye |
| Causal Mask (GPT) | On/Off | Aplica máscara triangular: token i solo atiende a posiciones \leq i |
| Mostrar Valores | On/Off | Muestra/oculta los valores numéricos en las matrices |
4.4 Audio
- Volumen (0–100%) — controla la intensidad de la sonificación
- Silenciar — desactiva todo el audio
5. Las Matemáticas
5.1 Producto punto escalado
El score de compatibilidad entre los tokens i y j es:
e_{ij} = \frac{q_i \cdot k_j}{\sqrt{d_k}}
donde q_i es la query del token i y k_j es la key del token j. La división por \sqrt{d_k} (en la simulación, d_k = 8) evita que los productos punto crezcan demasiado con la dimensionalidad, lo que saturaría el softmax.
5.2 ¿Por qué \sqrt{d_k}?
Si q y k tienen componentes con media 0 y varianza 1, entonces:
\text{Var}(q \cdot k) = \sum_{i=1}^{d_k} \text{Var}(q_i k_i) = d_k
La desviación estándar es \sqrt{d_k}. Dividir por ella normaliza la varianza a 1, manteniendo los gradientes del softmax en un rango útil.
5.3 Softmax con temperatura
\alpha_{ij} = \frac{\exp(e_{ij} / T)}{\sum_{l=1}^{n} \exp(e_{il} / T)}
Con T = 1 (estándar), los pesos reflejan directamente las compatibilidades. Con T \to 0, la distribución se vuelve one-hot (atención concentrada). Con T \to \infty, la distribución se vuelve uniforme.
5.4 Máscara causal
Para modelos autoregresivos (GPT), el token en posición i no debe “ver” posiciones futuras. Se aplica:
e_{ij} = \begin{cases} \frac{q_i \cdot k_j}{\sqrt{d_k}} & \text{si } j \leq i \\ -\infty & \text{si } j > i \end{cases}
El -\infty se convierte en 0 después del softmax, bloqueando efectivamente la atención al futuro.
5.5 Entropía de atención
La simulación calcula la entropía de la distribución de atención para cada token:
H(\alpha_i) = -\sum_{j=1}^{n} \alpha_{ij} \log \alpha_{ij}
Entropía baja indica atención concentrada (el token “sabe” a quién mirar). Entropía alta indica atención dispersa.
6. Sonificación
6.1 Diseño de audio
La simulación usa un sintetizador con filtro lowpass para representar eventos:
- Cambio de paso: tono ascendente proporcional al número de paso
- Pesos de atención: cada conexión genera una nota cuya frecuencia y volumen reflejan el peso \alpha_{ij}
- Temperatura: temperaturas bajas producen sonidos más agudos y definidos; temperaturas altas generan texturas más difusas
6.2 Mapeo
| Evento | Frecuencia | Duración | Tipo de onda |
|---|---|---|---|
| Avance de paso | 300 + paso × 80 Hz | 0.15s | sine |
| Peso de atención | 200 + \alpha_{ij} × 600 Hz | 0.3s | sine + lowpass |
| Reset | 200 Hz descendente | 0.2s | triangle |
7. Guía Paso a Paso
Paso 1: Observa los embeddings
- Selecciona “el gato se sienta en la mesa”
- El paso 1 muestra los vectores de embedding como columnas coloreadas
- Cada token tiene un vector de d dimensiones (representado visualmente)
Paso 2: Proyecciones Q
- Avanza al paso 2
- Los embeddings se transforman en queries mediante W_Q
- Observa cómo los vectores cambian de forma: ahora representan “preguntas”
Paso 3: Proyecciones K
- Avanza al paso 3
- Simultáneamente se generan los keys mediante W_K
- Cada token ahora tiene un identificador de lo que “ofrece”
Paso 4: Matriz QK^T
- Avanza al paso 4 — este es el paso clave
- Se calcula el producto punto entre cada par (query, key)
- La matriz resultante muestra compatibilidades: valores altos = alta afinidad
Paso 5: Escalado
- Avanza al paso 5
- Todos los scores se dividen por \sqrt{d_k} = \sqrt{8} \approx 2.83
- Los valores se comprimen, preparándolos para el softmax
Paso 6: Softmax
- Avanza al paso 6
- Cada fila se normaliza a probabilidades que suman 1
- Activa la Causal Mask para ver cómo se enmascara el futuro
Paso 7: Output ponderado
- Avanza al paso 7
- Los pesos de atención ponderan los values de cada token
- El resultado es un nuevo vector por token que incorpora información contextual
Paso 8: Experimenta con temperatura
- Baja la temperatura a 0.2: la atención se concentra en 1-2 tokens
- Sube la temperatura a 3.0: la atención se distribuye casi uniformemente
- Observa cómo la entropía cambia con la temperatura
8. Conceptos Avanzados
8.1 Multi-Head Attention
En la práctica, el Transformer no usa una sola cabeza de atención sino h cabezas en paralelo:
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h) W_O
donde \text{head}_i = \text{Attention}(Q W_Q^i, K W_K^i, V W_V^i). Cada cabeza puede especializarse en diferentes tipos de relaciones (sintácticas, semánticas, posicionales).
8.2 Complejidad computacional
El self-attention tiene complejidad O(n^2 d) donde n es la longitud de la secuencia. Esto limita la longitud máxima de contexto y ha motivado variantes como:
- Sparse Attention (reducir conexiones)
- Linear Attention (aproximar softmax)
- Flash Attention (optimizar memoria GPU)
8.3 Cross-Attention
En modelos encoder-decoder (traducción), las queries vienen del decoder y las keys/values del encoder:
\text{CrossAttn} = \text{softmax}\!\left(\frac{Q_{\text{dec}} K_{\text{enc}}^T}{\sqrt{d_k}}\right) V_{\text{enc}}
Esto permite que el decoder “mire” selectivamente la entrada mientras genera la salida.
8.4 Encodings posicionales
El self-attention es invariante al orden (la operación es la misma sin importar la posición). Los positional encodings inyectan información de posición:
PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d}), \quad PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d})
9. Ejercicios
Ejercicio 1: Atención e identidad
Selecciona cada oración y avanza al paso 6. ¿El token “el”/“la” atiende más al sustantivo que le sigue? ¿Por qué tiene sentido lingüísticamente?
Ejercicio 2: Efecto de la temperatura
Para la oración “el gato se sienta en la mesa”, registra el peso máximo de atención del token “gato” con T = 0.5, T = 1.0 y T = 3.0. Grafica los tres valores y describe la tendencia.
Ejercicio 3: Máscara causal
Activa la causal mask y observa el paso 6. ¿Cuántos pesos de atención se anulan para el último token vs. el primer token? Explica la asimetría.
Ejercicio 4: Entropía como indicador
Compara la entropía de atención del primer token vs. el cuarto token en cada oración. ¿Cuál tiene mayor entropía y por qué? Relaciona con la cantidad de contexto disponible (con mask causal activada).
Ejercicio 5: Dimensionalidad
La simulación usa d_k = 8. Si se usara d_k = 64 (como en GPT-2), ¿por cuánto cambiaría el factor de escalado \sqrt{d_k}? ¿Qué efecto tendría en la “nitidez” de la atención?
Ejercicio 6: Diseño de cabezas
Si un Transformer tiene d = 512 y usa h = 8 cabezas, ¿cuál es d_k por cabeza? Si duplicamos h a 16, ¿qué trade-off se introduce entre especialización y expresividad por cabeza?
10. Glosario
| Término | Definición |
|---|---|
| Self-Attention | Mecanismo donde cada token atiende a todos los tokens de la misma secuencia |
| Query (Q) | Vector que representa “lo que busca” un token |
| Key (K) | Vector que representa “lo que ofrece” un token como identificador |
| Value (V) | Vector con la información que un token contribuye al output |
| Score | Producto punto entre query y key antes de normalizar |
| Escalado | División por \sqrt{d_k} para estabilizar gradientes del softmax |
| Softmax | Función que convierte scores en probabilidades (suman 1) |
| Peso de atención (\alpha_{ij}) | Probabilidad de que token i atienda a token j |
| Temperatura | Parámetro que controla la nitidez de la distribución de atención |
| Máscara causal | Restricción que impide atender a posiciones futuras (modelos autoregresivos) |
| Multi-Head Attention | Múltiples cabezas de atención en paralelo, cada una con sus propias W_Q, W_K, W_V |
| Cross-Attention | Atención donde Q viene de una secuencia y K, V de otra |
| Positional Encoding | Vector sumado al embedding para codificar la posición del token |
| Entropía | Medida de dispersión de la distribución de atención |
| d_k | Dimensionalidad de los vectores query y key |
| d_v | Dimensionalidad de los vectores value |
| Transformer | Arquitectura basada enteramente en mecanismos de atención |
| Autoregresivo | Modelo que genera tokens uno a uno, condicionado en los anteriores |
11. Referencias
- Vaswani, A., et al. (2017). Attention Is All You Need. NeurIPS.
- Phuong, M. & Hutter, M. (2022). Formal Algorithms for Transformers. arXiv:2207.09238.
- Dao, T., et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention. NeurIPS.
- Jay Alammar (2018). The Illustrated Transformer. jalammar.github.io.
- Lilian Weng (2023). Attention? Attention!. lilianweng.github.io.