Un ejemplo, con algunos cálculos numéricos, podría ser intuitivo y también ayudar a desacreditar la idea de utilizar el gradiente inicial en lugar de $0$ .
Consideremos el problema 1D $f(x)=x$ donde $f'(x)=1$ . $\beta_1=0.9$ y $\beta_2=0.999$ como siempre.
Los primeros valores de $m_t$ y $v_t$ (redondeado a 4 cifras).
\begin{array}{c|c|c|c} t&m_t&v_t&m_t/\sqrt{v_t}\\\hline 0&0&0&\mathrm{N/A}\\ 1&0.1000&0.001000&3.162\\ 2&0.1900&0.001999&4.250\\ 3&0.2710&0.002997&4.950\\ 4&0.3439&0.003994&5.442 \end{array}
En $t=12$ alcanzamos un máximo de $m_t/\sqrt{v_t}=6.568$ y de ahí desciende a $1$ el valor "correcto" de $m_t/\sqrt{v_t}$ . En otras palabras, con estos parámetros podemos alcanzar tamaños de paso aproximadamente $6.5$ veces mayores de lo que deberían, lo que puede ser indeseable.
También podemos ver que inicialmente $m_t$ y $v_t$ están muy cerca de $0$ . En dontloo muestra , $m_t$ y $v_t$ siempre van a empezar cerca del valor utilizado inicialmente.
En Comentarios de Mark L. Stone ,
Lo que no entiendo es por qué no se utiliza el gradiente en el punto inicial para los valores iniciales de estas cosas, y luego la primera actualización de parámetros. Entonces no habría contaminación por los valores iniciales cero, que tiene que ser deshecho. Así que no habría necesidad de la corrección de sesgo.
Consideremos, sin embargo, el contexto en el que se suelen utilizar las estimaciones de impulso: el descenso de gradiente estocástico/mini-lote. Cabe esperar que el gradiente inicial (estocástico) no es una estimación exacta del verdadero gradiente . Si realmente queremos una estimación precisa del gradiente, entonces necesitamos tener contribuciones casi iguales de los primeros gradientes.
Obsérvense entonces las expresiones ampliadas para su elección de $m_t$ utilizando $m_0=0$ .
\begin{align} m_1&=0.1g_1\\ m_2&=0.1g_2+0.09g_1\\ m_3&=0.1g_3+0.09g_2+0.081g_1\\ m_4&=0.1g_4+0.09g_3+0.081g_2+0.0729g_1 \end{align}
Es evidente que $m_t$ comparte casi la misma cantidad de $g_t$ .
Ahora considere la posibilidad de establecer $m_1=g_1$ .
\begin{align} m_1&=g_1\\ m_2&=0.1g_2+0.9g_1\\ m_3&=0.1g_3+0.09g_2+0.81g_1\\ m_4&=0.1g_4+0.09g_3+0.081g_2+0.729g_1 \end{align}
Como era de esperar, $g_1$ ahora tiene una influencia diez veces mayor en $m_t$ .
Se podría argumentar que la influencia de $g_1$ en $m_t$ disminuye rápidamente y, por tanto, es irrelevante.
Pero ¿qué pasa con $v_t$ ? Basándonos en nuestro ejemplo anterior, deberíamos esperar una influencia mil veces mayor. Comparemos $v_t$ y $\bar v_t$ donde $v_0=0$ y $\bar v_1=g_1^2$ . Haciendo cuentas, he aquí el $\%$ influencia de $g_1$ en el $v$ 's durante varios $t$ .
\begin{array}{c|c|c} t&\%\text{ of $g_1$ in $v_t$}&\%\text{ of $g_1$ in $\bar v_t$}\\\hline 1&100\%&100\%\\ 10&9.96\%&99.1\%\\ 100&0.951\%&90.5\%\\ 200&0.452\%&81.9\%\\ 300&0.286\%&74.1\%\\ 400&0.203\%&67.1\%\\ 500&0.154\%&60.7\%\\ 600&0.122\%&54.9\%\\ 1000&0.0582\%&36.8\%\\ 2000&0.0156\%&13.5\% \end{array}
En mi humilde opinión, esto es atrozmente malo. ¿Preferiría arriesgarme a que una estimación inicialmente inexacta del gradiente persista en mi impulso de forma tan significativa sólo para evitar una división por $1-\beta_2^t$ ? Por supuesto que no.
Para los no tan matemáticos, ¿cómo resuelve su corrección de sesgo todos estos problemas? Veámoslo uno por uno.
En $t=12$ alcanzamos un máximo de $m_t/\sqrt{v_t}=6.568$ y de ahí desciende a $1$ el valor "correcto" de $m_t/\sqrt{v_t}$ . En otras palabras, con estos parámetros podemos alcanzar tamaños de paso aproximadamente $6.5$ veces mayores de lo que deberían, lo que puede ser indeseable.
La corrección de sesgo resuelve este problema reescalando $m_t$ y $v_t$ para tener aproximadamente la misma magnitud que $g_t$ y $g_t^2$ . ¿Cómo exactamente? Divide la suma total por la suma de los pesos de cada $g_t$ .
\begin{align} \hat m_1&=\frac{0.1g_1}{0.1}\\~\\ \hat m_2&=\frac{0.1g_2+0.09g_1}{0.1+0.09}\\~\\ \hat m_3&=\frac{0.1g_3+0.09g_2+0.081g_1}{0.1+0.09+0.081}\\~\\ \hat m_4&=\frac{0.1g_4+0.09g_3+0.081g_2+0.0729g_1}{0.1+0.09+0.081+0.0729} \end{align}
Resulta que este denominador puede escribirse más sencillamente como $1-\beta_1^t$ .
También puede verse en la última tabla que al inicializar $v_0=0$ obtenemos un impulso mucho más preciso que inicializando $v_1=g_1^2$ . De hecho, utilizando $v_1=g_1^2$ en realidad introduce otro problema, quizá preocupante.
Además, observamos que el uso del enfoque de "gradiente inicial" está sujeto significativamente más a la elección de $\beta$ . Aunque $\beta=0.9$ no es tan malo, cuando $\beta=0.999$ puede hacer que el valor inicial persista mucho más tiempo.
¿Qué debe entender de todo esto, intuitivamente? Mi opinión es que al inicializar el impulso al primer valor proporcionado, se convierte en sesgada hacia el valor inicial en lugar de inclinarse por $0$ . Por el contrario, sesgado hacia $0$ es notablemente sencillo, y mucho más intuitivo, de arreglar.
Una fórmula alternativa equivalente para calcular $\hat m_t$ es presentado por dontloo, pero tiene algunos inconvenientes semánticos. Para grandes $t$ podemos ver que $1-\beta^t\approx1$ dejándonos con $m_t\approx\hat m_t$ mientras que con los suyos obtienen $m_t\approx\hat m_t/(1-\beta_1)$ . Esto provoca $m_t$ estar influida por la elección de $\beta_1$ así como perder su significado como la aproximación del momento de $g_t$ . Dado que está influenciada por $\beta_1$ ya no puede compararse directamente con $g_t$ .
Aunque se podría argumentar que no deberías preocuparte por la existencia de $m_t$ y en su lugar centrarse en $\hat m_t$ que es la misma en ambas formulaciones, yo diría que dejar que $m_t$ sea una aproximación de $g_t$ es mucho más intuitivo que este último.
Para tener alguna intuición sobre las fórmulas del momento, obsérvese también la similitud entre las siguientes:
$$m_t=m_{t-1}+(1-\beta_1)(g_t-m_{t-1})$$ $$a_t=a_{t-1}+\frac1t(g_t-a_{t-1})$$
Resulta que, $a_t$ es la fórmula acumulativa de la media real de $g_t$ . $m_t$ es entonces una aproximación de esto, donde el gradiente más reciente pesa ligeramente más que el anterior.