🧮 Computational Mathematics

Inicio · Parte 15 — Matemática de Deep Learning

307 — Inicialización de pesos

deep-learning clase 7 de 20 4 horas demostración weight_initialization

Con escala 0,01 las activaciones mueren en ocho capas; con escala 1,0 se saturan.

Fórmulas

Xavier: Var(W) = 1/n_in   (tanh, sigmoide)
He: Var(W) = 2/n_in   (ReLU)
todos los pesos iguales ⟹ todas las neuronas aprenden lo mismo

Desarrollo

Inicializar los pesos parece trivial y decide si una red profunda entrena o no. El criterio es mantener estable la varianza de las activaciones al atravesar capas: si cada capa la reduce, las señales se apagan; si la amplifica, se saturan o desbordan.

La demostración numérica es contundente. Con escala 0,01 y ocho capas, la desviación de las activaciones cae de 0,009 a 1e-8 y luego a cero exacto: la señal ha desaparecido y no hay gradiente que propagar. Con escala 1,0 ocurre lo contrario con tanh: las activaciones se pegan a ±1, la derivada se anula y el gradiente tampoco fluye.

Xavier deriva la escala 1/√n imponiendo que la varianza se conserve, y funciona con activaciones simétricas como tanh. He ajusta a √(2/n) porque ReLU anula la mitad de las activaciones y hay que compensar ese factor 2. Son las dos inicializaciones por defecto y la elección se sigue de la activación, no del gusto.

Hay una condición previa que ninguna fórmula cubre: romper la simetría. Si todos los pesos de una capa se inicializan al mismo valor, todas las neuronas calculan lo mismo, reciben el mismo gradiente y siguen siendo idénticas para siempre. La capa entera equivale a una sola neurona. Por eso se inicializa al azar, y por eso los sesgos sí pueden empezar en cero: la simetría ya está rota por los pesos.

Ejemplo trabajado

Desviación de las activaciones en capas 1, 4 y 8.

8 capas de 100 neuronas

escala 0,01 con tanh:
  [0,00933503 ; 1e-08 ; 0,0]
  las activaciones se apagan por completo            ✗

Xavier (1/√n) con tanh:
  [0,36236997 ; 0,13964668 ; 0,08762870]
  decae despacio, sigue habiendo señal                ✓

He (√(2/n)) con ReLU:
  [0,67589597 ; 0,76192729 ; 0,62293017]
  varianza estable en las ocho capas                  ✓

escala 1,0 con tanh:
  [0,84424669 ; 0,85537312 ; 0,92118981]
  saturación: casi todo en ±1, derivada nula          ✗

Qué calcula el laboratorio

Xavier y He: controlar la varianza de las activaciones capa a capa.

python classes/part-15-matematica-de-deep-learning/307-inicializacion-de-pesos/lab.py
compmath run 307

Salidas del laboratorio (10)

Muestra de la ejecución real

{
  "capas": 8,
  "neuronas_por_capa": 100,
  "escala_muy_pequeña_0.01_tanh": [
    0.00933503,
    1e-08,
    0.0
  ],
  "xavier_tanh_(1/√n)": [
    0.36236997,
    0.13964668,
    0.0876287
  ],
  "he_relu_(√(2/n))": [
    0.67589597,
    0.76192729,
    0.62293017
  ],
  "escala_muy_grande_1.0_tanh": [
    0.84424669,
    0.85537312,
    0.92118981
  ]
}

Errores comunes

Dónde se usa

Entrenamiento de redes profundas, diagnóstico de entrenamientos que no arrancan, diseño de arquitecturas nuevas y transferencia de aprendizaje.

Idea rectora de la parte

Sin no linealidad, apilar capas sigue siendo una única transformación lineal.

Error a evitar

Inicializar todos los pesos iguales y romper la simetría nunca.

Conexión con IA

Toda arquitectura moderna, incluido el Transformer, se construye sobre estos bloques y sobre este mismo mecanismo de derivación.

Bibliografía de la clase

Archivos de la clase