Inicio · Parte 12 — Optimización matemática y computacional
∇f ≈ (1/|B|)·Σ_{i∈B} ∇fᵢ
E[gradiente de lote] = gradiente completo
varianza del estimador ∝ 1/|B|
El gradiente exacto de una función de pérdida sobre un millón de ejemplos requiere recorrer el millón. El descenso estocástico observa que un subconjunto pequeño ya da una estimación insesgada del gradiente, y que con el mismo presupuesto de cómputo se pueden dar muchísimas más actualizaciones aunque cada una sea ruidosa.
El intercambio es favorable en la práctica. Mil actualizaciones aproximadas avanzan más que una exacta, porque el error de la estimación se promedia a lo largo de las iteraciones mientras que el progreso se acumula. Ese es el resultado empírico que hizo viable el aprendizaje profundo a escala.
El ruido tiene además un efecto beneficioso que no es un accidente. Las fluctuaciones del gradiente estocástico permiten escapar de puntos de silla y de mínimos locales estrechos, y hay evidencia de que sesgan la solución hacia mínimos anchos, que generalizan mejor. Un gradiente perfecto no siempre es lo deseable.
El tamaño de lote es el mando que regula el compromiso. Lotes grandes dan gradientes precisos, aprovechan mejor la GPU y permiten más paralelismo, pero pierden el efecto regularizador del ruido y suelen necesitar ajustar el learning rate al alza. Lotes pequeños son ruidosos y lentos por muestra, pero exploran más. No hay valor universal.
Ajuste de dos parámetros con 100 datos, mismo presupuesto.
parámetros reales: [2,0 ; 3,0]
lote completo (200 épocas):
estimación = [2,038924 ; 2,996817]
MSE = 0,094537
gradientes evaluados: 20 000
SGD con 1 muestra (200 épocas):
estimación = [2,142997 ; 2,967811]
gradientes evaluados: 20 000
Con el mismo número de evaluaciones, el lote completo
da 200 actualizaciones y SGD da 20 000.
SGD llega a una solución comparable con actualizaciones
mucho más baratas, y su trayectoria es visiblemente ruidosa.
SGD: gradiente ruidoso, progreso más barato.
python classes/part-12-optimizacion-matematica-y-computacional/245-stochastic-gradient-descent/lab.py
compmath run 245
datosparametros_realesbatch_completoMSE_batchgradientes_evaluados_batchsgd_1_muestraMSE_sgdgradientes_evaluados_sgdahorro_de_computoel_ruido_ayuda{
"datos": 100,
"parametros_reales": [
2.0,
3.0
],
"batch_completo": [
2.038924,
2.996817
],
"MSE_batch": 0.09453652,
"gradientes_evaluados_batch": 20000,
"sgd_1_muestra": [
2.142997,
2.967811
]
}
Entrenamiento de redes profundas, aprendizaje en línea, sistemas de recomendación y cualquier ajuste con conjuntos de datos grandes.
AdamW es el optimizador por defecto del entrenamiento moderno; entender su actualización explica el weight decay, el warmup y el gradient clipping.
10.1137/16m1080173 verificado en Crossref (2026-08-19).10.1214/aoms/1177729586 verificado en Crossref (2026-08-19).