暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

这一节,我们来介绍一下DogLeg方法。

还记得模型函数吗:

暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

在Dogleg方法中,要求模型函数中的B必须是正定矩阵。至于为什么,先卖个关子,学完之后你自然就明白了。暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)


现在我们正式开始学习吧~:

由于B是正定矩阵,那么,有前面几篇博客的介绍可知,在无约束条件下,模型函数暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)的极值在点暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)取到。那么,

1.暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法),那么,由上面的讨论可知暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

2.那么,当暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)时,又该怎么办呢?

暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)时,由于约束暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)的存在,我们可以把暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)中的二次项暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)看做一个很小的项:

暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

那么,暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)的方强我们可以确定为暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

现在我们将结合这个方向和暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)方向在信任域内找一个适合的,能让暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)值下降方向。

我们再捋一捋之前的步骤:

a.若暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法),那么暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)一定是让模型函数暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)下降最多的最优方向。

b.若暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法),讨论暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)时情况,暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)的方向为暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法),目标函数的梯度负方向。

现在我们处在第二种情况。

现在我们知道方向了,但是我们还不知道步长,该怎么办呢?

柯西点中使用的步长是暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)的步长值,这里我们换一个方法,我们来讨论下面这个函数:

暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

利用在前面介绍的方法,将这个函数对暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)求导,可以求得暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

面对我们现在的这种情况,将暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)的情况代入上面求出的暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)中,可以求得,这里的暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

a.若暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法),那么,在信任域内,选择暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)为下降方向

b.若暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法),那么,令暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法),选择暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)为下降方向。

c.若暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法),那么,我们看下图


暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

看到这个图,有没有产生这样一种想法,既然暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)没有抵到信任域边界,那我们可不可以在到达暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)之后,努力的再往暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)方向靠一靠,让模型函数暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)可以进一步减小,岂不是更好?Dogleg也是这么想的。看下图:


暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

看到这里就能理解为什么要叫DogLeg方法了吧,因为在暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)的情况下,真的很像狗腿。


综上,

暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

其中暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)的求解过程如下:

暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)

配图如下:

暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)



现在我们来解释为什么B一定要是正定矩阵:

因为若果B不是正定矩阵的话,暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)不一定是一个能让模型函数暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)值减小的方向,那么以上的讨论又有什么意义呢?