机器学习中的数学——优化技术:优化算法-[拟牛顿法(Quasi-Newton Methods)]

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

y k = g k + 1 − g k y_k=g_{k+1}-g_k yk=gk+1gk δ 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δkHk1yk=δk

上式就是拟牛顿条件。

如果 H k H_k Hk是正定的( H k − 1 H_k^{-1} Hk1也是正定的),那么可以保证牛顿法搜索方向 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))λgkTHk1gk

H − 1 H^{-1} H1正定,故有 g k T H k − 1 g k > 0 g_k^TH^{-1}_kg_k>0 gkTHk1gk>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 Hk1的近似,要求矩阵 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+1yk=δk

按照拟牛顿条件选择 G k G_k Gk作为 H k − 1 H^{-1}_k Hk1的近似或选择 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+1yk=Gkyk+Pkyk+Qkyk

为了使 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 Pkyk=δkQkyk=Gkyk

事实上,不难找出这样的 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=δkTykδkδkTQk=ykGkykTGkykykTGk

可以证明,如果初始矩阵 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 \quad p_k=-G_kg_k pk=Gkgk
(5) λ k = arg ⁡ min ⁡ λ f ( θ ( k ) + λ p k ) \quad \lambda_k=\arg\min_\lambda f(\theta^{(k)}+\lambda p_k) λk=argminλf(θ(k)+λpk)
(6) θ ( k + 1 ) = θ ( k ) + λ k p k \quad \theta^{(k+1)} = \theta^{(k)}+\lambda_kp_k θ(k+1)=θ(k)+λkpk
(7) g k + 1 = g ( θ ( k + 1 ) ) = ∇ f ( θ ( k + 1 ) ) \quad g_{k+1}=g(\theta^{(k+1)})=\nabla f(\theta^{(k+1)}) gk+1=g(θ(k+1))=f(θ(k+1))
(8) k = k + 1 \quad k=k+1 k=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} H1,也可以考虑用 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+QkBk+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=ykQkδk=Bkδk

找出合适的 P k P_k Pk Q k Q_k Qk,就得到了BFGS算法矩阵 B k + 1 B_{k+1} Bk+1d=的迭代公式:
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δkykykTδkTBkδkBkδkδkTBk

可以证明,如果初始矩阵 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 \quad p_k=-g_kB_k^{-1} pk=gkBk1
(5) λ k = arg ⁡ min ⁡ λ f ( θ ( k ) + λ p k ) \quad \lambda_k=\arg\min_\lambda f(\theta^{(k)}+\lambda p_k) λk=argminλf(θ(k)+λpk)
(6) θ ( k + 1 ) = θ ( k ) + λ k p k \quad \theta^{(k+1)} = \theta^{(k)}+\lambda_kp_k θ(k+1)=θ(k)+λkpk
(7) g k + 1 = g ( θ ( k + 1 ) ) = ∇ f ( θ ( k + 1 ) ) \quad g_{k+1}=g(\theta^{(k+1)})=\nabla f(\theta^{(k+1)}) gk+1=g(θ(k+1))=f(θ(k+1))
(8) k = k + 1 \quad k=k+1 k=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=Bk1 G k + 1 = B k + 1 − 1 G_{k+1}=B_{k+1}^{-1} Gk+1=Bk+11,那么两次应用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δkTykδkykT)Gk(IδkTykδkykT)T+δkTykδ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类算法。

猜你喜欢

转载自blog.csdn.net/hy592070616/article/details/123296903