Supposons que nous faisons un exemple de jouet sur un gradient décent, minimisant une fonction quadratique , en utilisant une taille de pas fixe . ( )α = 0,03 A = [ 10 , 2 ; 2 , 3 ]
Si nous traçons la trace de à chaque itération, nous obtenons la figure suivante. Pourquoi les points deviennent "beaucoup plus denses" lorsque nous utilisons une taille de pas fixe ? Intuitivement, il ne ressemble pas à une taille de pas fixe, mais à une taille de pas décroissante.
PS: R Le code inclut le tracé.
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")
r
machine-learning
optimization
gradient-descent
Haitao Du
la source
la source
alpha=3e-2
plutôt que .Réponses:
Soit où est symétrique et défini positif (je pense que cette hypothèse est sûre d'après votre exemple). Ensuite et on peut diagonaliser en tant que . Utilisez le changement de base . On a alors AF( x ) = 12XTA x UNE A A = Q Λ Q T y = Q T x f ( y ) = 1∇ f( x ) = A x UNE A = Q Λ QT y= QTX
y ( n + 1Λ est diagonal donc nous obtenons nos mises à jour comme
Cela signifie que régit la convergence, et nous n'obtenons la convergence que si . Dans votre cas, nous avons donc | 1 - α1 - α λje |1 - α λje| <1
Nous obtenons la convergence relativement rapidement dans la direction correspondant au vecteur propre avec la valeur propre comme on le voit par la façon dont les itérations descendent assez rapidement la partie la plus raide du paraboloïde, mais la convergence est lente dans la direction du vecteur propre avec la plus petite valeur propre parce que est si proche de . Ainsi, même si le taux d'apprentissage est fixe, les amplitudes réelles des pas dans cette direction diminuent selon environ0,98 1 α ( 0,98 ) n αλ ≈ 10,5 0,98 1 α ( 0,98 )n qui devient de plus en plus lent. C'est la cause de ce ralentissement exponentiel dans la progression dans cette direction (cela se produit dans les deux directions mais l'autre direction se rapproche suffisamment tôt pour que nous ne nous en rendions pas compte). Dans ce cas, la convergence serait beaucoup plus rapide si était augmenté.α
Pour une discussion bien meilleure et plus approfondie à ce sujet, je recommande fortement https://distill.pub/2017/momentum/ .
la source
Pour une fonction lisse, aux minima locaux.∇f=0
Parce que votre schéma de mise à jour est , la magnitudecontrôle la taille du pas. Dans le cas de votre quadratique également (calculez simplement la toile de jute du quadratique dans votre cas). Notez que cela ne doit pas toujours être vrai. Par exemple, essayez le même schéma sur . Ensuite, la taille de votre pas est toujours et ne diminuera donc jamais. Ou plus intéressant, , où le gradient va à 0 dans la coordonnée y, mais pas la coordonnée . Voir la réponse de Chaconne pour la méthodologie des quadratiques.| ∇ f | | Δ f | → 0 f ( x ) = x α f ( x , y ) = x + y 2 xα∇f |∇f| |Δf|→0 f(x)=x α f(x,y)=x+y2 x
la source