Giả sử chúng ta đang thực hiện một ví dụ đồ chơi trên độ dốc tốt, tối thiểu hóa hàm bậc hai , sử dụng kích thước bước cố định . ( )α = 0,03 A = [ 10 , 2 ; 2 , 3 ]
Nếu chúng ta vẽ sơ đồ dấu vết của trong mỗi lần lặp, chúng ta sẽ nhận được hình sau. Tại sao các điểm nhận được "nhiều mật độ" khi chúng tôi sử dụng kích thước bước cố định ? Theo trực giác, nó không giống như kích thước bước cố định, mà là kích thước bước giảm dần.
PS: Mã R bao gồm cốt truyện.
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-2
thay vì .