¿Qué tan grande debe ser el tamaño del lote para el descenso de gradiente estocástico?

Respuestas:

72

El "tamaño de la muestra" que estamos hablando es referido como el tamaño del lote , . El parámetro de tamaño de lote es solo uno de los hiperparámetros que ajustará cuando entrene una red neuronal con Descenso de gradiente estocástico (SGD) mini-lote y depende de los datos. El método más básico de búsqueda de hiperparámetros es hacer una búsqueda en la cuadrícula sobre la velocidad de aprendizaje y el tamaño del lote para encontrar un par que converja la red.si

Para comprender cuál debería ser el tamaño del lote, es importante ver la relación entre el descenso del gradiente del lote, el SGD en línea y el SGD de mini lotes. Aquí está la fórmula general para el paso de actualización de peso en SGD de mini lotes, que es una generalización de los tres tipos. [ 2 ]

θt+1θtϵ(t)1Bb=0B1L(θ,mb)θ
  1. Descenso de gradiente por lotes, B=|xEl |
  2. Descenso de gradiente estocástico en línea: si=1
  3. Descenso de gradiente estocástico mini-lote: pero B < | x | .si>1si<El |XEl |

Tenga en cuenta que con 1, la función de pérdida ya no es una variable aleatoria y no es una aproximación estocástica.

SGD converge más rápido que el descenso de gradiente "por lotes" normal porque actualiza los pesos después de mirar un subconjunto seleccionado al azar del conjunto de entrenamiento. Deje ser nuestro conjunto de entrenamiento y dejar m x . El tamaño de lote B es solo la cardinalidad de m : B = | m | .XmetroXsimetrosi=El |metroEl |

El descenso de gradiente por lotes actualiza los pesos utilizando los gradientes de todo el conjunto de datos x ; mientras que SGD actualiza los pesos utilizando un promedio de los gradientes para un mini lote m . (El uso del promedio en lugar de una suma evita que el algoritmo tome medidas que son demasiado grandes si el conjunto de datos es muy grande. De lo contrario, necesitaría ajustar su tasa de aprendizaje en función del tamaño del conjunto de datos). El valor esperado de este La aproximación estocástica del gradiente utilizado en SGD es igual al gradiente determinista utilizado en el descenso del gradiente por lotes. E [ L S G D ( θ , m ) ] = θXmetro .mi[LSsolre(θ,metro)]=L(θ,X)

Cada vez que tomamos una muestra y actualizamos nuestros pesos, se llama mini lote . Cada vez que corremos a través de todo el conjunto de datos, se llama una época .

Digamos que tenemos algunos vectores de datos , un vector de peso inicial que parametriza nuestra red neuronal, θ 0 : R S , y una función de pérdida L ( θ , x ) : R SR DR S que están tratando de minimizar Si tenemos ejemplos de entrenamiento T y un tamaño de lote de B , entonces podemos dividir esos ejemplos de entrenamiento en mini lotes de C:X:Rreθ0 0:RSL(θ,X):RSRreRSTsi

C=T/ /si

Por simplicidad, podemos suponer que T es divisible de manera uniforme por B. Aunque, cuando este no es el caso, como a menudo no lo es, se debe asignar el peso adecuado a cada mini lote en función de su tamaño.

A continuación se muestra un algoritmo iterativo para SGD con épocas :METRO

t0 0mientras t<METROθt+1θt-ϵ(t)1sisi=0 0si-1L(θ,metrosi)θtt+1

Nota: en la vida real, estamos leyendo estos datos de ejemplo de entrenamiento de la memoria y, debido a la captación previa de caché y otros trucos de memoria realizados por su computadora, su algoritmo se ejecutará más rápido si los accesos a la memoria se fusionan , es decir, cuando lee la memoria en orden y no saltes al azar. Entonces, la mayoría de las implementaciones de SGD barajan el conjunto de datos y luego cargan los ejemplos en la memoria en el orden en que se leerán.

Los principales parámetros para el SGD de vainilla (sin impulso) descritos anteriormente son:

  1. Tasa de aprendizaje: ϵ

Me gusta pensar que el épsilon es una función desde el recuento de época hasta la tasa de aprendizaje. Esta función se llama horario de aprendizaje .

ϵ(t):norteR

Si desea que se fije la tasa de aprendizaje, simplemente defina epsilon como una función constante.

  1. Tamaño del lote

El tamaño del lote determina cuántos ejemplos mira antes de realizar una actualización de peso. Cuanto más bajo sea, más ruidosa será la señal de entrenamiento, cuanto más alta sea, más tiempo tomará calcular el gradiente para cada paso.

Citaciones y lecturas adicionales:

  1. Introducción al aprendizaje basado en gradientes
  2. Recomendaciones prácticas para la formación basada en gradientes de arquitecturas profundas.
  3. Entrenamiento eficiente en mini lotes para la optimización estocástica
sabalaba
fuente
1
For simplicity we can assume that D is evenly divisible by B. ¿No quiere decir que T debería ser divisible por B?
Antoine
44
y para responder realmente a la pregunta del OP, puede agregar B is typically chosen between 1 and a few hundreds, e.g. B = 32 is a good default value, with values above 10 taking advantage of the speed-up of matrix-matrix products over matrix-vector products.(del artículo de Bengio 2012)
Antoine
@sabalaba Buena respuesta. Pero, ¿no es así que en la ecuación "A continuación se da un algoritmo iterativo para SGD con épocas M" actualizaremos el peso después de ejecutar cada mini lote? En otras palabras, ¿no debería haber otro ciclo (sobre los lotes C mini) dentro del ciclo durante la época, es decir, mientras t <M
Kaushik Acharya
2
En estadística, una muestra consta de múltiples observaciones. Entonces, el tamaño de la muestra es interpretado correctamente por los estadísticos. En informática (particularmente, en aprendizaje automático) una muestra es una observación única y un lote es una colección de muestras. Podría ser un poco confuso. Una muestra para los estadísticos es un lote para los científicos de datos;) Fuente: en.wikipedia.org/wiki/Sample_size_determination
Oleg Melnikov
nortemetro