36 votos

¿Cómo afecta el tamaño de los lotes a la convergencia del SGD y por qué?

He visto una conclusión similar en muchas discusiones, en el sentido de que a medida que el tamaño del minilote aumenta, la convergencia del SGD se hace más difícil/peor, por ejemplo este documento y esta respuesta . También he oído hablar de personas que utilizan trucos como pequeñas tasas de aprendizaje o tamaños de lote en la etapa inicial para abordar esta dificultad con grandes tamaños de lote.

Sin embargo, parece contrario a la intuición, ya que la pérdida media de un minilote puede considerarse una aproximación a la pérdida esperada sobre la distribución de datos, $$\frac{1}{|X|}\sum_{x\in X} l(x,w)\approx E_{x\sim p_{data}}[l(x,w)]$$ Cuanto mayor sea el tamaño del lote, más preciso se supone que será. ¿Por qué en la práctica no es así?


He aquí algunos de mis pensamientos (probablemente erróneos) que tratan de explicar.

Los parámetros del modelo dependen en gran medida unos de otros, cuando el lote se hace demasiado grande afectará a demasiados parámetros a la vez, de tal manera que es difícil que los parámetros alcancen una dependencia inherente estable? (como el problema de desplazamiento interno de las covariables mencionado en el papel de normalización de lotes )

¿O cuando casi todos los parámetros son responsables en cada iteración tenderán a aprender patrones implícitos redundantes, lo que reduce la capacidad del modelo? (Me refiero, por ejemplo, a que en los problemas de clasificación de dígitos algunos patrones deberían ser responsables de los puntos y otros de los bordes, pero cuando esto ocurre cada patrón intenta ser responsable de todas las formas).

¿O es porque cuando el tamaño de los lotes se acerca a la escala del conjunto de entrenamiento, los minilotes ya no pueden considerarse i.i.d de la distribución de datos, ya que habrá una gran probabilidad de minilotes correlacionados?


Actualización
Como se señala en la respuesta de Benoit Sánchez, una razón importante es que los minibatches grandes requieren más cálculos para completar una actualización, y la mayoría de los análisis utilizan una cantidad fija de épocas de entrenamiento para la comparación.

Sin embargo, este documento (Wilson y Martínez, 2003) muestra que un tamaño de lote más grande sigue siendo ligeramente desventajoso, incluso con una cantidad suficiente de épocas de entrenamiento. ¿Es este el caso en general? enter image description here

21voto

Shift Puntos 310

Claro una actualización con un minilote grande es "mejor" (en términos de precisión) que una actualización con un pequeño minilote. Esto se puede ver en la tabla que ha copiado en su pregunta (llamada $N$ el tamaño de la muestra):

  • tamaño del lote 1: número de actualizaciones $27N$
  • tamaño del lote 20.000: número de actualizaciones $8343\times\frac{N}{20000}\approx 0.47N$

Puedes ver que con lotes más grandes necesitas muchas menos actualizaciones para la misma precisión.

Pero no se puede comparar porque no está procesando la misma cantidad de datos. Cito el primer artículo:

"Comparamos el efecto de ejecutar $k$ Iteraciones de SGD con minilotes pequeños $B_j$ frente a una única iteración con un gran minilote $\displaystyle\bigcup_{1\leq j\leq k} B_j$ "

Aquí se trata de procesar la misma cantidad de datos y aunque hay una pequeña sobrecarga para múltiples minilotes, esto requiere recursos de procesamiento comparables.

Hay varias formas de entender por qué es mejor realizar varias actualizaciones (para la misma cantidad de datos que se leen). Es la idea clave del descenso de gradiente estocástico frente al descenso de gradiente. En lugar de leer todo y corregirse al final, se corrige en el camino, haciendo que las siguientes lecturas sean más útiles, ya que se corrige a partir de una mejor suposición. Geométricamente, varias actualizaciones es mejor porque estás dibujando varios segmentos, cada uno en la dirección del gradiente (aproximado) al inicio de cada segmento. mientras que una sola gran actualización es un solo segmento desde el inicio en la dirección del gradiente (exacto). Es mejor cambiar de dirección varias veces aunque la dirección sea menos precisa.

El tamaño de los minilotes es esencialmente la frecuencia de las actualizaciones: cuanto más pequeños sean los minilotes, más actualizaciones habrá. En un extremo (minilotes=conjunto de datos) tenemos el descenso por gradiente. En el otro extremo (minilotes=una línea) se tiene el SGD completo por línea. El SGD por línea es mejor de todos modos, pero los minilotes más grandes son adecuados para una paralelización más eficiente.

Al final del proceso de convergencia, el SGD se vuelve menos preciso que el GD (por lotes). Pero en este punto, las cosas se convierten (normalmente) en una especie de ajuste inútilmente preciso. Aunque se obtiene una función de pérdida ligeramente menor en el conjunto de entrenamiento, no se obtiene un verdadero poder predictivo. Sólo se busca el óptimo muy preciso, pero no sirve de nada. Si la función de pérdida está correctamente regularizada (lo que evita el sobreajuste), no se "sobreajusta" exactamente, sino que se "hiperajusta" inútilmente. Esto se traduce en un cambio no significativo en la precisión del conjunto de pruebas.

7voto

Daniel Puntos 150

Para añadir a la respuesta de Curtis White (y añadir algunas referencias más):

Sí, el SGD funciona como un tipo de regularización. Esto es importante porque, de lo contrario, es difícil explicar por qué las DNN no siempre se ajustan en exceso, porque pueden .

La razón, según tengo entendido, es que el SGD provoca "saltos" en el espacio de los parámetros, por lo que durante el entrenamiento los parámetros no pueden permanecer en un mínimo estrecho, sino en (o cerca de) otros más amplios. Y estos mínimos más amplios aparentemente [1] generalizar mejor (es decir, menos sobreajuste).

Más referencias:

  • Aquí está [2] otro documento que formaliza esto (o lo intenta, no lo he seguido todo, ¡compruébelo usted mismo!)
  • Este documento [3] afirma que hay una fase de "stochastic relaxation, or random diffusion" donde la estocasticidad inherente a la SGD lleva a "maximiz[ation of] the conditional entropy of the layer" .

Ambos dicen que la SGD corresponde a un término de regularización de la entropía.

Sin duda, podría haber otras formas en las que el tamaño del lote influya en la convergencia; ésta es la que yo conozco.


Editar en otra referencia, para mostrar donde la gente en la práctica observa que un tamaño de lote más pequeño mejora la generalización: [5]


[1] Ejemplo: "Una perspectiva bayesiana sobre la generalización y el descenso de gradiente estocástico", Smith, Le, 2018. Del resumen: "We propose that the noise introduced by small mini-batches drives the parameters towards minima whose evidence is large."

[2] "El descenso de gradiente estocástico realiza inferencia variacional, converge a ciclos límite para redes profundas", Chaudhari, Soatto 2017

[3] "Abriendo la caja negra de las redes neuronales profundas a través de la información" Schwartz-Ziv, Tishby, 2017

[4] "Understanding deep learning requires rethinking generalization", C. Zhang, etc. 2016

[5] "On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima", N. S. Keskar et al 2016

1voto

Curtis White Puntos 117

Un tamaño de lote demasiado grande puede impedir la convergencia, al menos cuando se utiliza SGD y se entrena el MLP con Keras. En cuanto a la razón, no estoy 100% seguro de si tiene que ver con el promedio de los gradientes o que las actualizaciones más pequeñas proporcionan una mayor probabilidad de escapar de los mínimos locales.

Ver aquí .

0voto

Skatterbrainz Puntos 121

Por mi experiencia con tensorflow y keras (que se confirma con esto artículo ):

  • Un tamaño de lote más elevado da lugar a una menor precisión
  • La precisión puede mantenerse si se aumenta la tasa de aprendizaje cuando el tamaño del lote es alto

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X