Normalización: BatchNorm y LayerNorm
La normalización es una técnica esencial para estabilizar y acelerar el entrenamiento de redes neuronales profundas. En esta guía aprenderás las dos técnicas más importantes: Batch Normalization y Layer Normalization.
Tabla de contenidos
- Por qué normalizar
- Batch Normalization
- Layer Normalization
- Diferencias clave
- Normalización en CNN
- Normalización en Transformers
- Ejemplo con Keras
- Ejercicios
1. Por qué normalizar
La normalización reduce la variación interna de las activaciones, lo que:
- Acelera el entrenamiento
- Evita explosión o desaparición del gradiente
- Permite usar learning rates más altos
- Mejora la estabilidad del modelo
2. Batch Normalization
BatchNorm normaliza las activaciones usando estadísticas del batch.
layers.BatchNormalization()
Es ideal para CNN y redes densas tradicionales.
3. Layer Normalization
LayerNorm normaliza cada muestra individualmente, no por batch.
layers.LayerNormalization()
Es ideal para Transformers y modelos secuenciales.
4. Diferencias clave
- BatchNorm: depende del batch
- LayerNorm: independiente del batch
- BatchNorm es mejor para CNN
- LayerNorm es mejor para Transformers
5. Normalización en CNN
layers.Conv2D(32, (3,3))
layers.BatchNormalization()
layers.ReLU()
6. Normalización en Transformers
x = layers.MultiHeadAttention(...)(inputs, inputs)
x = layers.LayerNormalization()(x)
7. Ejemplo con Keras
model = tf.keras.Sequential([
layers.Dense(128),
layers.BatchNormalization(),
layers.ReLU(),
layers.Dense(64),
layers.LayerNormalization(),
layers.ReLU()
])
8. Ejercicios
- Explica por qué se usa normalización.
- Define BatchNorm.
- Define LayerNorm.
- Menciona una diferencia clave entre ambas.
- Escribe un ejemplo de normalización en CNN.
# pista batchnorm
"Usa estadísticas del batch."
# pista layernorm
"Normaliza cada muestra individualmente."