问题描述
我正在尝试针对19维参数向量θ最小化目标函数J(θ)。 J(θ)是一个光滑的非线性函数,因此我在R中尝试了各种基于梯度的优化器来找到解决方案。一个一致的问题是,它们都会在梯度非零的点尽早停止优化。停止的原因是“从线搜索到零步距”。例如,代码
ucminf(theta = paramGuess,fn = J_obj,control = list(maxeval = 1000,xtol = 1e-15,grtol = 1e-8,trace = 1))
将终止,并显示以下消息:
Line search: alpha = 0.0000e+00,dphi(0) =-8.7877e-02,dphi(1) =-4.9128e-02
Optimization has converged. Stopped by zero step from line search
maxgradient laststep stepmax neval
488.2985428 0.0000000 0.4051687 22.0000000
您会注意到,梯度远非零。 Optim也有同样的问题。
有没有一种方法可以控制最小步长(alpha),以便优化器不会停止运行,直到渐变中的最大元素小于grtol为止?
我也尝试过提供一个解析梯度,并且有时会收敛到一个非零梯度的解决方案,具体取决于初始参数值。但是,有时却没有,并且优化器由于“从行搜索开始的零步距”而再次停止。
任何关于为什么优化器将步长设置为零以及如何防止这种情况发生的建议,将不胜感激!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)