Mini-batch Gradient Descent

Otra alternativa es la que ofrece la versión Mini-batch: si hacer pasar todos los datos en cada iteración exige demasiados recursos (aunque devuelva el resultado más exacto del gradiente) y hacer pasar tan solo una muestra es la solución más rápida, aunque el resultado del cálculo del gradiente solo sea una aproximación al valor real ¿por qué no plantearse una solución intermedia y calcular el gradiente cada n muestras?

Mini-batch Gradient Descent hace exactamente esto: calcula el gradiente no a partir de todo el conjunto de entrenamiento ni a partir de una única muestra, sino a partir de un pequeño subconjunto aleatorio de muestras llamadas mini-batches. Normalmente, este algoritmo tarda menos en alcanzar el mínimo que Stochastic Gradient Descent pero corre el riesgo de caer en un mínimo local y no ser capaz de salir de él. El valor n suele denominarse batch size.

Tengamos en cuenta, en todo caso, que esta aproximación "mini-batch" suele recibir el nombre de "estocástica" aun cuando involucre más de una muestra por iteración. En otras palabras, cuando leamos el término "Stochastic Gradient Descent" deberemos tener en cuenta que, muy probablemente, se refiera a un algoritmo que calcula el gradiente de la función de error cada n muestras, siendo este valor n configurable (y pudiendo tomar también el valor 1, por supuesto).