TL; DR: un tamaño de lote mini demasiado grande generalmente conduce a una precisión menor .
Para aquellos interesados, aquí hay una explicación.
Hay dos nociones de velocidad:
- Velocidad computacional
- Velocidad de convergencia de un algoritmo.
La velocidad computacional es simplemente la velocidad de realizar cálculos numéricos en hardware. Como dijiste, generalmente es mayor con un tamaño de mini lote más grande. Esto se debe a que las bibliotecas de álgebra lineal usan la vectorización para operaciones de vectores y matrices para acelerarlas, a expensas de usar más memoria. Las ganancias pueden ser significativas hasta cierto punto. Según mi experiencia, hay un punto después del cual solo hay ganancias marginales en velocidad, si las hay. El punto depende del conjunto de datos, el hardware y una biblioteca que se utiliza para cálculos numéricos (debajo del capó).
Pero, no olvidemos que también existe la otra noción de velocidad, que nos dice qué tan rápido converge nuestro algoritmo.
En primer lugar, ¿qué significa que nuestro algoritmo converja? Bueno, depende de nosotros definir y decidir cuándo estamos satisfechos con la precisión o error que obtenemos, calculado en el conjunto de validación. Podemos definirlo por adelantado y esperar a que el algoritmo llegue a ese punto, o podemos monitorear el proceso de entrenamiento y decidir detenerlo cuando el error de validación comience a aumentar significativamente (el modelo comienza a sobreajustar el conjunto de datos). Realmente no deberíamos detenerlo de inmediato, el primer momento en que el error comienza a aumentar, si trabajamos con mini lotes, porque usamos el Descenso de gradiente estocástico, SGD. En el caso de la pendiente de gradiente (lote completo), después de cada época, el algoritmo se establecerá en un mínimo, ya sea local o global. SGD nunca se conforma realmente en un mínimo. Sigue oscilando a su alrededor. Podría continuar indefinidamente
Ahora, después de toda esa teoría, hay una "trampa" a la que debemos prestar atención. Cuando se usa un tamaño de lote más pequeño, el cálculo del error tiene más ruido que cuando usamos un tamaño de lote más grande. Uno diría, bueno, eso es malo, ¿no? La cuestión es que el ruido puede ayudar al algoritmo a saltar de un mínimo local malo y tener más posibilidades de encontrar un mínimo local mejor o, con suerte, el mínimo global.
Por lo tanto, si podemos encontrar una mejor solución más rápidamente usando un tamaño de lote más pequeño en lugar de uno más grande, simplemente con la ayuda del ruido "no deseado", podemos sintonizar entre el tiempo total que tarda nuestro algoritmo en encontrar un producto satisfactorio solución y una mayor precisión.
Lo que quiero decir es que, para una precisión (o error) dada, un tamaño de lote más pequeño puede conducir a un tiempo de entrenamiento total más corto, no más largo, como muchos creen.
O, si decidimos mantener el mismo tiempo de entrenamiento que antes, podríamos obtener una precisión un poco más alta con un tamaño de lote más pequeño, y muy probablemente lo haremos, especialmente si hemos elegido nuestra tasa de aprendizaje de manera adecuada.
Si tiene tiempo, consulte este documento:
Evaluación sistemática de los avances de CNN en ImageNet
Especialmente, consulte "3.7. Tamaño de lote y tasa de aprendizaje", y Figura 8. Verá que los tamaños de mini lotes grandes conducen a una peor precisión , incluso si ajusta la tasa de aprendizaje a una heurística.
En general, el tamaño de lote de 32 es un buen punto de partida, y también debe probar con 64, 128 y 256. Otros valores (más bajos o más altos) pueden estar bien para algunos conjuntos de datos, pero el rango dado es generalmente el mejor para empezar a experimentar con Aunque, por debajo de 32, puede ser demasiado lento debido a una velocidad de cálculo significativamente menor, por no explotar la vectorización en toda su extensión. Si obtiene un error de "falta de memoria", debería intentar reducir el tamaño del mini lote de todos modos.
Por lo tanto, no se trata simplemente de utilizar el tamaño de mini lote más grande posible que se ajuste a la memoria.
Para concluir y responder a su pregunta, un tamaño de mini lote más pequeño (no demasiado pequeño) generalmente conduce no solo a un número menor de iteraciones de un algoritmo de entrenamiento, que a un tamaño de lote grande, sino también a una mayor precisión general, es decir, Una red neuronal que funciona mejor, en la misma cantidad de tiempo de entrenamiento o menos.
No olvide que el ruido más alto puede ayudarlo a salir de un mínimo local malo, en lugar de dejarlo atrapado.