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 . β1=0.9 y β2=0.999 como siempre.
Los primeros valores de mt y vt (redondeado a 4 cifras).
tmtvtmt/√vt000N/A10.10000.0010003.16220.19000.0019994.25030.27100.0029974.95040.34390.0039945.442
En t=12 alcanzamos un máximo de mt/√vt=6.568 y de ahí desciende a 1 el valor "correcto" de mt/√vt . 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 mt y vt están muy cerca de 0 . En dontloo muestra , mt y vt 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 mt utilizando m0=0 .
m1=0.1g1m2=0.1g2+0.09g1m3=0.1g3+0.09g2+0.081g1m4=0.1g4+0.09g3+0.081g2+0.0729g1
Es evidente que mt comparte casi la misma cantidad de gt .
Ahora considere la posibilidad de establecer m1=g1 .
m1=g1m2=0.1g2+0.9g1m3=0.1g3+0.09g2+0.81g1m4=0.1g4+0.09g3+0.081g2+0.729g1
Como era de esperar, g1 ahora tiene una influencia diez veces mayor en mt .
Se podría argumentar que la influencia de g1 en mt disminuye rápidamente y, por tanto, es irrelevante.
Pero ¿qué pasa con vt ? Basándonos en nuestro ejemplo anterior, deberíamos esperar una influencia mil veces mayor. Comparemos vt y ˉvt donde v0=0 y ˉv1=g21 . Haciendo cuentas, he aquí el % influencia de g1 en el v 's durante varios t .
t% of g1 in vt% of g1 in ˉvt1100%100%109.96%99.1%1000.951%90.5%2000.452%81.9%3000.286%74.1%4000.203%67.1%5000.154%60.7%6000.122%54.9%10000.0582%36.8%20000.0156%13.5%
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−βt2 ? 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 mt/√vt=6.568 y de ahí desciende a 1 el valor "correcto" de mt/√vt . 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 mt y vt para tener aproximadamente la misma magnitud que gt y g2t . ¿Cómo exactamente? Divide la suma total por la suma de los pesos de cada gt .
ˆm1=0.1g10.1 ˆm2=0.1g2+0.09g10.1+0.09 ˆm3=0.1g3+0.09g2+0.081g10.1+0.09+0.081 ˆm4=0.1g4+0.09g3+0.081g2+0.0729g10.1+0.09+0.081+0.0729
Resulta que este denominador puede escribirse más sencillamente como 1−βt1 .
También puede verse en la última tabla que al inicializar v0=0 obtenemos un impulso mucho más preciso que inicializando v1=g21 . De hecho, utilizando v1=g21 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 β . Aunque β=0.9 no es tan malo, cuando β=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 ˆmt es presentado por dontloo, pero tiene algunos inconvenientes semánticos. Para grandes t podemos ver que 1−βt≈1 dejándonos con mt≈ˆmt mientras que con los suyos obtienen mt≈ˆmt/(1−β1) . Esto provoca mt estar influida por la elección de β1 así como perder su significado como la aproximación del momento de gt . Dado que está influenciada por β1 ya no puede compararse directamente con gt .
Aunque se podría argumentar que no deberías preocuparte por la existencia de mt y en su lugar centrarse en ˆmt que es la misma en ambas formulaciones, yo diría que dejar que mt sea una aproximación de gt 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:
mt=mt−1+(1−β1)(gt−mt−1) at=at−1+1t(gt−at−1)
Resulta que, at es la fórmula acumulativa de la media real de gt . mt es entonces una aproximación de esto, donde el gradiente más reciente pesa ligeramente más que el anterior.