La ventaja clave de usar minibatch en lugar del conjunto de datos completo se remonta a la idea fundamental del descenso de gradiente estocástico 1 .
En el descenso de gradiente por lotes, se calcula el gradiente en todo el conjunto de datos, promediando potencialmente una gran cantidad de información. Se necesita mucha memoria para hacer eso. Pero la desventaja real es la trayectoria del gradiente del lote que te lleva a un mal lugar (punto de silla de montar).
En SGD puro, por otro lado, actualiza sus parámetros agregando (signo menos) el gradiente calculado en una sola instancia del conjunto de datos. Como se basa en un punto de datos aleatorio, es muy ruidoso y puede ir en una dirección lejos del gradiente de lote. Sin embargo, el ruido es exactamente lo que desea en la optimización no convexa, porque lo ayuda a escapar de los puntos de silla de montar o los mínimos locales (Teorema 6 en [2]). La desventaja es que es terriblemente ineficiente y necesita recorrer todo el conjunto de datos muchas veces para encontrar una buena solución.
La metodología del minibatch es un compromiso que inyecta suficiente ruido a cada actualización de gradiente, al tiempo que logra una convergencia relativamente rápida.
1 Bottou, L. (2010). Aprendizaje automático a gran escala con descenso de gradiente estocástico. En Actas de COMPSTAT'2010 (pp. 177-186). Physica-Verlag HD.
[2] Ge, R., Huang, F., Jin, C. y Yuan, Y. (2015, junio). Escaping From Saddle Points-Online Stochastic Gradient for Tensor Decomposition. En COLT (pp. 797-842).
EDITAR:
Acabo de ver este comentario en el facebook de Yann LeCun, que ofrece una nueva perspectiva sobre esta pregunta (lo siento, no sé cómo vincular a fb).
Entrenar con minibatches grandes es malo para tu salud. Más importante aún, es malo para su error de prueba. Los amigos no permiten que los amigos usen minibatches de más de 32. Seamos sinceros: las únicas personas que han cambiado a tamaños de minibatch más grandes que uno desde 2012 es porque las GPU son ineficientes para tamaños de lotes más pequeños que 32. Esa es una razón terrible. Simplemente significa que nuestro hardware apesta.
Citó este documento que acaba de publicarse en arXiv hace unos días (abril de 2018), que vale la pena leer,
Dominic Masters, Carlo Luschi, Revisiting Small Batch Training for Deep Neural Networks , arXiv: 1804.07612v1
Del resumen,
Si bien el uso de mini lotes grandes aumenta el paralelismo computacional disponible, se ha demostrado que el entrenamiento de lotes pequeños proporciona un rendimiento de generalización mejorado ...
El mejor rendimiento se ha obtenido consistentemente para tamaños de mini lotes entre m = 2 ym = 32, lo que contrasta con el trabajo reciente que aboga por el uso de tamaños de mini lotes por miles.