首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用REL_REDUCTION_OF_F_优化最小化总是退出

使用REL_REDUCTION_OF_F_优化最小化总是退出
EN

Stack Overflow用户
提问于 2017-08-10 14:46:35
回答 2查看 5.1K关注 0票数 1

我正在使用'L-BFGS-B'最小化一些日志可能性,我不希望算法在REL_REDUCTION_OF_F_ <= factr*epsmch时停止,所以我设置了ftol=0

代码语言:javascript
复制
min_log = scipy.optimize.minimize(fun=minus_log_lik, x0=proc_param,
                                  method='L-BFGS-B', bounds=tuple(bounds),
                                  options={'ftol':0,'gtol':1e-06} 

不管怎么说我总能得到一个结果

信息:“会聚:REL_REDUCTION_OF_F_<=_FACTR*EPSMCH”

有人知道为什么吗?我试图设置ftol为负,但这会产生一个错误。

EN

回答 2

Stack Overflow用户

发布于 2017-08-10 15:17:53

这是故意的。优化算法的工作原理是对参数值进行小幅度的变化,并测量变化率。(想到山上的雪橇,你想找到最陡峭的斜坡)。因为您正在处理浮点数,所以您可以不断地对值进行越来越小的更改。为了防止程序运行,您需要一些标准来确定您完成程序的时间。(当你在山脚下时,你指向雪橇的方向并不重要)

ftol为函数调用中的更改设置最小容忍度,gtol设置全局公差。当您将其设置为0时,您将告诉例程计算默认公差。当你把它设置为负值时,你要求例程在abs(f(x)-f(x+delta)) <= ftol时停止,这是负数不能发生的。

试着用ftol:1e-6和gtol:1e-6运行。并查看在一个解决方案上收敛所需的时间/迭代次数。然后试试1e-7,看看需要多长时间。然后注意所获得的最小值的变化有多小。

这些选项的典型值是: options={'disp':None,'maxls':20,'iprint':-1,'gtol':1e-05,'eps':1e-08,'maxiter':15000,'ftol':2.220446049250313e-09,'maxcor':10,‘maxls’:15000})

请参阅https://docs.scipy.org/doc/scipy/reference/optimize.minimize-lbfgsb.html#optimize-minimize-lbfgsb

票数 2
EN

Stack Overflow用户

发布于 2022-10-16 23:46:12

虽然没有证件,但我相信“正常”的终止信息:

REL_REDUCTION_OF_F_<=_FACTR*EPSMCH

意味着功能值缺乏显著变化。造成这种情况的原因通常有两个:

函数值和梯度不匹配。例如,错误的梯度计算。

这种不连续性存在于极小化范围内。如果是这样的话,切换到另一种方法可能会有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45616929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档