与牛顿法相同, 拟牛顿法是用一个二次函数以近似目标函数
.
的二阶泰勒展开是
![{\displaystyle f(x_{k}+\Delta x)\approx f(x_{k})+\nabla f(x_{k})^{T}\Delta x+{\frac {1}{2}}\Delta x^{T}B\Delta x.}](//wikimedia.org/api/rest_v1/media/math/render/svg/c98eaafd85327894f5fd48f1b73724e74f2c8b87)
其中,
表示
的梯度,
表示Hessian矩阵
的近似. 梯度
可进一步近似为下列形式
![{\displaystyle \nabla f(x_{k}+\Delta x)\approx \nabla f(x_{k})+B\Delta x.}](//wikimedia.org/api/rest_v1/media/math/render/svg/3a57391d9849d76dbd04d47453f8259d137e8968)
令上式等于
, 计算出Newton步长
,
![{\displaystyle \Delta x=-B^{-1}\nabla f(x_{k}).}](//wikimedia.org/api/rest_v1/media/math/render/svg/74cbc9d344b2011645fc6df9f3d7c4bd79d073bb)
然后构造
的近似
满足
![{\displaystyle \nabla f(x_{k}+\Delta x)=\nabla f(x_{k})+B\Delta x.}](//wikimedia.org/api/rest_v1/media/math/render/svg/e1a36aa6b076a9ae5ae91f9441ad4ac82e9c7690)
上式称作割线方程组. 但当
是定义在多维空间上的函数时, 从该式计算
将成为一个不定问题 (未知数个数比方程式个数多). 此时, 构造
, 根据Newton步长更新当前解的处理需要回归到求解割线方程. 几乎不同的拟牛顿法就有不同的选择割线方程的方法. 而大多数的方法都假定
具有对称性 (即满足
). 另外, 下表所示的方法可用于求解
; 在此,
于某些范数与
尽量接近. 即对于某些正定矩阵
, 以以下方式更新
:
![{\displaystyle B_{k+1}=\arg \min _{B}\|B-B_{k}\|_{V}.}](//wikimedia.org/api/rest_v1/media/math/render/svg/2c6cd1898bafee488f0fe6f06e43ecc85f4400c8)
近似Hessian矩阵一般以单位矩阵等作为初期值[1]. 最优化问题的解
由根据近似所得的
计算出的Newton步长更新得出.
以下为该算法的总结:
![{\displaystyle \Delta x_{k}=-\alpha B_{k}^{-1}\nabla f(x_{k})}](//wikimedia.org/api/rest_v1/media/math/render/svg/6776efbb54a0cc6e89d5ce497b908ee1a47c35d1)
![{\displaystyle x_{k+1}=x_{k}+\Delta x_{k}}](//wikimedia.org/api/rest_v1/media/math/render/svg/11f8f1a1f504263cd8360b3e7a68f0c7981eb5c8)
- 计算新一个迭代点下的梯度
![{\displaystyle \nabla f(x_{k+1})}](//wikimedia.org/api/rest_v1/media/math/render/svg/b039aa8e8eb6096527a339957b636aba9437156e)
- 令
![{\displaystyle y_{k}=\nabla f(x_{k+1})-\nabla f(x_{k})}](//wikimedia.org/api/rest_v1/media/math/render/svg/a3f552c14890748419975c737ec3f6e2dc870ff5)
- 利用
, 直接近似Hessian矩阵的逆矩阵
. 近似的方法如下表:
更多信息
,
...
Method
|
|
|
DFP法
|
|
|
BFGS法
|
|
|
Broyden法
|
|
|
Broyden族
|
|
|
SR1法
|
|
|
关闭