Newton法 拟Newton法

1 Newton 法

考虑无约束优化问题 minxRnf(x),xf 的极小值点. 设 f 有二阶连续偏导数, 进行 Taylor 展开: (1.1)f(x)=f(x(k))+gkT(xx(k))+12(xx(k))TH(x(k))(xx(k)), 这里 gk=g(x(k))=f(x(k)), H(x)=[2fxixj]n×n 为 Hessian 矩阵, Hk=H(x(k)). f(x) 有极值的必要条件是 f(x)=0, 且 H(x) 正定.

接下来需要推导迭代方式, 假设从 x(k) 出发得到了 x(k+1) 就是极小值点, 也即 gk+1=0. 而由 (1.1) 左右同时取梯度: (1.2)f(x)=gk+Hk(xx(k)).[1] 从而再带入 x(k+1): gk+Hk(x(k+1)x(k))=0x(k+1)=x(k)Hk1gk, 然后记 pk=Hk1gk.

Newton 法

输入 f(x),g(x)=f(x),H(x), 精度要求 ε
输出 f(x) 的极小值点 x

  1. x(0), k=0.
  2. 计算 gk=g(x(k)).
  3. ||gk||<ε, 停止计算, x=x(k).
  4. 计算 Hk=H(x(k)), 根据 Hkpk=gk 求出 pk.
  5. x(k+1)=x(k)+pk.
  6. kk+1, 转 2.

2 拟 Newton 法

上述 Newton 法最后需要计算 H1, 计算量较大, 希望通过一个 Gk=G(x(k)) 来近似代替 Hk1.
首先考查一下 Hk 满足的条件. 对 (1.2), 取 x=x(k+1): gk+1gk=Hk(x(k+1)x(k)).yk=gk+1gk,δk=x(k+1)x(k), 则 (2.1)yk=HkδkHk1yk=δk. (这称为拟 Newton 条件).

Hk 正定, Hk1 也是正定的. 由于 Newton 法中搜索方向是 pk=Hk1gk, 因此该方向上的点 x 满足 x=x(k)+λpk=x(k)λHk1gk, 因此 f(x) 的 Taylor 展开近似为 f(x)=f(x(k))λgkTHk1gk.Hk1 正定, 总有 gkTHk1gk>0, 当 λ>0 充分小, 总有 f(x)<f(x(k)). 在拟 Newton 法中, Gk 同样需要满足正定和拟Newton条件: Gk+1yk=δk.

2.1 DFP 算法

[2]

现在假设 Gk+1 的更新公式为 Gk+1=Gk+Pk+Qk (Pk,Qk 为两个附加项), 同右乘 yk 后考虑到拟 Newton条件, 可以让 Pkyk=δk,Qkyk=Gkyk. 例如, 取 Pk=δkδkTδkTyk,Qk=GkykykTGkykTGkyk. 下面梳理这个算法

DFP 算法

输入 f(x),g(x)=f(x), ε
输出 x

  1. 选定 x(0), 正定对称矩阵 G0, k=0.
  2. 计算 gk=g(x(k)). 若 ||gk||<ε, 停止计算.
  3. pk=Gkgk.
  4. 一维搜索: 求 λk 使得 f(x(k)+λkpk)=minλ0f(x(k)+λpk).
  5. x(k+1)=x(k)+λkpk.
  6. ||gk+1||=||g(x(k+1))||<ε, 停止计算, 否则 (3.1)Gk+1=Gk+δkδkTδkTykGkykykTGkykTGkyk.

2.2 BFGS 算法

[3]

这是当下最常用的拟 Newton 算法. 在上述 DFP 算法中, 我们用 Gk 逼近 H1; 我们现在考虑用 Bk 逼近 H. 此时拟 Newton 条件变为 Bk+1δk=yk. 同样令 Bk+1=Bk+Pk+Qk, 同时右乘 δk, 然后考虑 Pkδk=yk,Qkδk=Bkδk 然后给出

BFGS 算法

输入 f(x),g(x)=f(x), ε
输出 x

  1. 选定 x(0), 正定对称矩阵 B0, k=0.
  2. 计算 gk=g(x(k)). 若 ||gk||<ε, 停止计算.
  3. Bkpk=gk 求出 pk.
  4. 一维搜索: 求 λk 使得 f(x(k)+λkpk)=minλ0f(x(k)+λpk).
  5. x(k+1)=x(k)+λkpk.
  6. ||gk+1||=||g(x(k+1))||<ε, 停止计算, 否则 (4.1)Bk+1=Bk+ykykTykTδkBkδkδkTBkδkTBkδk.

2.3 Broyden 类算法

根据 (4.1), 带入 Gk=Bk1,Gk+1=Bk+11, 然后应用 Sherman-Morrison公式得到 Gk+1=(IδkykTδkTyk)Gk(IδkykTδkTyk)T+δkδkTδkTyk, 将这样的 Gk 记作 GBFGS, 与 GDFP 结合: Gk+1=αGDFP+(1α)GBFGS,0α1.


  1. 这里的写法可能稍有误导, Hk(xx(k)) 表示 H(x(k))(xx(k)). ↩︎

  2. Davidon-Fletcher-Powell 算法 ↩︎

  3. Broyden-Fletcher-Goldfarb-Shanno 算法 ↩︎