El descenso de gradiente tiene tres variantes según cuántos datos uses para calcular cada paso: por lotes (todos), estocástico (uno) y mini-batch (un grupo intermedio). La regla de actualización es la misma en las tres, $\mathbf{w} \leftarrow \mathbf{w}-\eta\cdot\nabla L$, pero la cantidad de ejemplos que entra en ese gradiente cambia por completo la velocidad, la memoria y el ruido del entrenamiento. Esta guía compara las tres opciones, explica de dónde sale el ruido y por qué el mini-batch con lotes de 32 a 256 muestras se ha impuesto como estándar. La misma explicación está disponible en inglés.

Fórmula clave $\mathbf{w} \leftarrow \mathbf{w}-\eta\cdot\nabla L$

Puntos clave

  • El descenso de gradiente por lotes calcula el gradiente con todo el conjunto de entrenamiento antes de dar un paso: preciso pero lento y caro en memoria.
  • El descenso de gradiente estocástico (SGD) actualiza los pesos tras cada muestra: mil veces más pasos, mucho ruido y una trayectoria en zigzag hacia el mínimo.
  • El mini-batch promedia el gradiente sobre un grupo pequeño, habitualmente de 32 a 256 ejemplos, y reúne lo mejor de las dos ideas anteriores.
  • El tamaño de lote (batch size) es un hiperparámetro: lotes pequeños dan más ruido y mejor generalización; lotes grandes convergen suave pero pueden estancarse en mínimos peores.
  • El ruido no es solo un defecto: ayuda a escapar de mínimos locales, por eso el SGD y el mini-batch generalizan mejor que el descenso por lotes puro.

Descenso de gradiente por lotes (batch)

El descenso de gradiente por lotes es la versión de manual. En cada iteración recorre las $N$ muestras del conjunto de entrenamiento, calcula el gradiente medio de la pérdida y da un único paso: $\mathbf{w} \leftarrow \mathbf{w}-\eta\cdot\nabla L_{\text{batch}}$. Como resume el libro Deep Learning[1] de Goodfellow, Bengio y Courville, este gradiente completo es el estimador más fiel de la dirección de descenso, porque promedia el error sobre todos los datos disponibles.

El problema es el coste. Si tienes 50.000 ejemplos, cada paso obliga a procesarlos los 50.000 antes de mover un solo peso. Con conjuntos de millones de muestras eso es inviable: una sola actualización tardaría minutos y el conjunto entero quizá no quepa en memoria. La trayectoria hacia el mínimo es suave y directa, pero das poquísimos pasos por hora. Para los problemas grandes de hoy, esa suavidad sale demasiado cara. Esta regla es la misma que vimos en derivadas parciales y el gradiente, solo que aquí decidimos sobre cuántos datos se promedia.

Descenso de gradiente estocástico (SGD)

El descenso de gradiente estocástico va al otro extremo: usa una sola muestra elegida al azar para estimar el gradiente y actualiza los pesos de inmediato. Con 50.000 ejemplos, una pasada completa por los datos (una época) produce 50.000 actualizaciones en lugar de una. El modelo empieza a mejorar desde el primer instante, sin esperar a ver todo el conjunto.

El precio es el ruido. El gradiente de una única muestra es una estimación muy imprecisa del gradiente real, así que la trayectoria hacia el mínimo hace un zigzag constante en vez de una línea limpia. Ese vaivén tiene una ventaja inesperada: las sacudidas ayudan a saltar fuera de mínimos locales poco profundos, algo que el descenso por lotes, demasiado ordenado, no consigue. El término «estocástico» significa precisamente eso, que introducimos azar en el proceso. La página de la Wikipedia sobre stochastic gradient descent[2] recoge la historia del método, que se remonta a la regla de Robbins y Monro de 1951.

Mini-batch, el equilibrio práctico

El mini-batch es el punto medio, y el que usan casi todos los sistemas reales. En lugar de un ejemplo o de todos, tomamos un grupo pequeño (el lote) y promediamos su gradiente antes de actualizar. Con un lote de 128 muestras sobre 50.000 ejemplos, una época da unas 390 actualizaciones: muchas más que el descenso por lotes, mucho menos ruidosas que el SGD puro.

Este equilibrio tiene dos ventajas prácticas. Primera, el gradiente promediado sobre 32 o 128 muestras es bastante más estable que el de una sola, así que la convergencia es más limpia. Segunda, y decisiva, los lotes encajan de maravilla con el hardware: una GPU multiplica todas las muestras del lote en paralelo, con el mismo cálculo matricial de la multiplicación de matrices en redes neuronales. Por eso, cuando alguien dice hoy «SGD», casi siempre se refiere en realidad al mini-batch. La guía de referencia de Sebastian Ruder sobre optimización del gradiente[3] trata las tres variantes bajo ese mismo paraguas.

El tamaño de lote (batch size)

El tamaño de lote es el hiperparámetro que gobierna todo este equilibrio, y casi siempre se elige entre 32 y 256, en potencias de dos para alinearlo con la memoria de la GPU. No es una cifra mágica, sino un compromiso.

Lotes pequeños (16, 32) meten más ruido en cada paso, consumen poca memoria y, curiosamente, suelen generalizar mejor: el ruido actúa como una regularización suave. Lotes grandes (512, 1.024 o más) dan gradientes muy estables y usan mejor la GPU por paso, pero necesitan mucha memoria y tienden a caer en mínimos «afilados» que generalizan peor con datos nuevos. Sobre este punto, Yann LeCun resumió la intuición del campo con una frase célebre: «entrenar con lotes grandes es malo para tu salud y, sobre todo, malo para tu error de test; los amigos no dejan que sus amigos usen lotes mayores de 32». La cifra concreta se discute, pero la dirección es clara: en la duda, empieza pequeño.

Ruido y convergencia

La palabra que conecta las tres variantes es ruido, y conviene entenderlo bien. El gradiente «verdadero» es el del descenso por lotes; cualquier estimación con menos datos añade error aleatorio. El SGD tiene el máximo ruido (una muestra), el mini-batch un ruido intermedio y el descenso por lotes, ninguno.

Ese ruido cambia la forma de converger. Con SGD o mini-batch, la pérdida no baja de forma perfectamente monótona: oscila mientras desciende, y cerca del mínimo se queda dando vueltas en una región pequeña en lugar de detenerse en el punto exacto. Para afinar el final se suele reducir el paso de aprendizaje $\eta$ con el tiempo (learning rate schedule), de modo que los saltos se acorten cuando ya estamos cerca. La regla básica $\mathbf{w} \leftarrow \mathbf{w}-\eta\cdot\nabla L$ sigue siendo la de siempre; lo único que cambia entre lote, muestra y mini-batch es sobre cuántos ejemplos se estima ese $\nabla L$, como parte del recorrido del mapa de las matemáticas de las redes neuronales.

Cuando hoy alguien dice «SGD» casi siempre se refiere al mini-batch: la actualización $\mathbf{w} \leftarrow \mathbf{w}-\eta\cdot\nabla L$ se aplica sobre el gradiente promediado en un lote, no sobre una única muestra.

Preguntas frecuentes

¿En qué se diferencian el descenso por lotes, el SGD y el mini-batch?

En cuántas muestras usan para estimar cada gradiente. El descenso por lotes usa todo el conjunto de entrenamiento, el descenso de gradiente estocástico usa una sola muestra y el mini-batch usa un grupo intermedio, casi siempre de 32 a 256 ejemplos. La regla de actualización $\mathbf{w} \leftarrow \mathbf{w}-\eta\cdot\nabla L$ es idéntica en los tres; solo cambia el tamaño de la muestra sobre la que se promedia.

¿Qué tamaño de lote debería usar?

Como punto de partida, un valor entre 32 y 256, en potencias de dos para encajar con la memoria de la GPU. Si tu modelo generaliza mal, prueba a bajar el lote para introducir más ruido; si el entrenamiento va muy lento y tienes memoria de sobra, súbelo. No existe un óptimo universal: depende del modelo, los datos y el hardware.

¿Por qué el ruido del SGD puede ser beneficioso?

Porque las oscilaciones ayudan a saltar fuera de mínimos locales poco profundos y de puntos de silla donde un método sin ruido se quedaría atascado. Ese mismo ruido actúa además como una regularización suave que mejora la generalización, y es una de las razones por las que el mini-batch supera en la práctica al descenso por lotes puro.

Conclusión

El descenso de gradiente por lotes es preciso pero lento, el estocástico es rápido pero ruidoso, y el mini-batch equilibra ambos con lotes de 32 a 256 muestras que encajan con la GPU. La regla $\mathbf{w} \leftarrow \mathbf{w}-\eta\cdot\nabla L$ no cambia; lo que decides es sobre cuántos datos calculas ese paso. El siguiente paso natural es ver cómo se refina el propio paso con métodos como momentum y Adam, dentro del mapa de las matemáticas de las redes neuronales.

Fuentes

  1. Deep Learning
  2. Wikipedia sobre stochastic gradient descent
  3. Sebastian Ruder sobre optimización del gradiente

Ruta: Entrenamiento: descenso de gradiente y retropropagación