Newton法 拟Newton法

1 Newton 法

考虑无约束优化问题 minx∈Rnf(x), 设 x∗ 是 f 的极小值点. 设 f 有二阶连续偏导数, 进行 Taylor 展开: (1.1)f(x)=f(x(k))+gkT(x−x(k))+12(x−x(k))TH(x(k))(x−x(k)), 这里 gk=g(x(k))=∇f(x(k)), H(x)=[∂2f∂xi∂xj]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(x−x(k)).[1] 从而再带入 x(k+1): gk+Hk(x(k+1)−x(k))=0⇒x(k+1)=x(k)−Hk−1gk, 然后记 pk=Hk−1gk.

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. 取 k←k+1, 转 2.

2 拟 Newton 法

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

当 Hk 正定, Hk−1 也是正定的. 由于 Newton 法中搜索方向是 pk=−Hk−1gk, 因此该方向上的点 x 满足 x=x(k)+λpk=x(k)−λHk−1gk, 因此 f(x) 的 Taylor 展开近似为 f(x)=f(x(k))−λgkTHk−1gk. 而 Hk−1 正定, 总有 gkTHk−1gk>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δkTyk−GkykykTGkykTGkyk.

2.2 BFGS 算法

[3]

这是当下最常用的拟 Newton 算法. 在上述 DFP 算法中, 我们用 Gk 逼近 H−1; 我们现在考虑用 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δk−BkδkδkTBkδkTBkδk.

2.3 Broyden 类算法

根据 (4.1), 带入 Gk=Bk−1,Gk+1=Bk+1−1, 然后应用 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(x−x(k)) 表示 H(x(k))⋅(x−x(k)). ↩︎

  2. Davidon-Fletcher-Powell 算法 ↩︎

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