La normalización de capa (layer normalization) y sus variantes
Índice de contenidos
- Puntos clave
- ¿Qué es la normalización de capa?
- Layer norm frente a batch norm
- Por qué la usan los transformers
- RMSNorm y otras variantes
- Dónde se coloca (pre-norm y post-norm)
- Preguntas frecuentes
- ¿En qué se diferencian la normalización de capa y la de lotes?
- ¿Por qué los transformers usan normalización de capa?
- ¿Merece la pena cambiar a RMSNorm?
- Conclusión
- Fuentes
La normalización de capa estabiliza el entrenamiento normalizando cada ejemplo por separado, con la media y la desviación típica de sus propias activaciones. A diferencia de la normalización por lotes, no depende del tamaño del lote, y por eso los transformers la adoptaron. RMSNorm es su variante más ligera y extendida hoy.
La normalización de capa es la técnica que mantiene estable el entrenamiento de un transformer normalizando cada ejemplo por separado. En lugar de mirar todo el lote, calcula la media y la desviación típica sobre los rasgos de una sola muestra y reescala esos valores. Esa independencia del tamaño del lote es la razón de que casi todos los grandes modelos de lenguaje la usen. Aquí verás qué hace, en qué se diferencia de la normalización por lotes y por qué RMSNorm la ha reemplazado en la práctica. La misma explicación está disponible en inglés.
Puntos clave
- La normalización de capa normaliza las activaciones de un único ejemplo a lo largo de sus rasgos: $\mathrm{LN}(x) = \gamma \cdot (x-\mu)/\sigma + \beta$, con $\mu$ y $\sigma$ calculadas por muestra.
- Al no depender del lote, funciona igual en entrenamiento y en inferencia, y tolera lotes de tamaño 1, algo que la normalización por lotes no permite.
- Los transformers, presentados en 2017, la adoptaron porque las longitudes de secuencia varían y las estadísticas del lote serían inestables.
- RMSNorm (2019) elimina el centrado en la media y solo reescala por la raíz cuadrática media, con un ahorro de tiempo de entre el 7 % y el 64 %.
- La colocación importa: la pre-normalización estabiliza redes profundas mejor que la post-normalización original.
¿Qué es la normalización de capa?
Propuesta por Ba, Kiros y Hinton en 2016, la normalización de capa toma el vector de activaciones de una capa para un ejemplo, $z = \mathbf{W}x + b$, y lo reescala para que tenga media cero y varianza uno. Después aplica dos parámetros aprendibles, una ganancia $\gamma$ y un desplazamiento $\beta$, que devuelven a la red la libertad de ajustar la escala.
La fórmula compacta es:
$$\mathrm{LN}(x) = \gamma \cdot \dfrac{x-\mu}{\sigma} + \beta$$
donde $\mu$ es la media de las activaciones de ese ejemplo, $\sigma$ su desviación típica y se añade un pequeño $\varepsilon$ bajo la raíz para no dividir entre cero. La clave está en el eje del cálculo: $\mu$ y $\sigma$ recorren los rasgos de una sola muestra, no la dimensión del lote. Para repasar de dónde salen esas activaciones puedes volver al mapa de las matemáticas de las redes neuronales.
El pequeño término $\varepsilon$ que se suma bajo la raíz no altera la escala: solo evita dividir entre cero cuando la varianza de un ejemplo es diminuta. En PyTorch su valor por defecto es $\varepsilon = 10^{-5}$.
En pseudocódigo, la operación por token cabe en tres líneas:
mu = x.mean(-1, keepdim=True) # media sobre los rasgos
var = x.var(-1, keepdim=True, unbiased=False)
y = gamma * (x - mu) / (var + eps).sqrt() + beta
Layer norm frente a batch norm
La normalización por lotes, de Ioffe y Szegedy (2015), normaliza cada rasgo usando la media y la varianza calculadas sobre todo el lote. Eso la ata al tamaño y a la composición del lote, y obliga a mantener estadísticas móviles para la inferencia. La normalización de capa da la vuelta a ese eje: normaliza cada ejemplo sobre sus propios rasgos, así que no necesita estadísticas globales ni un modo distinto en test.
Las consecuencias prácticas son tres. Primero, funciona con lotes pequeños o de tamaño 1, típicos en secuencias largas. Segundo, el cálculo es idéntico en entrenamiento e inferencia. Tercero, no introduce dependencia entre ejemplos del mismo lote, lo que simplifica el paralelismo. La descripción original lo resume así: la normalización de capa calcula la media y la varianza «a partir de todas las entradas sumadas a las neuronas de una capa en un único caso de entrenamiento».
Por qué la usan los transformers
En un transformer, la longitud de la secuencia cambia de un ejemplo a otro y la atención mezcla tokens dentro de cada muestra. Una estadística de lote sería ruidosa e inestable, mientras que normalizar por token es limpio y determinista. Por eso el artículo que introdujo la arquitectura en 2017 colocó una normalización de capa tras cada subcapa, y todos los modelos de la familia GPT la heredaron. Un modelo como GPT-3 apila 96 capas de este tipo, y sin una normalización robusta esa profundidad sería muy difícil de entrenar. La misma idea aparece en el paso previo a la función softmax de la capa de salida.
RMSNorm y otras variantes
RMSNorm, de Zhang y Sennrich (2019), parte de una observación sencilla: quizá el centrado en la media aporta poco. Su variante elimina la resta de $\mu$ y solo divide por la raíz cuadrática media de las activaciones, conservando la ganancia $\gamma$. Como resumen los autores, «la invariancia al recentrado que aporta LayerNorm es prescindible».
El beneficio es puramente de eficiencia: al ahorrarse el cálculo de la media, RMSNorm reduce el tiempo de ejecución entre el 7 % y el 64 % según el modelo, sin pérdida medible de calidad. Esa ventaja explica que LLaMA, T5 y buena parte de los modelos abiertos actuales la usen por defecto. Otras variantes ajustan dónde y cómo se escala, pero comparten la misma raíz que la función sigmoide y el resto del utillaje: reescalar activaciones para mantener los gradientes en un rango sano.
Dónde se coloca (pre-norm y post-norm)
La posición de la normalización respecto a la conexión residual define dos estilos. En la post-normalización, la del transformer original, la capa se aplica después de sumar el residual. En la pre-normalización se aplica dentro de la rama, antes de la subcapa. Xiong y colaboradores demostraron en 2020 que la pre-normalización mantiene gradientes bien acotados desde la inicialización, mientras que la post-normalización necesita una fase de calentamiento (warmup) de la tasa de aprendizaje $\eta$ para no divergir.
Por eso los modelos profundos modernos, incluidos GPT-2 y GPT-3, se decantaron por la pre-normalización: permite tasas de aprendizaje mayores y una convergencia más fiable. La regla práctica es clara: cuantas más capas apiles, más te conviene normalizar antes de la subcapa.
Preguntas frecuentes
¿En qué se diferencian la normalización de capa y la de lotes?
La normalización por lotes calcula la media y la varianza sobre la dimensión del lote, un valor por rasgo, y depende del tamaño del lote. La normalización de capa las calcula sobre los rasgos de un solo ejemplo, así que no necesita estadísticas globales ni un comportamiento distinto en inferencia.
¿Por qué los transformers usan normalización de capa?
Porque las secuencias tienen longitudes variables y las estadísticas de lote serían inestables. Normalizar cada token sobre sus propios rasgos es determinista y funciona con lotes de cualquier tamaño, incluido 1, lo que encaja con el entrenamiento y la generación de texto.
¿Merece la pena cambiar a RMSNorm?
En modelos grandes casi siempre sí. RMSNorm ofrece la misma calidad que la normalización de capa con un ahorro de cómputo de entre el 7 % y el 64 %, y por eso es la opción por defecto en muchos modelos abiertos recientes.
Conclusión
La normalización de capa resolvió el problema de estabilizar redes cuyas estadísticas de lote no son fiables, y con ello hizo viables los transformers profundos. Su evolución natural, RMSNorm, conserva la idea esencial y recorta el coste. El siguiente paso es entender cómo esa normalización interactúa con la retropropagación y con la normalización por lotes en el resto de arquitecturas.