拟牛顿法
拟牛顿法(Quasi Newton Method)
牛顿法在最优化领域使用时,其更新方式可以认为是由$H^{-1}$矩阵来矫正梯度的搜索方向。而拟牛顿法的含义便是模拟替代Hessian矩阵,同时达到矫正搜索方向的目的。
由泰勒展开式:
取$x=x^{k+1}$得:
令:
得拟牛顿条件:
正定保证搜索方向向下:
$$$$
拟牛顿法选择$G_k\approx H_k^{-1}, or \quad B_k\approx H_k$ 进行更新。并在每次迭代中更新矩阵:
DFP算法
令:
则可以保证拟牛顿条件。
取:
可得矩阵 $G_{k+1}$ 的迭代公式
可以保证若初始矩阵$G_0$是正定的,则迭代过程中每个矩阵$G_k$都是正定的。
DFP算法步骤
- 输入:目标函数 $f(x)$ ,梯度 $g(x)=\nabla f(x)$ ,精度要求 $\varepsilon$
-
输出: $\quad f(x)$ 的极小点 $x^{*}$
-
取初始点 $x^{(0)},$ 取 $G_{0}$ 为正定矩阵,置 $k=0$
- 计算 $g_{k}=g\left(x^{(k)}\right), \quad$ 若 $\left|g_{k}\right|<\varepsilon$ 则停止计算, 得近似解 $x^{*}=x^{(k)} ;$ 否则 转3.
- 置 $p_{k}=-G_{k} g_{k}$
- 一维搜索,求 $\lambda_{k}$ 使
- 置 $x^{(k+1)}=x^{(k)}+\lambda p_{k}$
- 计算 $g_{k+1}=g\left(x^{(k+1)}\right),$ 若 $\left|g_{k+1}\right|<\varepsilon$ 则停止计算,近似解 $x^{*}=x^{(k+1)} ;$ 否 则,计算
- 置 $k=k+1$ , 转3.
在第5,6步中,$x^{k+1}$的计算依赖$G_k$,而$G_k$依赖$G_{k-1}$,因此每一步迭代的依赖是往前回溯两次。
BFGS算法
BFGS是用$B_k$去拟合$H_k$.其迭代公式:
通过Sherman-Morrison公式:
得到Hesse矩阵近似逆矩阵:
Broyden 算法
把DFP和BFGS得到的$G_k$进行线性组合:
这样的组合也满足牛顿条件并且是正定的。
L-BFGS(limited-memory BFGS)
当变量个数较多时,$G_k$矩阵的存储会非常耗费内存。L-BFGS的思路是存储部分向量$\delta_k,y_k$,当需要$G_k$时再通过向量的计算得到矩阵,从而降低内存开销。
一维搜索(line search)
计算拟牛顿法中迭代步长的因子$\lambda$, 以寻求最优的步长因子.
- 精确搜索: 一维搜索(line search)
- 非精确搜索:
- Wolfe
- Armijo
- Goldstein
用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则
总结
- 牛顿法:$O(n^3)$
- 拟牛顿法:$O(n^2)$
Gauss-Newton
non-linear problem
Levenberg-Marquardt
对Gauss-Newton迭代步的修正,防止雅可比奇异位形(damped least squares):
- quasi-Newton methods
- Sequential Quadratic Programming(SQP)