【Optimization in Operations Research 运筹学】牛顿法、高斯牛顿法、拟牛顿法与BFGS与为什么H要正定牛顿法亮点与弊端

发布时间 2023-12-19 11:08:23作者: 铃灵狗

牛顿法

\(F(x+\Delta x)=F(x)+F'(x)\Delta x+\frac{1}{2}F''(x)\Delta x^2\)
泰勒展开之后保留二次项
然后对展开式再进行求导 令导数等于0 直接得到前进的步长和方向 即\(Hx = b\)这里的\(x\)就是牛顿法求解的前进步长和方向。

如何理解呢?

\(\Delta x\)之后得到的解析式再对\(x\)进行求导 得到导数等于0 则必然是一个极值点 因此此次前进的\(\Delta x\)是直接奔着下一次的结果的极值点方向去的

为什么H要至少半正定?

\(F(x+\Delta x)=F(x)+F'(x)\Delta x+\frac{1}{2}F''(x)\Delta x^2\)
展开后一次导数为0(因为至少要是极值点 一阶导数必为0)
\(F'(x)\Delta x = 0\)

任选一个\(\Delta x\)保证泰勒展开后原函数 + 0 + 二次项,中的二次项必须大于0,这样\(F(x + \Delta x)\)才会大于\(f(x)\)此时就是任意前进\(\Delta x\),都会使得\(F(x)\)变大,我们的目的是变小。
\(F(x+\Delta x)=F(x)+0+\frac{1}{2}F''(x)\Delta x^2 > F(x)\)

高斯牛顿法

牛顿法直接对目标函数进行展开,而高斯牛顿法是先对里面\(f\)展开,然后再展开求导。
\(f\left(x+\Delta x\right)\approx f\left(x\right)+J\left(x\right)\Delta x\)

\[\begin{aligned} \frac{1}{2}\|f\left(x\right)+J\left(x\right)\Delta x\|^{2}& =\frac{1}{2}\big(f\left(x\right)+J\left(x\right)\Delta x\big)^{T}\left(f\left(x\right)+J\left(x\right)\Delta x\right) \\ &=\frac{1}{2}\left(\|f(x)\|_{2}^{2}+2f\left(x\right)^{T}J(x)\Delta x+\Delta x^{T}J(x)^{T}J(x)\Delta x\right) \end{aligned} \]

然后将上式对\(\Delta x\)求导,且导数为0:

\[2J\left(x\right)^{T}f\left(x\right)+2J\left(x\right)^{T}J\left(x\right)\Delta x=0 \]

随后得到:

\[J\left(x\right)^{T}J\left(x\right)\Delta x=-J\left(x\right)^{T}f\left(x\right). \]

拟牛顿法与BFGS

拟牛顿法解决了牛顿法迭代失败,对初始值要求高的问题。其中BFGS方法显著有效。

牛顿法的结果:

\(\nabla^2f(\mathbf{x}^{(t)})\Delta\mathbf{x}=-\nabla f(\mathbf{x}^{(t)})\)

将二次求导结果逆过去:

\(\Delta\mathbf{x}=-\nabla^2f(\mathbf{x}^{(t)})^{-1}\nabla f(\mathbf{x}^{(t)})\)

\(\mathbf{D}_t\)即为优化的方向:

\(\Delta\mathbf{x}^{(t+1)}=-\mathbf{D}_t\nabla f\left(\mathbf{x}^{(t)}\right)\)

然后理解一下二阶导数的性质:

\(\nabla f(\mathbf{x}^{(t+1)})-\nabla f(\mathbf{x}^{(t)})\approx\nabla^2f(\mathbf{x}^{(t)})(\mathbf{x}^{(t+1)}-\mathbf{x}^{(t)})\)

\(\nabla^2f(\mathbf{x}^{(t)})^{-1}(\nabla f(\mathbf{x}^{(t+1)})-\nabla f(\mathbf{x}^{(t)}))\approx\mathbf{x}^{(t+1)}-\mathbf{x}^{(t)}\)

上述两个式子可以重写一下:

\(\mathbf{D}_{t+1}\mathbf{g}=\mathbf{d}\)

\(\mathbf{d}\triangleq\mathbf{x}^{(t+1)}-\mathbf{x}^{(t)}\)

\(\mathbf{g}\triangleq\nabla f(\mathbf{x}^{(t+1)})-\nabla f(\mathbf{x}^{(t)})\)

BFGS公式认为\(\mathbf{D}_t\)初始值为单位阵,最大化问题为负的单位阵。然后随着迭代,\(\mathbf{D}_t\)会随着下面的公式进行更新。

\(\mathbf{D}_{t+1}\leftarrow\mathbf{D}_t+\left(\mathbf{1}+\frac{\mathbf{g}\mathbf{D}_t\mathbf{g}}{\mathbf{d}\cdot\mathbf{g}}\right)\frac{\mathbf{d}\mathbf{d}^\mathrm{T}}{\mathbf{d}\cdot\mathbf{g}}-\frac{\mathbf{D}_t\mathbf{g}\mathbf{d}^\mathrm{T}+\mathbf{d}\mathbf{g}^\mathrm{T}\mathbf{D}_t}{\mathbf{d}\cdot\mathbf{g}}\)

实际迭代过程类似于牛顿法,只是在当前求解最优\(\Delta x\)后,\(x\)更新前进,随后需要更新一下\(\mathbf{D}_t\),然后迭代次数+1,进入下次迭代。