Perché i miei passi si riducono quando si utilizzano dimensioni di passo fisse in discesa con gradiente?


9

Supponiamo di fare un esempio di giocattolo su gradiente decente, riducendo al minimo una funzione quadratica , utilizzando la dimensione del gradino fissa . ( )XTUNXα=0.03UN=[10,2;2,3]

Se tracciamo la traccia di in ogni iterazione, otteniamo la seguente figura. Perché i punti diventano "molto densi" quando usiamo un passo fisso ? Intuitivamente, non sembra una dimensione del gradino fissa, ma una dimensione del gradino decrescente.X

inserisci qui la descrizione dell'immagine


PS: il codice R include la trama.

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")

alpha=3e-20.01

Risposte:


12

f(X)=12XTUNXUNf(X)=UNXUNUN=QΛQTy=QTX

f(y)=12yTΛyf(y)=Λy.

Λ

y(n+1)=y(n)-αΛy(n)=(io-αΛ)y(n)=(io-αΛ)n+1y(0).

1-αλio|1-αλio|<1

Λ(10.5002.5)
io-αΛ(0.89000.98).

λ10.50.981α(0.98)nα

Per una discussione molto migliore e più approfondita di ciò, consiglio vivamente https://distill.pub/2017/momentum/ .


y

11

f=0

αf|f||Δf|0f(X)=Xαf(X,y)=X+y2X

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.