Inicio · Parte 15 — Matemática de Deep Learning
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
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.
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 ✗
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
capasneuronas_por_capaescala_muy_pequeña_0.01_tanhxavier_tanh_(1/√n)he_relu_(√(2/n))escala_muy_grande_1.0_tanhxavierheinicializar_en_cerosemilla{
"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
]
}
Entrenamiento de redes profundas, diagnóstico de entrenamientos que no arrancan, diseño de arquitecturas nuevas y transferencia de aprendizaje.
Toda arquitectura moderna, incluido el Transformer, se construye sobre estos bloques y sobre este mismo mecanismo de derivación.
10.48550/arxiv.1502.01852 verificado en DataCite (2026-08-19).