1. Introducción
El Transformer es la arquitectura que revolucionó el procesamiento de lenguaje natural y que impulsa modelos como GPT, BERT, y Claude. A diferencia de las RNNs que procesan tokens uno a uno, el Transformer procesa todos los tokens en paralelo usando el mecanismo de atención.
Esta simulación implementa un micro-Transformer con 2 capas y 2 heads de atención, dimensión d = 32, y un vocabulario de 20 palabras. Puedes ejecutar un forward pass completo o avanzar paso a paso por cada componente:
- Embedding: palabra → vector
- Positional Encoding: inyectar información de posición
- Multi-Head Attention (×2 capas): tokens se comunican entre sí
- Feed-Forward Network (×2 capas): procesamiento individual por token
- Output: representación final
Cada componente se anima y visualiza en el canvas, mostrando las activaciones como barras de calor.
2. Conceptos Fundamentales
2.1 El flujo completo
\text{Output} = \text{LayerNorm}(x + \text{FFN}(\text{LayerNorm}(x + \text{Attention}(x))))
Este patrón se repite N veces (en esta simulación, N = 2).
2.2 Embedding
Cada palabra se mapea a un vector de dimensión d usando una tabla de embedding:
e_\text{token} = W_E[\text{token\_id}] \in \mathbb{R}^d
donde W_E \in \mathbb{R}^{|\text{vocab}| \times d} es la matriz de embedding.
2.3 Positional Encoding
El Transformer no tiene noción intrínseca del orden. Las codificaciones posicionales sinusoidales inyectan esta información:
PE_{(pos, 2i)} = \sin\!\left(\frac{pos}{10000^{2i/d}}\right)
PE_{(pos, 2i+1)} = \cos\!\left(\frac{pos}{10000^{2i/d}}\right)
Se suman al embedding: x = e_\text{token} + PE_{pos}.
2.4 Multi-Head Attention
\text{MultiHead}(x) = \text{Concat}(\text{head}_1, \text{head}_2) W^O
\text{head}_i = \text{softmax}\!\left(\frac{Q_i K_i^T}{\sqrt{d_k}}\right) V_i
Con 2 heads y d = 32: cada head opera en un subespacio de dimensión d_k = 16.
2.5 Feed-Forward Network
\text{FFN}(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2
Típicamente, la dimensión interna es 4d (en esta simulación: 4 \times 32 = 128). Esto da capacidad de procesamiento no lineal a cada token individualmente.
2.6 Conexiones residuales + Layer Normalization
x' = \text{LayerNorm}(x + \text{Sublayer}(x))
- Residual (x + \text{Sublayer}(x)): permite que los gradientes fluyan directamente
- LayerNorm: normaliza las activaciones para estabilizar el entrenamiento
3. La Interfaz
3.1 Estructura general
| Área | Ubicación | Función |
|---|---|---|
| Canvas principal | Izquierda | Diagrama de bloques del Transformer con flujo animado |
| Tooltip | Flotante | Detalles del componente al pasar el mouse |
| Panel de controles | Derecha (360px) | Entrada, audio, componente activo, explicaciones |
3.2 Diagrama del canvas
El canvas muestra el Transformer como una torre vertical de bloques:
- Embedding (base): tokens convertidos en vectores
- + Positional Encoding: vectores sinusoidales sumados
- Capa 1: Attention → Add & Norm → FFN → Add & Norm
- Capa 2: mismo patrón
- Output (tope): representaciones finales
Cada componente se ilumina cuando está activo, y las activaciones se visualizan como barras de calor dentro de cada bloque. Partículas fluyen entre componentes durante la animación.
3.3 Header
Muestra el paso actual del forward pass y el número de tokens.
4. Controles Interactivos
4.1 Entrada
| Control | Función |
|---|---|
| Selector de frase | 4 frases predefinidas en español |
| Forward Pass | Ejecuta todo el forward pass con animación |
| Paso a Paso | Avanza un componente a la vez |
| Reset | Vuelve al estado inicial |
Frases disponibles: - “el gato se sienta” - “la red aprende rapido” - “el modelo genera texto” - “atencion es todo”
4.2 Audio
- Volumen: 0-100%
- Silenciar: toggle de audio
4.3 Componente activo
| Métrica | Descripción |
|---|---|
| Componente | Nombre del componente activo (Embedding, PosEnc, Attention L0, FFN L0, etc.) |
| Dimensión | d = 32 |
| Heads | 2 |
| Capas | 2 |
| Gráfico de activaciones | Barras mostrando las activaciones del componente activo |
5. Las Matemáticas
5.1 Dimensiones del modelo
| Parámetro | Valor | Descripción |
|---|---|---|
| d | 32 | Dimensión del modelo |
| h | 2 | Número de heads |
| d_k | 16 | Dimensión por head (d / h) |
| d_{ff} | 128 | Dimensión interna del FFN (4d) |
| N | 2 | Número de capas |
| |\text{vocab}| | 20 | Tamaño del vocabulario |
5.2 Cómputo del attention score
Para cada head i, la query q, key k y value v de cada token se computan:
q_j = x_j W_i^Q, \quad k_j = x_j W_i^K, \quad v_j = x_j W_i^V
Los scores entre todos los pares de tokens:
\alpha_{jl} = \frac{\exp(q_j \cdot k_l / \sqrt{d_k})}{\sum_m \exp(q_j \cdot k_m / \sqrt{d_k})}
La salida para el token j:
\text{head}_i(j) = \sum_l \alpha_{jl} \cdot v_l
5.3 Layer Normalization
\text{LayerNorm}(x) = \gamma \odot \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \beta
donde \mu = \frac{1}{d}\sum_i x_i, \sigma^2 = \frac{1}{d}\sum_i (x_i - \mu)^2, y \gamma, \beta son parámetros aprendidos.
5.4 Conteo de parámetros
| Componente | Parámetros |
|---|---|
| Embedding | 20 \times 32 = 640 |
| Attention (por capa) | 4 \times 32 \times 32 = 4096 (W^Q, W^K, W^V, W^O) |
| FFN (por capa) | 32 \times 128 + 128 + 128 \times 32 + 32 = 8352 |
| LayerNorm (4×) | 4 \times 2 \times 32 = 256 |
| Total | \approx 25,400 |
5.5 Positional Encoding: propiedades
Las codificaciones sinusoidales tienen propiedades geométricas útiles:
PE_{pos+k} \cdot PE_{pos} = f(k)
El producto punto entre dos posiciones depende solo de su distancia relativa, no de sus posiciones absolutas. Esto permite al modelo generalizar a longitudes de secuencia no vistas.
6. Sonificación
6.1 Mapeo audio
| Evento | Sonido | Parámetro mapeado |
|---|---|---|
| Embedding | Nota base por token | Frecuencia según la posición del token en el vocabulario |
| Positional Encoding | Superposición sinusoidal | Las frecuencias del PE se mapean a audio |
| Attention | Acordes | Tokens con alta atención mutua suenan juntos |
| FFN | Transformación tímbrica | El timbre cambia según la magnitud de las activaciones |
| LayerNorm | Normalización de volumen | El volumen se estabiliza |
| Avance de capa | Cambio de octava | Cada capa suena en un registro más alto |
6.2 Interpretación
El forward pass suena como una progresión musical: comienza con notas aisladas (embedding), se enriquece con armonías (attention), pasa por transformaciones (FFN), y culmina con las representaciones finales.
7. Guía Paso a Paso
7.1 Forward pass completo
- Selecciona “el gato se sienta”
- Pulsa Forward Pass
- Observa la animación: cada componente se ilumina secuencialmente
- Nota cómo las partículas fluyen de abajo hacia arriba
- Al final, observa las activaciones de salida en el gráfico
7.2 Paso a paso
- Selecciona una frase y pulsa Paso a Paso
- Embedding: cada token se convierte en un vector (barras en el gráfico)
- PosEnc: los vectores se modifican ligeramente (ondas sinusoidales sumadas)
- Attention L0: los tokens se “comunican” — las activaciones cambian según el contexto
- FFN L0: cada token se transforma individualmente
- Attention L1, FFN L1: segunda capa refina las representaciones
- Output: representación final
7.3 Comparar frases
- Ejecuta “el gato se sienta” paso a paso, anotando las activaciones del token “gato”
- Reset, ejecuta “la red aprende rapido”, observa las activaciones de “red”
- ¿Cómo difieren las representaciones después de la atención? Cada token se contextualiza diferente según su contexto
7.4 Observar la atención
- En el paso de Attention, el gráfico de activaciones muestra cómo los tokens se influencian mutuamente
- Nota si “gato” atiende más a “el” (artículo) o a “sienta” (verbo)
- En la segunda capa de atención, las relaciones pueden ser más abstractas
8. Conceptos Avanzados
8.1 Pre-norm vs Post-norm
Hay dos variantes de dónde colocar LayerNorm:
- Post-norm (original): \text{LN}(x + \text{Sublayer}(x))
- Pre-norm (moderna): x + \text{Sublayer}(\text{LN}(x))
Pre-norm es más estable para entrenar redes profundas y es la variante usada en GPT-2/3.
8.2 Encoder vs Decoder
El Transformer original tiene dos partes: - Encoder: procesa la entrada completa con self-attention bidireccional (BERT) - Decoder: genera la salida token a token con atención causal + cross-attention (GPT usa solo decoder)
Esta simulación modela un encoder: todos los tokens se ven entre sí.
8.3 Escalamiento
Los Transformers escalan de forma predecible (leyes de escalado):
L \propto N^{-\alpha}
donde L es la loss, N es el número de parámetros, y \alpha \approx 0.076 para modelos de lenguaje. Duplicar parámetros reduce la loss de forma consistente.
8.4 Rotary Position Embeddings (RoPE)
Las codificaciones posicionales sinusoidales clásicas se suman al embedding. RoPE (usado en LLaMA, Mistral) en cambio rota los vectores Q y K:
\text{RoPE}(x, pos) = R_\theta(pos) \cdot x
Esto codifica posiciones relativas directamente en los productos punto de atención.
8.5 KV-Cache
Durante la generación, los vectores K y V de tokens anteriores no cambian. El KV-cache los almacena para no recalcularlos, reduciendo la complejidad de generación de O(n^2) a O(n) por token.
9. Ejercicios
Ejercicio 1: Embedding vs Output
Compara las activaciones después del embedding con las del output final para la frase “el gato se sienta”. ¿Qué tan diferentes son? El embedding es una representación estática; el output incorpora contexto de toda la frase.
Ejercicio 2: Efecto del positional encoding
Ejecuta paso a paso y compara las activaciones antes y después de sumar el positional encoding. ¿Se notan las ondas sinusoidales? ¿Son más pronunciadas para posiciones tempranas o tardías?
Ejercicio 3: Una capa vs dos
Anota las activaciones después de la capa 1 y después de la capa 2. ¿La segunda capa cambia mucho las representaciones? ¿O las refina sutilmente? En redes reales con 32+ capas, las capas profundas hacen cambios cada vez más pequeños (gracias a las conexiones residuales).
Ejercicio 4: Conteo de operaciones
Calcula el número de multiplicaciones en un forward pass para 4 tokens con d = 32 y 2 heads. Pista: la atención requiere O(n^2 d) y el FFN requiere O(n \cdot d \cdot d_{ff}). ¿Cuál es el cuello de botella para secuencias largas?
Ejercicio 5: Frases diferentes, mismas palabras
Compara “el modelo genera texto” con “atencion es todo”. ¿Cómo difieren las representaciones finales? ¿El token “modelo” en una frase tiene la misma representación que “modelo” en otra frase?
Ejercicio 6: LayerNorm en acción
Observa el gráfico de activaciones antes y después de cada LayerNorm. ¿Las activaciones se centran (media ≈ 0) y normalizan (varianza ≈ 1)? ¿Por qué esto es importante para la estabilidad del entrenamiento?
10. Glosario
| Término | Definición |
|---|---|
| Transformer | Arquitectura basada en atención que procesa tokens en paralelo |
| Embedding | Tabla que convierte tokens (palabras) en vectores de dimensión d |
| Positional Encoding | Vectores sinusoidales que inyectan información de posición en los embeddings |
| Self-Attention | Mecanismo donde cada token atiende a todos los demás tokens de la misma secuencia |
| Multi-Head | Múltiples instancias de atención en paralelo, cada una en un subespacio |
| FFN | Feed-Forward Network: dos capas lineales con ReLU, aplicada por token |
| LayerNorm | Normalización que centra y escala las activaciones por token |
| Conexión residual | Atajo x + f(x) que permite flujo directo de gradientes |
| d_\text{model} | Dimensión del modelo (tamaño de los vectores de representación) |
| d_k | Dimensión por head de atención (d_\text{model} / h) |
| d_{ff} | Dimensión interna del FFN (típicamente 4 \times d_\text{model}) |
| Forward pass | Propagación de la entrada a través de todas las capas hasta la salida |
| Pre-norm | Variante donde LayerNorm se aplica antes de la sublayer |
| Post-norm | Variante original donde LayerNorm se aplica después de la sublayer |
| Encoder | Parte del Transformer con atención bidireccional (ve todos los tokens) |
| Decoder | Parte del Transformer con atención causal (solo ve tokens previos) |
| RoPE | Rotary Position Embeddings: codificación posicional por rotación de vectores |
| KV-Cache | Almacenamiento de Keys y Values previos para generación eficiente |
11. Referencias
- Vaswani, A. et al. (2017). “Attention Is All You Need.” NeurIPS.
- Devlin, J. et al. (2019). “BERT: Pre-training of Deep Bidirectional Transformers.” NAACL.
- Radford, A. et al. (2019). “Language Models are Unsupervised Multitask Learners.” OpenAI Technical Report.
- Kaplan, J. et al. (2020). “Scaling Laws for Neural Language Models.” arXiv:2001.08361.
- Elhage, N. et al. (2021). “A Mathematical Framework for Transformer Circuits.” Anthropic.
- Su, J. et al. (2021). “RoFormer: Enhanced Transformer with Rotary Position Embedding.” arXiv:2104.09864.