8 Conexiones residuales y normalización
Dónde estamos. Ya tenemos las dos piezas que hacen el trabajo: la atención (mezclar entre tokens) y la FFN (procesar cada token). Pero un transformer apila decenas de estos bloques, y apilar tantas capas, sin más, no funciona: la señal se desvanece o se degrada. Este capítulo cubre el andamiaje que lo hace posible —conexiones residuales y normalización—. No “calculan” nada del lenguaje; son lo que mantiene la máquina en pie y entrenable al ser profunda.
8.1 La idea en una frase
Cada subcapa suma su resultado a lo que ya había (no lo reemplaza), y una normalización mantiene la señal a una escala estable. Eso es lo que permite apilar muchas capas sin que el modelo se rompa.
8.2 Conceptos clave y su papel en el transformer
Antes de entrar en detalle, definimos los términos de este capítulo y para qué sirve cada uno dentro de un transformer:
- Conexión residual. Definición: cada subcapa suma su resultado al vector que ya había, en vez de reemplazarlo (
x ← x + Subcapa(x)). En el transformer: es la autopista por la que viaja el vector; cada capa solo propone una corrección, lo que hace posible la profundidad y crea el flujo residual del Cap. 3. - Flujo residual. Definición: el vector compartido que recorre todo el bloque y al que cada capa lee y suma. En el transformer: el espacio de trabajo común del modelo, su “pizarra” compartida entre capas.
- Camino del gradiente. Definición: la ruta directa que la suma residual deja para que la señal de aprendizaje atraviese muchas capas sin desvanecerse. En el transformer: es lo que permite entrenar redes profundas (la idea de las ResNets, He et al. (2016)).
- Colapso de rango (rank collapse). Definición: sin residuales ni FFN, la atención pura hace que todos los tokens converjan al mismo vector. En el transformer: explica por qué el andamiaje no es opcional —sin él, una red honda se autodestruye (Dong et al. 2021)—.
- Normalización. Definición: reajustar la escala del vector de cada token para mantenerlo en un rango cómodo. En el transformer: es el control de volumen que evita que la señal explote o se encoja al pasar de capa en capa.
- LayerNorm. Definición: normaliza a media 0 y varianza 1 y aplica una ganancia \(\gamma\) y un desplazamiento \(\beta\) aprendidos (Ba et al. 2016). En el transformer: la normalización clásica, con perillas para recuperar la escala que convenga.
- RMSNorm. Definición: versión más simple que se salta el re-centrado (no resta la media), solo reescala por la raíz cuadrática media (Zhang y Sennrich 2019). En el transformer: casi igual de buena y más barata; por eso la usan LLaMA y compañía.
- Pre-LN vs Post-LN. Definición: dónde se coloca la normalización respecto a la suma residual —antes de la subcapa (Pre-LN) o después de sumar (Post-LN)—. En el transformer: Pre-LN entrena estable y sin warmup y es hoy el estándar; cambiar a él fue clave para entrenar modelos enormes.
Con esto en mente, veamos qué papel cumple cada andamio.
8.3 Para qué sirven (su papel en el transformer)
Dos andamios, dos trabajos:
- La conexión residual es la autopista por la que viaja el vector: cada capa no escribe un vector nuevo, sino que propone una corrección al que ya va corriendo. Eso hace posible la profundidad (la información y el gradiente no se pierden por el camino) y crea el flujo residual del Cap. 3 —el espacio de trabajo común que toda capa lee y al que toda capa suma—.
- La normalización es el control de volumen: mantiene la señal ni demasiado fuerte ni demasiado débil, capa tras capa, para que el entrenamiento sea estable.
Sin ellos, un transformer profundo simplemente no entrena (los gradientes se desvanecen) o colapsa (lo vemos abajo).
8.4 La conexión residual
La fórmula no puede ser más simple:
\[ x \leftarrow x + \text{Subcapa}(x) \tag{8.1}\]
Qué hace cada parte:
- \(x\) = el vector que va viajando por el flujo residual (lo que se sabe hasta ahora del token).
- \(\text{Subcapa}(x)\) = lo que aporta esta capa (la atención o la FFN).
- \(x + \dots\) = se suma, no se sustituye. La capa solo añade una edición.
🧩 Analogía. Es una cinta transportadora con una pizarra compartida: el vector viaja por la cinta y, en cada estación (capa), alguien lee la pizarra y añade sus anotaciones sin borrar lo anterior. (La misma imagen del Cap. 3: aquí se ve por qué la escritura es aditiva.)
¿Por qué sumar en vez de reemplazar? Por dos razones: (1) deja un camino directo para el gradiente, que así no se desvanece al atravesar muchas capas (la idea de las ResNets, He et al. (2016)); y (2) conserva lo ya calculado, en lugar de arriesgarse a perderlo en cada capa.
¿Tan importantes son? Decisivos. Dong et al. (2021) demostraron que la atención pura —sin conexiones residuales ni FFN— colapsa doblemente exponencial con la profundidad: todos los tokens convergen al mismo vector (rango 1) y se pierde toda la información, y más rápido cuanto más honda es la red. Lo que lo rescata son las conexiones residuales y la FFN juntas. De ahí el título del paper: “la atención no es todo lo que necesitas”. El andamiaje no es opcional: es lo que evita que el transformer se autodestruya al crecer.
8.5 La normalización
La otra mitad del andamiaje mantiene la escala bajo control.
LayerNorm (Ba et al. 2016) hace esto, para cada token por separado: toma los números de su vector, los reajusta a media 0 y varianza 1, y luego les aplica una ganancia (\(\gamma\)) y un desplazamiento (\(\beta\)) aprendidos.
- Qué hace: evita que los valores exploten o se encojan al pasar de capa en capa —los deja en un rango cómodo—.
- \(\gamma\) y \(\beta\) = dos perillas aprendidas que dejan al modelo recuperar la escala que le convenga, por si “media 0, varianza 1” es demasiado estricto.
🧩 Analogía. Una perilla automática de volumen: mantiene la señal ni saturada ni inaudible antes de pasar a la siguiente etapa.
RMSNorm (Zhang y Sennrich 2019) es una versión más simple y barata: se salta el re-centrado (no resta la media), solo reescala por la raíz cuadrática media, con una ganancia aprendida. Da casi el mismo resultado y es más rápida; por eso la usan LLaMA y compañía. (Ojo: la diferencia con LayerNorm es exactamente esa —quitar la media—, no “LayerNorm sin β”.)
8.6 ¿Dónde va la norma? Pre-LN vs Post-LN
Un detalle pequeño en la fórmula, enorme en la práctica: dónde se coloca la normalización respecto a la suma residual.
- Post-LN (Transformer original): normaliza después de sumar → \(x = \text{LN}(x + \text{Subcapa}(x))\). Entrena con dificultad; necesita warmup (subir el learning rate poco a poco al principio).
- Pre-LN (de GPT-2 en adelante, hoy estándar): normaliza la entrada de la subcapa → \(x = x + \text{Subcapa}(\text{LN}(x))\). Los gradientes se portan bien desde el principio, así que entrena estable y sin warmup (Xiong et al. 2020).
No es solo “una variante”: el cambio a Pre-LN es una de las razones por las que hoy se entrenan transformers enormes sin tantos dolores de cabeza.
8.7 El bloque completo, en código
Así queda un bloque transformer moderno (Pre-LN), juntando todo lo de los Cap. 4–7:
# x: (n_tokens, d_model) viajando por el flujo residual
x = x + atencion(norm1(x)) # mezclar entre tokens (+ suma residual)
x = x + ffn(norm2(x)) # procesar cada token (+ suma residual)Dos líneas. Fíjate en el patrón: normalizar → subcapa → sumar, dos veces. Apila este bloque 12, 32 o 96 veces y tienes el cuerpo de un transformer.
8.8 Resumen
- La conexión residual (
x ← x + Subcapa(x)) hace que cada capa añada una corrección en vez de reemplazar; mantiene un camino para el gradiente y crea el flujo residual. Sin ella (+ FFN), la atención pura colapsa a rango 1. - La normalización mantiene la señal a escala estable: LayerNorm (media 0, var 1, + γ, β) y la más simple RMSNorm (solo RMS, sin re-centrado).
- Pre-LN (normalizar antes de la subcapa) es hoy el estándar: entrena estable sin warmup, frente al Post-LN original.
- Juntos son el andamiaje que hace entrenable apilar decenas de bloques.
Siguiente (Capítulo 8): tenemos atención, FFN y el andamiaje. Falta un sentido que la atención, por sí sola, no tiene: el orden. Toca la información de posición y RoPE.
8.9 Ejercicios
- Sumar vs reemplazar. Explica con tus palabras dos razones por las que la capa suma su salida en vez de sustituir el vector.
- LayerNorm vs RMSNorm. ¿Cuál es la única diferencia esencial entre las dos?
- Pre vs Post. Escribe las dos fórmulas (Pre-LN y Post-LN) para una subcapa. ¿Cuál necesita warmup y cuál no?
- Colapso. Si quitas las conexiones residuales y dejas solo atención, ¿qué les pasa a las representaciones de los tokens al aumentar la profundidad?