从行搜索开始以零步停止-R提前停止优化

问题描述

我正在尝试针对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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...