Предположим, что мы делаем игрушечный пример с градиентом приличия, минимизируя квадратичную функцию , используя фиксированный размер шага α = 0,03 . ( A = [ 10 , 2 ; 2 , 3 ] )
Если мы построим трассировку на каждой итерации, мы получим следующий рисунок. Почему точки становятся «намного плотнее», когда мы используем фиксированный размер шага? Интуитивно понятно, что это выглядит не как фиксированный размер шага, а как уменьшающийся размер шага.
PS: код R включает сюжет.
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
Хайтау Ду
источник
источник
alpha=3e-2
Ответы:
Для лучшего и более подробного обсуждения этого я настоятельно рекомендую https://distill.pub/2017/momentum/ .
источник
источник