与一阶方法相比,二阶方法使用二阶导数改进了优化。最广泛使用的二阶方法是牛顿法。在牛顿法的迭代中,需要计算Hessian矩阵的逆矩阵 H − 1 H^{-1} H−1,这一计算比较复杂,考虑用一个 n n n阶矩阵 G k = G ( θ ( k ) ) G_k=G(\theta^{(k)}) Gk=G(θ(k))来近似代替 H k − 1 ( θ ( k ) ) H^{-1}_k(\theta^{(k)}) Hk−1(θ(k)),这就是拟牛顿法的基本想法。

先看牛顿法迭代中Hessian矩阵 H k H_k Hk​满足的条件。首先, H k H_k Hk​满足以下关系:

g k + 1 − g k = H k ( θ ( k + 1 ) − θ ( k ) ) g_{k+1}-g_k=H_k(\theta^{(k+1)}-\theta^{(k)}) gk+1​−gk​=Hk​(θ(k+1)−θ(k))

令 y k = g k + 1 − g k y_k=g_{k+1}-g_k yk​=gk+1​−gk​和 δ k = θ ( k + 1 ) − θ ( k ) \delta_k=\theta^{(k+1)}-\theta^{(k)} δk​=θ(k+1)−θ(k)则:

y k = H k δ k 或 H k − 1 y k = δ k y_k=H_k\delta_k\quad\text{或}\quad H_k^{-1}y_k=\delta_k yk​=Hk​δk​或Hk−1​yk​=δk​

上式就是拟牛顿条件。

如果 H k H_k Hk​是正定的( H k − 1 H_k^{-1} Hk−1​也是正定的),那么可以保证牛顿法搜索方向 p k p_k pk​是下降方向。这是因为搜索方向是 p k = − λ g k p_k=-\lambda g_k pk​=−λgk​,所以 f ( θ ) f(\theta) f(θ)在 θ \theta θ的泰勒展开式可以近似写成::

f ( θ ) = f ( θ ( k ) ) − λ g k T H k − 1 g k f(\theta)=f(\theta^{(k)})-\lambda g_k^TH^{-1}_kg_k f(θ)=f(θ(k))−λgkT​Hk−1​gk​

因 H − 1 H^{-1} H−1正定,故有 g k T H k − 1 g k > 0 g_k^TH^{-1}_kg_k>0 gkTHk−1gk>0。当 λ \lambda λ为一个充分小的正数时,总有 f ( θ ) < f ( θ ( k ) ) f(\theta)<f(\theta^{(k)}) f(θ)<f(θ(k)),也就是说 p k p_k pk是下降方向。

拟牛顿法将 G k G_k Gk​作为 H k − 1 H^{-1}_k Hk−1​的近似,要求矩阵 G k G_k Gk​满足同样的条件。首先,每次迭代矩阵 G k G_k Gk​是正定的。同时, G k G_k Gk​满足下面的拟牛顿条件:

G k + 1 y k = δ k G_{k+1}y_k=\delta_k Gk+1​yk​=δk​

按照拟牛顿条件选择 G k G_k Gk​作为 H k − 1 H^{-1}_k Hk−1​的近似或选择 B k B_k Bk​作为 H k H_k Hk​的近似的算法称为拟牛顿法。按照拟牛顿条件,在每次迭代中可以选择更新矩阵 G k + 1 G_{k+1} Gk+1​:

G k + 1 = G k + Δ G k G_{k+1}=G_k+\Delta G_k Gk+1​=Gk​+ΔGk​

这种选择有一定的灵活性,因此有多种具体实现方法。

DFP(Davidon-Fletcher-Powell)算法

DFP算法选择 G k + 1 G_{k+1} Gk+1​的方法是,假设每一步迭代中矩阵 G k + 1 G_{k+1} Gk+1​是由 G k G_k Gk​,加上两个附加项构成的,即:

G k + 1 = G k + P k + Q k G_{k+1}=G_k+P_k+Q_k Gk+1​=Gk​+Pk​+Qk​

其中 P k P_k Pk​和 Q k Q_k Qk​是特定矩阵:

G k + 1 y k = G k y k + P k y k + Q k y k G_{k+1}y_k=G_ky_k+P_ky_k+Q_ky_k Gk+1​yk​=Gk​yk​+Pk​yk​+Qk​yk​

为了使 G k + 1 G_{k+1} Gk+1​满足拟牛顿的条件,可使 P k P_k Pk​和 Q k Q_k Qk​满足:

P k y k = δ k Q k y k = − G k y k P_ky_k=\delta_k \\ Q_ky_k=-G_ky_k Pk​yk​=δk​Qk​yk​=−Gk​yk​

事实上,不难找出这样的 P k P_k Pk​和 Q k Q_k Qk​,比如:

P k = δ k δ k T δ k T y k Q k = − G k y k y k T G k y k G k y k T P_k=\frac{\delta_k\delta_k^T}{\delta_k^Ty_k}\\ Q_k=\frac{-G_ky_ky_k^TG_k}{y_kG_ky_k^T} Pk​=δkT​yk​δk​δkT​​Qk​=yk​Gk​ykT​−Gk​yk​ykT​Gk​​

可以证明,如果初始矩阵 G 0 G_0 G0。是正定的,则迭代过程中的每个矩阵 G k G_k Gk,都是正定的。


DFP算法
输入:目标函数 f ( θ ) f(\theta) f(θ);精度要求 ϵ \epsilon ϵ
输出: f ( θ ) f(\theta) f(θ)的极小值点 θ ∗ \theta^* θ∗
(1) 取初始点 θ ( 0 ) \theta^{(0)} θ(0),取 G 0 G_0 G0​为正定对称矩阵,并置 k = 0 k=0 k=0
(2) g k = g ( θ ( 0 ) ) = ∇ f ( θ ( 0 ) ) g_k=g(\theta^{(0)})=\nabla f(\theta^{(0)}) gk​=g(θ(0))=∇f(θ(0))
(3) while ∣ ∣ g k ∣ ∣ > ϵ \quad||g_k||>\epsilon ∣∣gk​∣∣>ϵ
(4) p k = − G k g k p_k=-G_kg_k pk​=−Gk​gk​
(5) λ k = arg ⁡ min ⁡ λ f ( θ ( k ) + λ p k ) \lambda_k=\arg\min_\lambda f(\theta^{(k)}+\lambda p_k) λk​=argminλ​f(θ(k)+λpk​)
(6) θ ( k + 1 ) = θ ( k ) + λ k p k \theta^{(k+1)} = \theta^{(k)}+\lambda_kp_k θ(k+1)=θ(k)+λk​pk​
(7) k = k + 1 k=k+1 k=k+1
(8) g k + 1 = g ( θ ( k + 1 ) ) = ∇ f ( θ ( k + 1 ) ) g_{k+1}=g(\theta^{(k+1)})=\nabla f(\theta^{(k+1)}) gk+1​=g(θ(k+1))=∇f(θ(k+1))
(9) return θ ∗ = θ ( k ) \quad \theta^*=\theta^{(k)} θ∗=θ(k)


BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法

可以考虑用 G k G_k Gk​逼近Hessian矩阵的逆矩阵 H − 1 H^{-1} H−1,也可以考虑用 B k B_k Bk​逼近海赛矩阵 H H H,这时,相应的拟牛顿条件是:

B k + 1 δ k = y k B_{k+1}\delta_k=y_k Bk+1​δk​=yk​

可以用同样的方法得到另一迭代公式。首先令:

B k + 1 = B k + P k + Q k B k + 1 δ k = B k δ k + P k δ k + Q k δ k B_{k+1}=B_k+P_k+Q_k\\ B_{k+1}\delta_k=B_k\delta_k+P_k\delta_k+Q_k\delta_k Bk+1​=Bk​+Pk​+Qk​Bk+1​δk​=Bk​δk​+Pk​δk​+Qk​δk​

考虑 P k P_k Pk​和 Q k Q_k Qk​满足:

p k δ k = y k Q k δ k = − B k δ k p_k\delta_k=y_k\\ Q_k\delta_k=-B_k\delta_k pk​δk​=yk​Qk​δk​=−Bk​δk​

找出合适的 P k P_k Pk​和 Q k Q_k Qk​,就得到了BFGS算法矩阵 B k + 1 B_{k+1} Bk+1​d=的迭代公式:

B k + 1 = B k + y k y k T y k T δ k − B k δ k δ k T B k δ k T B k δ k B_{k+1}=B_k+\frac{y_ky_k^T}{y_k^T\delta_k}-\frac{B_k\delta_k\delta_k^TB_k}{\delta_k^TB_k\delta_k} Bk+1​=Bk​+ykT​δk​yk​ykT​​−δkT​Bk​δk​Bk​δk​δkT​Bk​​

可以证明,如果初始矩阵 B 0 B_0 B0,是正定的,则迭代过程中的每个矩阵 B k B_k Bk都是正定的。


BFGS算法
输入:目标函数 f ( θ ) f(\theta) f(θ);精度要求 ϵ \epsilon ϵ
输出: f ( θ ) f(\theta) f(θ)的极小值点 θ ∗ \theta^* θ∗
(1) 取初始点 θ ( 0 ) \theta^{(0)} θ(0),取 B 0 B_0 B0​为正定对称矩阵,并置 k = 0 k=0 k=0
(2) g k = g ( θ ( 0 ) ) = ∇ f ( θ ( 0 ) ) g_k=g(\theta^{(0)})=\nabla f(\theta^{(0)}) gk​=g(θ(0))=∇f(θ(0))
(3) while ∣ ∣ g k ∣ ∣ > ϵ \quad||g_k||>\epsilon ∣∣gk​∣∣>ϵ
(4) p k = − g k B k − 1 p_k=-g_kB_k^{-1} pk​=−gk​Bk−1​
(5) λ k = arg ⁡ min ⁡ λ f ( θ ( k ) + λ p k ) \lambda_k=\arg\min_\lambda f(\theta^{(k)}+\lambda p_k) λk​=argminλ​f(θ(k)+λpk​)
(6) θ ( k + 1 ) = θ ( k ) + λ k p k \theta^{(k+1)} = \theta^{(k)}+\lambda_kp_k θ(k+1)=θ(k)+λk​pk​
(7) k = k + 1 k=k+1 k=k+1
(8) g k + 1 = g ( θ ( k + 1 ) ) = ∇ f ( θ ( k + 1 ) ) g_{k+1}=g(\theta^{(k+1)})=\nabla f(\theta^{(k+1)}) gk+1​=g(θ(k+1))=∇f(θ(k+1))
(9) return θ ∗ = θ ( k ) \quad \theta^*=\theta^{(k)} θ∗=θ(k)


Broyden类算法

我们可以从BFGS算法矩阵 B k B_k Bk​,的迭代公式得到BFGS算法关于 G k G_k Gk​的迭代公式。事实上,若记 G k = B k − 1 G_k=B_k^{-1} Gk​=Bk−1​和 G k + 1 = B k + 1 − 1 G_{k+1}=B_{k+1}^{-1} Gk+1​=Bk+1−1​,那么两次应用Sherman-Morrison公式即得:

G k + 1 = ( I − δ k y k T δ k T y k ) G k ( I − δ k y k T δ k T y k ) T + δ k δ k T δ k T y k G_{k+1}=(I-\frac{\delta_ky_k^T}{\delta_k^Ty_k})G_k(I-\frac{\delta_ky_k^T}{\delta_k^Ty_k})^T+\frac{\delta_k\delta_k^T}{\delta_k^Ty_k} Gk+1​=(I−δkT​yk​δk​ykT​​)Gk​(I−δkT​yk​δk​ykT​​)T+δkT​yk​δk​δkT​​

上式称为BFGS算法关于 G k G_k Gk的迭代公式。

由DFP算法 G k G_k Gk​的迭代公式得到的 G k + 1 G_{k+1} Gk+1​,记作 G DFP G^{\text{DFP}} GDFP,由BFGS算法 G k G_k Gk​的迭代公式得到的 G k + 1 G_{k+1} Gk+1​,记作 G BFGS G^{\text{BFGS}} GBFGS,它们都满足方程拟牛顿条件式,所以它们的线性组合:

G k + 1 = α G DFP + ( 1 − α ) G BFGS G_{k+1}=\alpha G^{\text{DFP}}+(1-\alpha)G^{\text{BFGS}} Gk+1​=αGDFP+(1−α)GBFGS

也满足拟牛顿条件式,而且是正定的。其中 0 ≤ α ≤ 1 0\leq\alpha\leq1 0≤α≤1.这样就得到了一类拟牛顿法,称为Broyden类算法。