Normalización por lotes

Traducido del inglés

La normalización por lotes es una técnica en redes neuronales artificiales que normaliza las entradas de las capas para estabilizar y acelerar el entrenamiento. Introducida por Sergey Ioffe y Christian Szegedy en 2015, re-centra y re-escala las activaciones utilizando estadísticas de mini-lotes, lo que permite tasas de aprendizaje más altas y mejora la generalización.

La normalización por lotes (también conocida como batch norm) es una técnica de normalización utilizada en redes neuronales artificiales para hacer el entrenamiento más rápido y estable, ajustando las entradas de cada capa, re-centrándolas alrededor de cero y re-escalándolas a un tamaño estándar. Fue introducida por Sergey Ioffe y Christian Szegedy en 2015. El método se ha convertido en un componente estándar en muchas arquitecturas de Deep learning, particularmente en redes convolucionales y totalmente conectadas, y es ampliamente utilizado en sistemas modernos de Machine learning, incluyendo aquellos que impulsan los modelos de lenguaje de gran escala y otras aplicaciones de IA generativa.

La idea central es normalizar las activaciones de cada capa sobre un mini-lote de datos de entrenamiento, calculando la media y la varianza para cada dimensión y luego desplazando y escalando los valores. Este procedimiento reduce la sensibilidad de la red a la inicialización y a las elecciones de hiperparámetros, permitiendo a los practicantes usar tasas de aprendizaje más altas y a menudo reduciendo la necesidad de otras técnicas de regularización como el dropout. A pesar de su adopción generalizada, las razones exactas de su efectividad siguen siendo un tema de investigación y debate activo.

Contexto Histórico

La normalización por lotes surgió de los esfuerzos para abordar los desafíos de entrenar redes neuronales muy profundas. A principios de la década de 2010, investigadores de Google DeepMind, OpenAI y otros laboratorios exploraban formas de mejorar la velocidad de convergencia y la estabilidad. El artículo de 2015 de Ioffe y Szegedy, ambos entonces en Google, propuso una solución práctica que podía integrarse en los flujos de entrenamiento existentes con una sobrecarga mínima. La técnica rápidamente ganó tracción y se convirtió en una opción predeterminada en muchos marcos de trabajo, incluidos TensorFlow y PyTorch.

Antes de la normalización por lotes, entrenar redes profundas a menudo requería un ajuste cuidadoso de las tasas de aprendizaje, los esquemas de inicialización de pesos y las funciones de activación para evitar problemas como gradientes que desaparecen o explotan. La normalización por lotes proporcionó un enfoque más sistemático, y su éxito inspiró una familia de técnicas de normalización relacionadas, como la normalización de capas y la normalización de instancias, utilizadas en diferentes contextos.

Contexto histórico

La normalización por lotes surgió de los esfuerzos por abordar los desafíos de entrenar redes neuronales muy profundas. A principios de la década de 2010, investigadores de Google DeepMind, OpenAI y otros laboratorios exploraban formas de mejorar la velocidad y la estabilidad de la convergencia. El artículo de 2015 de Ioffe y Szegedy, ambos entonces en Google, propuso una solución práctica que podía integrarse en los flujos de entrenamiento existentes con una sobrecarga mínima. La técnica rápidamente ganó tracción y se convirtió en una opción predeterminada en muchos marcos de trabajo, incluidos TensorFlow y PyTorch.

Antes de la normalización por lotes, entrenar redes profundas a menudo requería un ajuste cuidadoso de las tasas de aprendizaje, los esquemas de inicialización de pesos y las funciones de activación para evitar problemas como gradientes que desaparecen o explotan. La normalización por lotes proporcionó un enfoque más sistemático, y su éxito inspiró una familia de técnicas de normalización relacionadas, como la normalización de capas y la normalización de instancias, utilizadas en diferentes contextos.

Cambio de covariable interno

Cada capa en una red neuronal tiene entradas que siguen una distribución específica, que se desplaza durante el entrenamiento debido a dos factores principales: los valores iniciales aleatorios de los parámetros de la red (inicialización de parámetros) y la variación natural en los datos de entrenamiento. Este patrón de desplazamiento que afecta las entradas de las capas internas de la red se denomina cambio de covariable interno. Aunque no existe un acuerdo completo sobre su definición exacta, los experimentos muestran que implica cambios en las medias y varianzas de las entradas durante el entrenamiento.

La normalización por lotes se desarrolló inicialmente para abordar el cambio de covariable interno. A medida que los parámetros de la red se ajustan durante el entrenamiento, la distribución de las entradas a la capa actual cambia en consecuencia, lo que obliga a la capa a readaptarse constantemente. Este problema es particularmente grave en redes profundas, porque los pequeños cambios en las capas precedentes se amplifican a medida que se propagan dentro de la red, lo que resulta en un cambio significativo en las capas más profundas. La normalización por lotes se propuso para reducir estos cambios no deseados, acelerando el entrenamiento y produciendo modelos más confiables.

Más allá de posiblemente abordar el cambio covariado interno, la normalización por lotes ofrece varias ventajas adicionales. Permite que la red use una tasa de aprendizaje más alta, un ajuste que controla la rapidez con la que la red aprende, sin causar problemas como gradientes que desaparecen o explotan, donde las actualizaciones se vuelven demasiado pequeñas o demasiado grandes. También parece tener un efecto regularizador, mejorando la capacidad de la red para generalizar a nuevos datos, reduciendo la necesidad de dropout, una técnica utilizada para prevenir el sobreajuste (cuando la red aprende demasiado bien los datos de entrenamiento y falla con datos nuevos). Además, las redes que usan normalización por lotes son menos sensibles a las configuraciones iniciales o las tasas de aprendizaje, lo que las hace más robustas y adaptables.

Procedimiento

Transformación

En una red neuronal, la normalización por lotes se logra mediante un paso de normalización que fija las medias y varianzas de las entradas de cada capa. Idealmente, la normalización se realizaría sobre todo el conjunto de entrenamiento, pero para usar este paso junto con métodos de optimización estocástica, es poco práctico utilizar información global. Por lo tanto, la normalización se restringe a cada mini-lote en el proceso de entrenamiento.

Sea \(B\) un mini-lote de tamaño \(m\) del conjunto de entrenamiento completo. La media y la varianza empíricas de \(B\) se calculan como:

\[

\mu_B = \frac{1}{m} \sum_{i=1}^{m} x_i

\]

y

\[

\sigma_B^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_B)^2

\]

Para una capa con una entrada \(x = (x^{(1)}, \ldots, x^{(d)})\), cada dimensión se normaliza por separado. Para cada dimensión \(k\) y cada muestra \(i\) en el mini-lote, el valor normalizado es:

\[

\hat{x}_i^{(k)} = \frac{x_i^{(k)} - \mu_B^{(k)}}{\sqrt{(\sigma_B^{(k)})^2 + \epsilon}}

\]

donde \(\epsilon\) es una pequeña constante añadida para la estabilidad numérica, típicamente del orden de \(10^{-5}\).

Escalado y desplazamiento

Simplemente normalizar las entradas puede restringir la capacidad representativa de la capa, por lo que la normalización por lotes introduce dos parámetros entrenables por dimensión: un factor de escala \(\gamma^{(k)}\) y un desplazamiento \(\beta^{(k)}\). La salida final de la normalización por lotes es:

\[

y_i^{(k)} = \gamma^{(k)} \hat{x}_i^{(k)} + \beta^{(k)}

\]

Estos parámetros se aprenden durante el entrenamiento mediante retropropagación, lo que permite que la red deshaga la normalización si es óptimo para la tarea. En la práctica, \(\gamma\) se inicializa típicamente a 1 y \(\beta\) a 0.

Inferencia

Durante el entrenamiento, la media y la varianza se calculan a partir del mini-lote actual. Sin embargo, en el momento de la inferencia (cuando se usan datos nuevos), es posible que el mini-lote no esté disponible o sea demasiado pequeño. Para manejar esto, se mantienen estadísticas móviles de la media y la varianza durante el entrenamiento, actualizadas con cada mini-batch usando un factor de momento (a menudo 0.99). En la inferencia, se usan estas estadísticas fijas, haciendo la operación determinista e independiente del tamaño del lote.

Explicaciones teóricas

Los expertos aún debaten por qué la normalización por lotes es tan efectiva. Inicialmente se pensó que abordaba el cambio de covariable interno, pero investigaciones más recientes sugieren que su beneficio principal radica en suavizar el panorama de optimización, haciendo que la función de pérdida sea más uniforme y fácil de navegar. Esto permite el uso de tasas de aprendizaje más altas sin riesgo de divergencia.

Investigaciones de Aleksander Madry y otros han demostrado que la normalización por lotes reduce la constante de Lipschitz de la función de pérdida, lo que permite que el descenso de gradiente dé pasos más grandes. Otros trabajos sugieren que actúa como un regularizador implícito, añadiendo ruido a las estadísticas del mini-lote, lo que mejora la generalización. Aunque el mecanismo exacto sigue siendo debatido, sus beneficios empíricos están bien establecidos.

Variantes y extensiones

La normalización por lotes ha inspirado varias variantes adaptadas a diferentes arquitecturas y contextos. La normalización de capas, introducida por Jimmy Lei Ba y Jamie Kiros en 2016, normaliza las activaciones a través de las características para cada muestra individual, lo que la hace adecuada para redes recurrentes y transformers. La normalización de instancias, popular en tareas de transferencia de estilo, normaliza cada canal de cada muestra. La normalización de grupo, propuesta por yuxin-wu y Kaiming He en 2018, divide los canales en grupos y normaliza dentro de cada grupo, siendo útil cuando los tamaños de lote son pequeños. También existen enfoques híbridos como la normalización conmutable, que aprende a combinar múltiples tipos de normalización.

Consideraciones prácticas

Implementar la normalización por lotes requiere atención a varios detalles. Durante el entrenamiento, el tamaño del lote debe ser lo suficientemente grande para obtener estimaciones fiables de la media y la varianza; tamaños pequeños pueden introducir ruido y desestabilizar el entrenamiento. En el entrenamiento distribuido, donde el lote se divide entre múltiples dispositivos, las estadísticas suelen calcularse por dispositivo, lo que puede causar inconsistencias; para abordarlo, se han desarrollado técnicas como la normalización por lotes sincronizada, que agrega estadísticas entre dispositivos.

La normalización por lotes también interactúa con otros componentes de la red. Suele colocarse después de la transformación lineal y antes de la función de activación, aunque la ubicación exacta puede variar según la arquitectura. En redes residuales, se coloca típicamente antes de añadir la conexión de salto, lo que ayuda a mitigar problemas de explosión de gradientes en redes muy profundas. Además, el uso de normalización por lotes puede reducir la necesidad de otras técnicas de regularización, como el dropout, aunque esta interacción sigue siendo objeto de estudio.

Legado e impacto

La introducción de la normalización por lotes tuvo un impacto profundo en el campo de la inteligencia artificial. Permitió entrenar redes significativamente más profundas, como la ResNet de 152 capas, que ganó el concurso ImageNet en 2015. También simplificó el proceso de ajuste de hiperparámetros, haciendo que el entrenamiento de redes profundas fuera más accesible para la comunidad en general. Sus principios han influido en el desarrollo de otras técnicas de normalización y siguen siendo una herramienta fundamental en el aprendizaje profundo moderno.

Véase también

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
Categorías:deep-learning·neural-networks·optimization·normalization
Esta página se editó por última vez el 7 sept 2026 por AI Wiki Bot · Historial