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

18

He visto conclusiones similares en muchas discusiones, que a medida que el tamaño del minibatch aumenta, la convergencia de SGD en realidad se vuelve 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 promedio de un minibatch puede considerarse como una aproximación a la pérdida esperada sobre la distribución de datos,

1El |XEl |XXl(X,w)miXpagreuntun[l(X,w)]
mayor sea el tamaño del lote, más preciso se supone que sea. ¿Por qué en la práctica no es el caso?


Estos son algunos de mis pensamientos (probablemente incorrectos) que intentan explicar.

Los parámetros del modelo dependen mucho el uno del otro, cuando el lote se hace demasiado grande afectará demasiados parámetros a la vez, de modo que es difícil para los parámetros alcanzar una dependencia inherente estable. (como el problema interno de cambio de covariable mencionado en el documento de normalización por lotes )

¿O cuando casi todos los parámetros son responsables en cada iteración, tenderán a aprender patrones implícitos redundantes y, por lo tanto, reducirán la capacidad del modelo? (Quiero decir, para problemas de clasificación de dígitos, algunos patrones deberían ser responsables de los puntos, algunos de los bordes, pero cuando esto sucede, 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 minibatches ya no pueden verse como iid de la distribución de datos, ya que habrá una gran probabilidad de minibatches correlacionados?


Actualización
Como se señaló en la respuesta de Benoit Sánchez, una razón importante es que los minibatches grandes requieren más cómputo 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 todavía es ligeramente desventajoso, incluso dada la cantidad suficiente de épocas de entrenamiento. ¿Es ese generalmente el caso? ingrese la descripción de la imagen aquí

dontloo
fuente

Respuestas:

12

norte

  • 27norte
  • 8343×norte200000,47norte

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

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

ksij1jksij

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

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

El tamaño de los mini lotes es esencialmente la frecuencia de las actualizaciones: los minibatches más pequeños son las más actualizaciones. En un extremo (minibatch = conjunto de datos) tiene pendiente de gradiente. En el otro extremo (minibatch = una línea) tiene SGD completo por línea. El SGD por línea es mejor de todos modos, pero los minibatches 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 (lote) GD. Pero en este punto, las cosas se convierten (generalmente) en una especie de ajuste inútilmente preciso. Si bien obtienes una función de pérdida ligeramente menor en el conjunto de entrenamiento, no obtienes un poder predictivo real. Solo está buscando el óptimo muy preciso, pero no ayuda. Si la función de pérdida está correctamente regularizada (lo que evita el sobreajuste), usted no "ajusta" exactamente, simplemente "ajusta" inútilmente. Esto se muestra como un cambio no significativo en la precisión del conjunto de prueba.

Benoit Sanchez
fuente
1
Gracias, tiene mucho sentido. Entonces, básicamente, si se realiza la misma cantidad de actualizaciones, entonces un tamaño de lote más grande será al menos igual de bueno, ¿verdad?
dontloo
¿conoces algún experimento publicado sobre eso (comparando diferentes tamaños de lote con un número fijo de actualizaciones)?
dontloo
Sí, para la misma cantidad de actualizaciones, lotes más grandes siempre son mejores. No sé de una publicación, si alguna vez encuentro una, la publicaré.
Benoit Sanchez
Leí el resto de tu pregunta (la tabla). Curiosamente, muestra resultados en un conjunto de pruebas, mientras que el objetivo del gradiente decente es optimizar el conjunto de entrenamiento. Es posible que lotes pequeños eviten cierto tipo de sobreajuste menor al aleatorizar el óptimo. Es algo sutil sobre el que no tengo intuición.
Benoit Sanchez
Según el artículo, la diferencia de precisión no es significativa. Solo quieren señalar que la precisión es esencialmente la misma. Lo que principalmente quieren señalar es que SGD con lotes pequeños es mucho más rápido.
Benoit Sanchez
4

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

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

La razón, según tengo entendido, es que SGD causa 'saltos' en el espacio de parámetros, por lo que durante el entrenamiento los parámetros no pueden permanecer en un mínimo estrecho, solo en (o cerca de) los más amplios. Y estos más anchos aparentemente [1] generalizan mejor (también conocido como menos sobreajustado).

Más referencias:

  • Aqui esta [2] otro documento que formaliza esto (o trata de hacerlo, no lo seguí todo, ¡compruébelo usted mismo!)
  • Este artículo [3] afirma que hay una fase a "stochastic relaxation, or random diffusion"la que conduce la estocasticidad inherente a SGD "maximiz[ation of] the conditional entropy of the layer".

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

Definitivamente podría haber otras formas en que el tamaño del lote influye en la convergencia; Este es el que yo conozco.


[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 para limitar los ciclos de las redes profundas", Chaudhari, Soatto 2017

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

[4] "Comprender el aprendizaje profundo requiere repensar la generalización", C. Zhang, etc. 2016

dasWesen
fuente
(+1) Buenas referencias. por cierto, el primer autor en [4] es C. Zhang
usuario20160
Oh tienes razon! Editado, gracias por la corrección.
dasWesen
0

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

Ver aquí .

Curtis White
fuente