La idea central detrás de SGD

Sep 30 2020

Pr. Hinton en su popular curso sobre Coursera se refiere al siguiente hecho :

Rprop realmente no funciona cuando tenemos conjuntos de datos muy grandes y necesitamos realizar actualizaciones de pesos por mini lotes. ¿Por qué no funciona con mini lotes? Bueno, la gente lo ha intentado, pero le ha resultado difícil hacerlo funcionar. La razón por la que no funciona es que viola la idea central detrás del descenso de gradiente estocástico , que es cuando tenemos una tasa de aprendizaje lo suficientemente pequeña, promedia los gradientes en mini lotes sucesivos. Considere el peso, que obtiene el gradiente de 0.1 en nueve mini lotes y el gradiente de -0.9 en décimas de mini lote. Lo que nos gustaría es que esos gradientes se cancelen aproximadamente entre sí, de modo que permanezcan aproximadamente iguales. Pero no es lo que sucede con rprop. Con rprop, aumentamos el peso 9 veces y lo disminuimos solo una vez, por lo que el peso crece mucho más.

Como puede ver, la idea central detrás de SGD es que se deben promediar los gradientes sucesivos en mini lotes. ¿Alguien tiene alguna fuente formal válida para esto? ¿hay alguna justificación? No he encontrado ninguna prueba hasta ahora.

Respuestas

2 JavierTG Oct 07 2020 at 04:39

Influencia de la distribución generadora de datos

Para ver esto, primero tenemos que mencionar que, ni al usar el descenso de gradiente por lotes (usando todo el conjunto de datos para calcular el gradiente) ni al usar el descenso de gradiente por mini lotes, estamos calculando el valor verdadero (exacto) del gradiente.

Para calcular el valor real del gradiente tendríamos que usar el conjunto de todos los valores posibles de las características, $x$, (y por lo tanto las salidas $y$).

Más formalmente, y refiriéndonos a la cantidad que queremos minimizar como el valor esperado de la función de pérdida por ejemplo ($J(x,y,\theta)$, dónde $\theta$ son los parámetros) wrt todo lo posible $x,y$ valores, el verdadero gradiente $g$ es dado por: $$g = \frac{\partial}{\partial \theta}\mathbb{E}_{x,y\sim p_{data}}(J(x,y,\theta)) $$Y si asumimos ciertas condiciones tenemos que:$$g = \mathbb{E}_{x,y\sim p_{data}}\left(\frac{\partial}{\partial \theta}J(x,y,\theta)\right) $$

Dónde $p_{data}$es la distribución de generación de datos (la distribución a partir de la cual los valores de$x$ y $y$se dibujan). Sin embargo, esta distribución generadora de datos suele ser desconocida. Solo conocemos el conjunto de datos que se nos da.

Debido a esto, para actualizar los parámetros usando toda la información proporcionada (el conjunto de entrenamiento), en su lugar usamos la distribución empírica definida por los datos de entrenamiento ($\hat{p}_{data}$) que pone una probabilidad de $1/m$ en cada uno de los $m$ muestras $(x^{(1)}, y^{(1)}), \,(x^{(2)}, y^{(2)}),\,...\,,(x^{(m)}, y^{(m)})$del conjunto de datos. Entonces, el gradiente se aproxima por:$$ \begin{aligned} \hat{g}&=\frac{\partial}{\partial \theta}\mathbb{E}_{x,y\sim \hat{p}_{data}}(J(x,y,\theta))\\&=\frac{\partial}{\partial \theta}\left(\sum_{i=1}^m \frac{1}{m}J_i(x^{(i)},y^{(i)},\theta)\right)\\ &= \frac{1}{m}\sum_{i=1}^m\frac{\partial }{\partial \theta}J_i(x^{(i)},y^{(i)},\theta) \end{aligned} $$ Terminando con el descenso de gradiente por lotes.

Pero, ¿qué pasa con los mini lotes?

Al usar actualizaciones de mini-baños, continuamente vemos nuevos datos (asumiendo que calculamos solo una época). Entonces, en este caso, usando mini-lotes, estamos usando la distribución de generación de datos.

Esto significa que en cada actualización de mini-lote, al muestrear esta distribución de generación de datos, terminamos con una estimación ($\hat{g}$) del verdadero gradiente ($g$) que es imparcial, es decir $\mathbb{E}_{x,y\sim p_{data}}(\hat{g})=g$. Para ver esto, y considerando$\text{s-sized}$ mini lotes: $$\begin{aligned} \mathbb{E}_{x,y\sim p_{data}}(\hat{g})&=\mathbb{E}_{x,y\sim p_{data}}\left(\frac{g^{(1)}+...+g^{(s)}}{s}\right)\\ &=\frac{1}{s}(\mathbb{E}_{x,y\sim p_{data}}(g^{(1)}+...+g^{(s)}))\\ &=\frac{1}{s}s\,\,g=g \end{aligned} $$Por lo tanto, al realizar actualizaciones sucesivas de mini lotes, tendremos en promedio (como se muestra en$\mathbb{E}_{x,y\sim p_{data}}(\hat{g})$) para actualizar nuestros parámetros con el valor real del gradiente. Y esto es a lo que creo que se refieren los autores en la cita de la pregunta.


Grandes referencias:

Libro de aprendizaje profundo, Ian Goodfellow et. al Capítulo 8.1
Respuestas de aquí

1 cmn Oct 09 2020 at 23:07

En un paso de descenso de gradiente completo, la función de pérdida se define como el promedio del término de pérdida en puntos de muestra individuales. Para minimizar la función de pérdida, necesitamos promediar los gradientes individuales.

En el descenso del gradiente estocástico, si no hay sesgo en la selección de los lotes, el promedio de los lotes daría como resultado una estimación no sesgada del gradiente completo.

Por favor, eche un vistazo a estas notas de la conferencia. http://www.stat.cmu.edu/~ryantibs/convexopt-F18/scribes/Lecture_24.pdf