El tamaño del lote define el número de muestras que se propagarán a través de la red.
Por ejemplo, supongamos que tiene 1050 muestras de entrenamiento y desea configurar un batch_size
igual a 100. El algoritmo toma las primeras 100 muestras (del 1 al 100) del conjunto de datos de entrenamiento y entrena la red. Luego, toma las segundas 100 muestras (de la 101 a la 200) y entrena la red nuevamente. Podemos seguir haciendo este procedimiento hasta que hayamos propagado todas las muestras a través de la red. El problema puede ocurrir con el último conjunto de muestras. En nuestro ejemplo, hemos usado 1050 que no es divisible por 100 sin resto. La solución más simple es obtener las 50 muestras finales y capacitar a la red.
Ventajas de usar un tamaño de lote <número de todas las muestras:
Requiere menos memoria. Como entrena la red con menos muestras, el procedimiento de entrenamiento general requiere menos memoria. Eso es especialmente importante si no puede ajustar todo el conjunto de datos en la memoria de su máquina.
Por lo general, las redes entrenan más rápido con mini lotes. Eso es porque actualizamos los pesos después de cada propagación. En nuestro ejemplo, hemos propagado 11 lotes (10 de ellos tenían 100 muestras y 1 tenía 50 muestras) y después de cada uno de ellos hemos actualizado los parámetros de nuestra red. Si usáramos todas las muestras durante la propagación, solo haríamos una actualización para el parámetro de la red.
Desventajas de usar un tamaño de lote <número de todas las muestras:
- Cuanto más pequeño sea el lote, menos precisa será la estimación del gradiente. En la figura siguiente, puede ver que la dirección del gradiente de mini lotes (color verde) fluctúa mucho más en comparación con la dirección del gradiente de lote completo (color azul).
El estocástico es solo un mini-lote con batch_size
igual a 1. En ese caso, el gradiente cambia su dirección aún más a menudo que un gradiente de mini-lote.