帮助在线搜索中确定三次插值和二次插值


9

我正在执行行搜索,作为准牛顿BFGS算法的一部分。在行搜索的第一步中,我使用三次插值法将其移近局部最小化器。

f:RR,fC1是感兴趣的功能。我想找到一个x 这样 f(x)0

f(xk)f(xk)f(xk+1)f(xk+1)被知道。还假设0xk<x<xk+1。我适合三次多项式Q(x)=ax3+bx2+cx+d 以便 Q(0)=f(xk)Q(0)=f(xk)Q(xk+1xk)=f(xk+1)Q(xk+1xk)=f(xk+1)

我求解二次方程: (1):Q(xxk)=0 为了我的追寻 x 使用封闭式解决方案。

上面的方法在大多数情况下效果很好,除了 f(x)=O(x2) 作为封闭式解决方案 (1) 除以 a 变得非常接近或完全 0

我的解决方案是看 a 如果它“太小”,只需对二次多项式的极小值采用封闭形式的解 Q2(x)=bx2+cx+d 为此我已经有了系数 b,c,d 从早期的适合 Q(x)

我的问题是:如何为何时对三次方进行二次插值设计一个好的测试?天真的方法来测试a0 由于数字原因是不好的,所以我在看 |a|<ϵτ 哪里 ϵ 是机器的精度,但我无法决定一个好的 τ 那是规模不变 f

奖励问题:使用系数时是否存在任何数值问题,b,c,d,从失败的三次拟合中得出,还是应该使用适当的系数计算方式执行新的二次拟合?

编辑澄清: 在我的问题f 实际上就是通常所说的 ϕ(α)=f(x¯k+αpk¯)在文学中。我只是简化了问题的表述。我要解决的优化问题在6维上是非线性的。而且我很清楚Wolfe条件足以进行BFGS线搜索,因此表示我对f(x)0; 我正在寻找能够满足强Wolfe条件的事物,并且采用三次逼近的极小值是此过程中的一个好步骤。

问题不在于BFGS,而在于如何确定何时三次系数足够小以至于二次近似更合适。

编辑2:更新符号,方程式不变。

Answers:


4

嗯...三次内插并不是线搜索所未闻的,但通常是过大的。

如果我正确阅读了您的问题, x只是一个标量?在这种情况下,BFGS可能不是解决问题的最有效方法。Brenth方法之类的标量优化算法可能会更快地解决您的问题。

BFGS有许多行搜索算法。对于我自己的应用程序,使用内存受限的BFGS(L-BFGS),此寻线效果很好。请记住,您只需要满足Wolfe条件,并且通过找到确切的最小化器可能不会获得太多收益。

无论如何,要实际回答您的问题:如果求解三次方会产生“不良”值(例如NaN或Inf ),我将考虑简单地切换到二次多项式(如此处所示)。

我不太确定您使用什么意思 b,c,d?三次拟合的这些系数与二次拟合的系数不同,因此您无法重复使用它们。

最后,您可能要使用 f(xk1) , 而不是 f(x0),因为您的函数在局部(大概)只能是三次或二次方的,并且 xkxk1 彼此之间(以及解决方案)应该比 x0

希望这可以帮助。


为清楚起见进行了编辑。通过使用b,c,d“我的意思是说我对 Q(x)=ax3+bx2+cx+d 并发现 a0 因此我有 Q(x)=bx2+cx+d已经是二次多项式了 问题是系数是否b,c,d为此拟合而获得的结果明智地用于进行插值,或者如果我应该重新计算典型二次拟合的新系数。
艾米丽·L.

嗯,对,当然。从数字的角度来看,使用系数没有任何问题。我认为这很重要的唯一点是,无论如何,该解决方案都将终止。
LKlevin 2014年

您可以通过计算三次方并检查“不良”值来激发您的答案吗?为什么什么时候安全?a<<b 要么 a0
艾米丽·L.

什么时候 a0b,cd将近似于二次情况。由于BFGS线搜索功能非常强大,因此即使它们并不完全准确,您也可以使用它们。只要您遵守沃尔夫条件,您就会收敛。至于“坏”值,只要计算机可以准确地进行所需精度的计算,一切就很好。如果不能,您将开始看到inf和NaN。
LKlevin 2014年

4

莫雷(Moré)发表了一篇论文,该论文由Nocedal执行,内容涉及:

豪尔赫·莫雷(Jorge J.Moré)和大卫·图恩特(David J. 1994.保证足够减少的线搜索算法。ACM Trans。数学。软。20,3(1994年9月),286-307。DOI http://dx.doi.org/10.1145/192115.192132预印本)。


欢迎来到SciComp.SE!我格式化了您的帖子,以使其更容易找到论文。如果您可以找到Nocedal的实现的链接,那将很有帮助。
克里斯蒂安·克拉森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.