¿Por qué mis pasos se hacen más pequeños cuando uso un tamaño de paso fijo en descenso de gradiente?

9

Supongamos que estamos haciendo un ejemplo de juguete en gradiente decente, minimizando una función cuadrática , usando un tamaño de paso fijo . ( )α = 0.03 A = [ 10 , 2 ; 2 , 3 ]xTAxα=0,03UNA=[10,2;2,3]

Si trazamos el rastro de en cada iteración, obtenemos la siguiente figura. ¿Por qué los puntos se vuelven "mucho más densos" cuando usamos un tamaño de paso fijo ? Intuitivamente, no parece un tamaño de paso fijo, sino un tamaño de paso decreciente.X

ingrese la descripción de la imagen aquí


PD: R Code incluye plot.

A=rbind(c(10,2),c(2,3))
f <-function(x){
  v=t(x) %*% A %*% x
  as.numeric(v)
}
gr <-function(x){
  v = 2* A %*% x
  as.numeric(v)
}

x1=seq(-2,2,0.02)
x2=seq(-2,2,0.02)
df=expand.grid(x1=x1,x2=x2)
contour(x1,x2,matrix(apply(df, 1, f),ncol=sqrt(nrow(df))), labcex = 1.5, 
        levels=c(1,3,5,10,20,40))
grid()

opt_v=0
alpha=3e-2
x_trace=c(-2,-2)
x=c(-2,-2)
while(abs(f(x)-opt_v)>1e-6){
  x=x-alpha*gr(x)
  x_trace=rbind(x_trace,x)
}
points(x_trace, type='b', pch= ".", lwd=3, col="red")
text(x_trace, as.character(1:nrow(x_trace)), col="red")
Haitao Du
fuente
Su código no coincide con su descripción: usa en alpha=3e-2lugar de . 0,01
whuber

Respuestas:

12

Deje donde es simétrico y positivo definido (creo que esta suposición es segura según su ejemplo). Entonces y podemos diagonalizar como . Use el cambio de base . Entonces tenemos F(X)=12XTUNAXUNAF(X)=UNAXUNAUNA=QΛQTy=QTX

F(y)=12yTΛyF(y)=Λy.

Λ es diagonal, por lo que obtenemos nuestras actualizaciones como

y(norte+1)=y(norte)-αΛy(norte)=(yo-αΛ)y(norte)=(yo-αΛ)norte+1y(0 0).

Esto significa que gobierna la convergencia, y solo obtenemos convergencia si . En su caso, tenemos entonces 1-αλyoEl |1-αλyoEl |<1

Λ(10,50 00 02.5)
yo-αΛ(0,890 00 00,98).

Obtenemos una convergencia relativamente rápida en la dirección correspondiente al vector propio con valor propio como se ve por cómo los iterados descienden la parte más empinada del paraboloide bastante rápido, pero la convergencia es lenta en la dirección del vector propio con el valor propio más pequeño porque está tan cerca de . Entonces, aunque la tasa de aprendizaje es fija, las magnitudes reales de los pasos en esta dirección decaen de acuerdo con aproximadamenteλ10,50,981α(0,98)norteque se vuelve más y más lento Esa es la causa de esa desaceleración de aspecto exponencial en el progreso en esta dirección (sucede en ambas direcciones, pero la otra dirección se acerca lo suficientemente pronto como para que no nos demos cuenta o no nos importe). En este caso, la convergencia sería mucho más rápida si se incrementara .α

Para una discusión mucho mejor y más completa de esto, recomiendo https://distill.pub/2017/momentum/ .

jld
fuente
gracias por la respuesta detallada y gran referencia! cambiar la base de realmente me ayudó. y
Haitao Du
11

Para una función suave, en los mínimos locales.F=0 0

Debido a que su esquema de actualización es , la magnitudcontrola el tamaño del paso. En el caso de su cuadrática también (solo calcule la arpillera de la cuadrática en su caso). Tenga en cuenta que esto no siempre tiene que ser cierto. Por ejemplo, intente el mismo esquema en . Entonces el tamaño de su paso es siempre por lo tanto, nunca disminuirá. O, lo que es más interesante, , donde el gradiente va a 0 en la coordenada y, pero no en la coordenada . Vea la respuesta de Chaconne para la metodología para las cuadráticas.| f | El | Δ f | 0 f ( x ) = x α f ( x , y ) = x + y 2 xαFEl |FEl |El |ΔFEl |0 0F(X)=XαF(X,y)=X+y2X

Alex R.
fuente