Elegir un tamaño de minibatch apropiado para el descenso de gradiente estocástico (SGD)

13

¿Existe alguna literatura que examine la elección del tamaño del minibatch al realizar el descenso de gradiente estocástico? En mi experiencia, parece ser una opción empírica, que generalmente se encuentra a través de la validación cruzada o el uso de diferentes reglas generales.

¿Es una buena idea aumentar lentamente el tamaño del minibatch a medida que disminuye el error de validación? ¿Qué efectos tendría esto en el error de generalización? ¿Estoy mejor usando un minibatch extremadamente pequeño y actualizando mi modelo cientos de miles de veces? ¿Estaría mejor con un número equilibrado en algún lugar entre extremadamente pequeño y por lotes?
¿Debo escalar el tamaño de mi minibatch con el tamaño del conjunto de datos o el número esperado de características dentro del conjunto de datos?

Obviamente tengo muchas preguntas sobre la implementación de esquemas de aprendizaje de minibatch. Desafortunadamente, la mayoría de los trabajos que leo no especifican realmente cómo eligieron este hiperparámetro. He tenido cierto éxito de autores como Yann LeCun, especialmente de la colección de artículos Tricks of the Trade. Sin embargo, todavía no he visto estas preguntas completamente abordadas. ¿Alguien tiene alguna recomendación para los documentos o consejos sobre qué criterios puedo usar para determinar buenos tamaños de minibatch cuando intento aprender las características?

Jason_L_Bens
fuente
Parece que no estoy recibiendo muchos éxitos sobre este tema. ¿Existe un mejor sitio de intercambio de pila para hacer preguntas de aprendizaje automático o aprendizaje profundo como este?
Jason_L_Bens

Respuestas:

6

La teoría de la efectividad de SGD se elaboró ​​en actualizaciones de ejemplo único (es decir, tamaño de minibatch 1), por lo que teóricamente no es necesario utilizar minibatches más grandes. Tiene dos ventajas prácticas:

Una , si el cálculo puede ser vectorizado, es posible que pueda calcular gradientes para un minibatch pequeño> 1 casi igual de rápido, lo que lleva a aumentos significativos de velocidad en el entrenamiento.

En este caso, el tamaño óptimo del minibatch es una función del hardware particular y la implementación con la que está trabajando, por lo que probablemente sea mejor experimentar para encontrar el punto óptimo.

Dos , calcular el gradiente en un tamaño de minibatch> 1 conducirá a gradientes más precisos y a pasos más óptimos. Pero este beneficio llegará y se nivelará rápidamente una vez que el tamaño del minibatch aumente más allá de 1, por lo que puede centrarse principalmente en el primer objetivo.

David Kelley
fuente