La normalización de capas es una técnica de normalización de activaciones utilizada en el aprendizaje profundo para estabilizar y acelerar el entrenamiento de las redes neuronales. A diferencia de la normalización por lotes, que normaliza a lo largo de la dimensión del lote, la normalización de capas calcula estadísticas a lo largo de la dimensión de las características para cada muestra de entrada individual. Esto la hace particularmente adecuada para modelos con secuencias de longitud variable o tamaños de lote pequeños, como los transformadores y las redes neuronales recurrentes (RNN). Fue introducida por Jimmy Lei Ba, Jamie Ryan Kiros y Geoffrey Hinton en 2016, y desde entonces se ha convertido en un componente estándar en muchas arquitecturas modernas, incluidos los grandes modelos de lenguaje.
La normalización de capas aborda el problema del cambio covariado interno, donde la distribución de las entradas de una capa cambia durante el entrenamiento, ralentizando la convergencia. Al reescalar y recentrar las activaciones para que tengan media cero y varianza unitaria, suaviza el panorama de optimización y reduce la sensibilidad a la inicialización de parámetros y a las tasas de aprendizaje. Su éxito empírico la ha convertido en una opción predeterminada en el modelado de secuencias y en los sistemas de IA generativa.
Motivación y Antecedentes
La normalización en el aprendizaje automático se divide en dos categorías principales: la normalización de datos y la normalización de activaciones. La normalización de datos, o escalado de características, reescala las características de entrada a un rango común, como [0,1] o [-1,1], para evitar que características con escalas mayores (por ejemplo, kilómetros frente a nanómetros) dominen el proceso de aprendizaje. La normalización de activaciones, específica del aprendizaje profundo, reescala las activaciones de las neuronas ocultas dentro de una red. Los objetivos principales de la normalización son aumentar la velocidad de entrenamiento, reducir el sobreajuste, mejorar la generalización y mitigar problemas como los gradientes que se desvanecen o explotan.
Antes de la normalización de capas, la normalización por lotes (BatchNorm) era el método dominante de normalización de activaciones. BatchNorm normaliza las activaciones a lo largo de la dimensión del mini-lote, calculando la media y la varianza para cada coordenada de característica sobre todas las muestras de un lote. Sin embargo, BatchNorm tiene limitaciones: requiere tamaños de lote suficientemente grandes para estimar las estadísticas de manera fiable, y se comporta de manera diferente durante el entrenamiento (usando estadísticas del lote) y la inferencia (usando promedios móviles). Para redes recurrentes y transformadores que procesan secuencias de longitud variable, las estadísticas del lote pueden ser inestables o poco prácticas.
Definición y Formulación Matemática
Considere una capa de red neuronal que produce un vector de activaciones \( x \) para una única muestra de entrada. La normalización de capas calcula la media \( \mu \) y la varianza \( \sigma^2 \) a lo largo de todas las características (o unidades ocultas) de ese vector:
\[ \mu = \frac{1}{H} \sum_{i=1}^{H} x_i, \quad \sigma^2 = \frac{1}{H} \sum_{i=1}^{H} (x_i - \mu)^2 \]
donde \( H \) es el número de características en la capa. La activación normalizada es entonces:
\[ \hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}} \]
donde \( \epsilon \) es una constante pequeña (por ejemplo, \( 10^{-5} \)) añadida para la estabilidad numérica. Para preservar la capacidad representacional de la capa, la normalización de capas introduce parámetros de escala \( \gamma \) y desplazamiento \( \beta \) aprendibles por característica, aplicados como:
\[ y_i = \gamma_i \hat{x}_i + \beta_i \]
Estos parámetros se actualizan durante el entrenamiento mediante retropropagación, permitiendo a la red deshacer la normalización si es beneficioso.
A diferencia de la normalización por lotes, la normalización de capas no depende del tamaño del lote ni de otras muestras en el lote. Aplica el mismo cálculo a cada entrada de forma independiente, lo que la hace sencilla de usar en el aprendizaje en línea o con un tamaño de lote de 1.
Comparación con la Normalización por Lotes
La normalización por lotes normaliza cada coordenada de característica a lo largo del lote, utilizando estadísticas a nivel de lote. Para un lote de \( B \) muestras, calcula la media y la varianza para cada dimensión de característica sobre todas las muestras. Esto reduce el cambio covariado interno pero introduce dependencias entre las muestras de un lote. Durante la inferencia, BatchNorm utiliza promedios móviles de estas estadísticas, lo que puede causar discrepancias si las distribuciones de entrenamiento y prueba difieren.
La normalización de capas, en contraste, normaliza a lo largo de las características para cada muestra. Esto tiene varias ventajas:
- Independencia del tamaño del lote: Funciona bien con lotes pequeños o inferencia de una sola muestra, ya que no se necesitan estadísticas de lote.
- Estabilidad para redes recurrentes: Las RNN procesan secuencias paso a paso; la normalización de capas se puede aplicar en cada paso de tiempo sin acumular estadísticas de lote a lo largo del tiempo.
- Consistencia entre entrenamiento e inferencia: Se utiliza el mismo cálculo en ambas fases, evitando el desajuste entre entrenamiento y prueba de BatchNorm.
Sin embargo, la normalización de capas puede ser menos efectiva cuando las dimensiones de las características tienen escalas muy diferentes o cuando la dimensión de las características es pequeña, ya que las estadísticas se calculan sobre un conjunto limitado de valores.
Aplicaciones en Transformadores y RNN
La normalización de capas es un componente central de la arquitectura transformador, introducida en el artículo de 2017 "Attention Is All You Need" de Vaswani et al. En los transformadores, la normalización de capas se aplica después de cada subcapa (por ejemplo, atención multi-cabeza y redes de avance), ya sea en una configuración post-norm o pre-norm. La pre-norm (aplicar la normalización antes de la subcapa) se ha vuelto común en las implementaciones modernas, ya que estabiliza el entrenamiento y permite modelos más profundos.
En los grandes modelos de lenguaje como GPT, BERT y sus sucesores, la normalización de capas se utiliza ampliamente. Por ejemplo, los modelos GPT de OpenAI emplean normalización de capas pre-norm dentro de cada bloque de transformador. Esto contribuye al entrenamiento estable de modelos con cientos de miles de millones de parámetros, como se observa en los sistemas desarrollados por OpenAI, Anthropic y Google DeepMind.
En las redes neuronales recurrentes, la normalización de capas se aplica al estado oculto en cada paso de tiempo. Esto ayuda a mitigar los problemas de gradientes que se desvanecen o explotan, permitiendo a las RNN aprender dependencias de largo alcance de manera más efectiva. Se ha utilizado en modelos de secuencia a secuencia, reconocimiento de voz y pronóstico de series temporales.
Variantes y Extensiones
Se han propuesto varias variantes de la normalización de capas para abordar desafíos específicos:
- Normalización de capas por raíz cuadrada media (RMSNorm): Simplifica la normalización de capas omitiendo la resta de la media y utilizando solo la raíz cuadrada media para el escalado. Reduce la sobrecarga computacional mientras mantiene el rendimiento, y se utiliza en algunos grandes modelos de lenguaje como LLaMA.
- Normalización de pesos: En lugar de normalizar las activaciones, normaliza los vectores de pesos de una capa, lo que puede considerarse una técnica relacionada.
- Normalización de instancias: Utilizada principalmente en la generación de imágenes, normaliza a lo largo de las dimensiones espaciales para cada canal y cada muestra, similar en espíritu a la normalización de capas pero aplicada a redes convolucionales.
- Normalización de grupos: Divide los canales en grupos y normaliza dentro de cada grupo, ofreciendo un compromiso entre la normalización de capas y la de lotes para tareas de visión por computadora.
Estas variantes destacan la flexibilidad de las técnicas de normalización para adaptarse a diferentes arquitecturas de red y modalidades de datos.
Impacto en la Dinámica de Entrenamiento
La normalización de capas mejora el entrenamiento de varias maneras. Al mantener las activaciones en un rango controlado, previene valores extremos que pueden causar explosión de gradientes o saturación de funciones de activación como sigmoide o tanh. Esto permite tasas de aprendizaje más altas, lo que acelera la convergencia. También actúa como regularizador, reduciendo el sobreajuste al añadir un ligero ruido a través del proceso de normalización, aunque este efecto es menos pronunciado que en el dropout.
Estudios empíricos han demostrado que la normalización de capas suaviza el panorama de pérdida, haciendo que la optimización sea más predecible. Esto es particularmente importante para redes muy profundas, donde pequeñas perturbaciones pueden amplificarse a través de las capas. En los transformadores, la normalización de capas permite el entrenamiento de modelos con miles de capas, como se ha demostrado en investigaciones recientes sobre transformadores profundos.
Limitaciones y Consideraciones
A pesar de sus ventajas, la normalización de capas tiene limitaciones. Asume que las características dentro de una capa tienen distribuciones comparables; si las características están altamente correlacionadas o tienen varianzas heterogéneas, la normalización puede no ser óptima. Además, los parámetros aprendibles añadidos (\( \gamma \) y \( \beta \)) aumentan ligeramente el tamaño del modelo, aunque esto es insignificante en comparación con el recuento total de parámetros.
En algunas tareas, como la visión por computadora, la normalización por lotes a menudo supera a la normalización de capas porque las estadísticas espaciales a lo largo de un lote proporcionan información más rica. Sin embargo, para el procesamiento del lenguaje natural y el modelado de secuencias, la normalización de capas es generalmente preferida. A mediados de la década de 2020, la mayoría de los grandes modelos de lenguaje de última generación dependen de alguna forma de normalización de capas, lo que subraya su importancia en el campo de la IA generativa.
Conclusión
La normalización de capas se ha convertido en una herramienta fundamental en el aprendizaje profundo, permitiendo un entrenamiento estable y eficiente de arquitecturas complejas. Su independencia del tamaño del lote y su consistencia entre entrenamiento e inferencia la hacen ideal para transformadores y redes recurrentes, que sustentan los sistemas de IA modernos. A medida que los modelos continúan escalando, la normalización de capas y sus variantes probablemente seguirán siendo esenciales para lograr una convergencia fiable y un alto rendimiento.