Layer Normalization/es
| Article | |
|---|---|
| Topic area | Deep Learning |
| Prerequisites | Backpropagation, Batch Normalization, Stochastic Gradient Descent |
Resumen
La normalización por capas es una técnica que estandariza las activaciones de una capa de una red neuronal calculando la media y la varianza a través de las características de un único ejemplo de entrenamiento, en lugar de hacerlo a través de un lote de ejemplos. Introducida por Jimmy Lei Ba, Jamie Ryan Kiros y Geoffrey Hinton en 2016, fue diseñada para abordar las limitaciones de la Batch Normalization en contextos donde las estadísticas por lote son poco fiables o no están disponibles, como las redes recurrentes y el aprendizaje en línea.[1] Hoy es un componente estándar de casi toda arquitectura Transformer moderna y sustenta los grandes modelos de lenguaje, los transformers de visión y muchos modelos de secuencias.
La motivación es estabilizar el entrenamiento y acelerar la convergencia reduciendo la sensibilidad de las salidas de cada capa a los cambios en las magnitudes de sus entradas. Al renormalizar las activaciones a media cero y varianza unitaria, la normalización por capas mantiene la escala de las señales que se propagan a través de una red profunda dentro de un rango controlado, lo que a su vez mantiene los gradientes bien comportados durante la Backpropagation.
Intuición
Las redes profundas son difíciles de entrenar en parte porque la distribución de las activaciones en cada capa se desplaza a medida que las capas anteriores actualizan sus pesos. Cada capa debe adaptarse continuamente a nuevas estadísticas de entrada, lo que ralentiza el aprendizaje y puede amplificar o atenuar los gradientes de formas patológicas. Las técnicas de normalización atacan este problema fijando explícitamente algunas estadísticas de las activaciones.
Mientras que la Batch Normalization calcula sus estadísticas a través de los ejemplos de un mini-lote, la normalización por capas las calcula a través de las características de un único ejemplo. La diferencia es conceptual pero consecuente: las estadísticas ya no dependen de los demás ejemplos del lote, por lo que la operación es idéntica en entrenamiento e inferencia, se comporta igual independientemente del tamaño de lote y puede aplicarse incluso cuando solo se procesa un ejemplo a la vez. Esta independencia respecto a la composición del lote es lo que la hace adecuada para el cómputo recurrente y para la generación autorregresiva, donde cada token se procesa en secuencia.
Una forma útil de visualizar la operación es imaginar el vector de activaciones en una posición dada de una red y recentrar y reescalar ese vector para que sus componentes tengan media cero y varianza unitaria. Una ganancia aprendida y un sesgo restituyen entonces la libertad del modelo para representar cualquier escala y desplazamiento deseados.
Formulación
Sea $ x \in \mathbb{R}^d $ el vector de activaciones en una capa concreta para un único ejemplo. La normalización por capas calcula primero la media y la varianza sobre las $ d $ componentes:
$ {\displaystyle \mu = \frac{1}{d} \sum_{i=1}^{d} x_i, \qquad \sigma^2 = \frac{1}{d} \sum_{i=1}^{d} (x_i - \mu)^2.} $
Después estandariza cada componente y aplica una transformación afín por elementos parametrizada por los vectores aprendidos $ \gamma, \beta \in \mathbb{R}^d $:
$ {\displaystyle \hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}}, \qquad y_i = \gamma_i \hat{x}_i + \beta_i.} $
La constante $ \epsilon $ (típicamente $ 10^{-5} $ o $ 10^{-6} $) evita la división por cero cuando las activaciones tienen una varianza despreciable. Los parámetros aprendidos $ \gamma $ y $ \beta $ permiten a la red recuperar cualquier transformación afín de las activaciones estandarizadas, incluida la identidad, de modo que la operación no restringe la capacidad representacional de la capa.
Crucialmente, el mismo procedimiento se ejecuta en el entrenamiento y en la inferencia. No hay promedios móviles que rastrear ni cambio de comportamiento cuando el tamaño de lote es uno.
Colocación en arquitecturas modernas
En un bloque Transformer, la normalización por capas se aplica alrededor de cada subcapa (la atención multi-cabeza y la red feed-forward por posición). Son comunes dos convenciones.
La formulación original, a menudo llamada Post-LN, aplica la normalización después de la suma residual: $ \mathrm{LN}(x + \mathrm{Sublayer}(x)) $. Esta fue la utilizada en el artículo original del Transformer.[2] Pre-LN, en cambio, aplica la normalización a la entrada de cada subcapa antes del residuo: $ x + \mathrm{Sublayer}(\mathrm{LN}(x)) $. Se ha demostrado que Pre-LN produce gradientes mejor condicionados en la inicialización y elimina la necesidad de un calentamiento de la tasa de aprendizaje en modelos profundos, y es la opción por defecto en la mayoría de los grandes modelos de lenguaje entrenados hoy en día.[3]
Más allá de los Transformers, la normalización por capas es la opción estándar dentro de las celdas recurrentes (donde estabiliza la recurrencia en cada paso de tiempo), dentro de las redes neuronales sobre grafos (donde las estadísticas por lote pueden ser engañosas porque los tamaños de los grafos varían), y en agentes de aprendizaje por refuerzo (donde los datos llegan en flujos no i.i.d.).
Entrenamiento e inferencia
Dado que las estadísticas de normalización solo dependen de las activaciones del ejemplo actual, la normalización por capas no introduce ninguna discrepancia entre entrenamiento e inferencia. En una implementación típica, la pasada hacia adelante calcula $ \mu $ y $ \sigma^2 $, estandariza $ x $, aplica la transformación afín y almacena los tensores intermedios para la pasada hacia atrás. La pasada hacia atrás propaga los gradientes a través de la normalización mediante una expresión en forma cerrada que tiene en cuenta la dependencia de cada componente de salida respecto a cada componente de entrada a través de la media y la varianza compartidas.
El coste es modesto. Para un tensor de activaciones con $ d $ características, tanto la pasada hacia adelante como la pasada hacia atrás requieren $ O(d) $ trabajo y una sincronización a lo largo de la dimensión de características. En los aceleradores modernos esto suele estar limitado por el ancho de banda de memoria más que por el cómputo, y son habituales las implementaciones fusionadas que combinan la estandarización y la transformación afín en un único kernel.
Las convenciones de inicialización son simples. La ganancia $ \gamma $ se inicializa a uno y el sesgo $ \beta $ a cero, de modo que la capa es inicialmente la identidad (tras la estandarización). Los parámetros se desplazan luego durante el entrenamiento hacia la escala y el desplazamiento que el modelo considere útiles.
Variantes
Varios refinamientos eliminan o reestructuran partes de la formulación original.
RMSNorm (Root Mean Square Layer Normalization) descarta el paso de centrado de la media y el sesgo $ \beta $, normalizando solo por la raíz cuadrada media de las activaciones: $ \hat{x}_i = x_i / \sqrt{\tfrac{1}{d}\sum_j x_j^2 + \epsilon} $.[4] Es computacionalmente más barata y empíricamente iguala o supera a la normalización por capas en muchas tareas de modelado del lenguaje; LLaMA, PaLM y varios otros modelos grandes la adoptan.
ScaleNorm reemplaza la ganancia por elemento por un único escalar, normalizando cada vector a una norma aprendida. FixNorm y variantes similares restringen aún más la normalización para que se sitúe sobre una hiperesfera. DeepNorm reescala la rama residual en los Transformers Post-LN para permitir el entrenamiento de redes con miles de capas.[5]
Group Normalization se sitúa entre la normalización por lote y la normalización por capas: divide la dimensión de características en grupos y normaliza dentro de cada grupo. Con un solo grupo se reduce a la normalización por capas; con tantos grupos como canales se reduce a la normalización por instancia. Se utiliza ampliamente en visión por computador cuando los tamaños de lote pequeños imposibilitan una normalización por lote efectiva.
Comparación con otras normalizaciones
Los cuatro esquemas clásicos de normalización solo difieren en los ejes sobre los que se calculan la media y la varianza.
La Batch Normalization calcula estadísticas a lo largo de la dimensión de lote para cada canal de características. Funciona excepcionalmente bien en modelos de visión convolucionales con lotes grandes, pero se degrada cuando los lotes son pequeños, cuando las estadísticas se desplazan entre el entrenamiento y la inferencia o cuando las secuencias tienen longitud variable.
La normalización por capas calcula estadísticas a lo largo de la dimensión de características para cada ejemplo. No se ve afectada por el tamaño de lote y se comporta de forma idéntica en el entrenamiento y la inferencia, lo que la convierte en la opción dominante para los modelos de secuencias y los Transformers.
La normalización por instancia calcula estadísticas por ejemplo y por canal, normalizando solo sobre las dimensiones espaciales. Es habitual en transferencia de estilo y en modelos generativos de imágenes. La normalización por grupos, mencionada antes, generaliza la familia parametrizando cómo se agrupan los canales antes de la normalización.
Una heurística práctica: prefiere la Batch Normalization para modelos de visión con mini-lotes grandes y distribuciones de entrada estables; prefiere la normalización por capas (o RMSNorm) para modelos de secuencias, Transformers y cualquier escenario en el que la composición del lote sea poco fiable.
Por qué funciona
El artículo original atribuyó la eficacia de la normalización por capas a la misma hipótesis propuesta para la Batch Normalization, a saber, una reducción del desplazamiento de covariables interno. Trabajos posteriores han cuestionado esa explicación. Un análisis influyente mostró que la normalización por lote suaviza el paisaje de optimización mejorando las propiedades de Lipschitz de la pérdida y sus gradientes, un efecto que no requiere ninguna reducción del desplazamiento de covariables.[6] Se han propuesto argumentos análogos para la normalización por capas, con evidencia adicional de que la operación actúa como un regularizador implícito de la norma del gradiente y desacopla la magnitud y la dirección de las activaciones.
Sea cual sea el mecanismo preciso, el efecto empírico es robusto: la normalización por capas hace que el entrenamiento sea más estable, menos sensible a la elección de la tasa de aprendizaje y más tolerante a las arquitecturas profundas.
Limitaciones
La normalización por capas no es gratuita. La reducción a lo largo de la dimensión de características introduce una dependencia serial que es más difícil de paralelizar que una operación puramente puntual, y en hardware limitado por ancho de banda puede convertirse en una fracción no trivial del coste de un bloque Transformer. RMSNorm y simplificaciones similares abordan parcialmente este problema.
La técnica también asume que las características que se normalizan comparten una escala común que debe estandarizarse. En algunas arquitecturas, ciertas características portan información de magnitud significativa que la normalización borra; los parámetros aprendidos $ \gamma $ y $ \beta $ pueden en principio restaurarla, pero la optimización puede tener dificultades para recuperar escalas que nunca ve estandarizadas.
Por último, la normalización por capas sobre tokens con una varianza muy baja puede producir salidas numéricamente inestables incluso con el término $ \epsilon $, en particular en entrenamiento de baja precisión. Las implementaciones de precisión mixta suelen mantener la normalización en sí en una precisión más alta para evitar este modo de fallo.
Véase también
- Batch Normalization
- Group Normalization
- RMSNorm
- Transformer
- Backpropagation
- Stochastic Gradient Descent
Referencias
- ↑ Template:Cite arxiv
- ↑ Template:Cite arxiv
- ↑ Xiong, Yang, et al. On Layer Normalization in the Transformer Architecture, 2020.
- ↑ Template:Cite arxiv
- ↑ Wang et al., DeepNet: Scaling Transformers to 1,000 Layers, 2022.
- ↑ Santurkar et al., How Does Batch Normalization Help Optimization?, NeurIPS 2018.