【ML】梯度下降/牛顿法/拟牛顿法/DFP/BFGS

梯度下降法

f ( x ) f(x) f(x) R n \mathbb{R}^n Rn上具有一阶连续偏导数,求解无约束优化问题为
min ⁡ x ∈ R n f ( x ) \min\limits_{x\in\mathbb{R}^n}f(x) xRnminf(x)
选取合适的初值 x ( 0 ) x^{(0)} x(0),在负梯度方向上迭代更新 x x x的值.
f ( x ) f(x) f(x)在第 k k k次迭代 x ( k ) x^{(k)} x(k)附近Taylor展开
f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) f(x)=f(x^{(k)})+g_k^T(x-x^{(k)}) f(x)=f(x(k))+gkT(xx(k))
其中 g k = ∇ f ( x ( k ) ) g_k=\nabla f(x^{(k)}) gk=f(x(k)).
k + 1 k+1 k+1次迭代值为
x ( k + 1 ) ← x ( k ) + λ k p k x^{(k+1)}\leftarrow x^{(k)}+\lambda_kp_k x(k+1)x(k)+λkpk
其中 p k p_k pk表示搜索方向,取函数下降最快的负梯度方向 p k = − ∇ f ( x ( k ) ) p_k=-\nabla f(x^{(k)}) pk=f(x(k)) λ k \lambda_k λk是步长,由一维线性搜索确定,满足方程
f ( x ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( x ( k ) + λ p k ) f(x^{(k)}+\lambda_kp_k)=\min_{\lambda\geq 0} f(x^{(k)}+\lambda p_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)
当满足收敛条件
∥ f ( x ( k + 1 ) ) − f ( x ( k ) ) ∥ < ε \lVert f(x^{(k+1)})-f(x^{(k)})\rVert<\varepsilon f(x(k+1))f(x(k))<ε
或者
∥ x ( k + 1 ) − x ( k ) ∥ < ε \lVert x^{(k+1)}-x^{(k)}\rVert<\varepsilon x(k+1)x(k)<ε
停止迭代
当目标函数为凸函数时,梯度下降可以求出全局最优解.

牛顿法

牛顿法也是求解无约束问题的常用方法,收敛速度较快,但是每一步需要求解目标函数的Hessian矩阵的逆,算法时间复杂度较高.
f ( x ) f(x) f(x)具有二阶连续偏导数,第 k k k次迭代值为 x ( k ) x^{(k)} x(k),可将 f ( x ) f(x) f(x) x ( k ) x^{(k)} x(k)附近二阶Tylor展开
f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) + 1 2 ( x − x ( k ) ) T H ( x ( k ) ) ( x − x ( k ) ) f(x)=f(x^{(k)})+g_k^T(x-x^{(k)})+\frac{1}{2}(x-x^{(k)})^TH(x^{(k)})(x-x^{(k)}) f(x)=f(x(k))+gkT(xx(k))+21(xx(k))TH(x(k))(xx(k))
其中 H ( x ( k ) ) H(x^{(k)}) H(x(k)) f ( x ) f(x) f(x)的Hessian矩阵
H ( x ) = [ ∂ 2 f ∂ x i ∂ x j ] n × n H(x)=\bigg[\frac{\partial^2f}{\partial x_i \partial x_j}\bigg]_{n\times n} H(x)=[xixj2f]n×n
根据极小值必要条件
∇ f ( x ) = 0 \nabla f(x)=0 f(x)=0
每次从点 x ( k ) x^{(k)} x(k)开始,设
∇ f ( x ( k + 1 ) ) = 0 \nabla f(x^{(k+1)})=0 f(x(k+1))=0
对Taylor二阶展开两端同时对 x x x求导得到
∇ f ( x ) = ∇ f ( x ( k + 1 ) ) + g k + H k ( x ( k + 1 ) − x ( k ) ) = 0 ⇒ g k + H k ( x ( k + 1 ) − x ( k ) ) = 0 (1) \nabla f(x)=\nabla f(x^{(k+1)})+g_k+H_k(x^{(k+1)}-x^{(k)})=0\\ \Rightarrow g_k+H_k(x^{(k+1)}-x^{(k)})=0\tag{1} f(x)=f(x(k+1))+gk+Hk(x(k+1)x(k))=0gk+Hk(x(k+1)x(k))=0(1)
可以解出
x ( k + 1 ) = x ( k ) − H k − 1 g k x^{(k+1)}=x^{(k)}-H_k^{-1}g_k x(k+1)=x(k)Hk1gk
p k = − H k − 1 g k p_k=-H_k^{-1}g_k pk=Hk1gk
得到
x ( k + 1 ) = x ( k ) + p k x^{(k+1)}=x^{(k)}+p_k x(k+1)=x(k)+pk

拟牛顿法

拟牛顿法通过正定矩阵近似Hessian矩阵的逆或者Hessian矩阵,加快了算法计算速度. 在牛顿法中,计算 H k − 1 H_k^{-1} Hk1的时间复杂度较高,考虑使用一个 n n n阶矩阵 G k G_k Gk去近似 H k − 1 H_k^{-1} Hk1.
( 1 ) (1) (1)式可得
g k + 1 − g k = H k ( x ( k + 1 ) − x ( k ) ) g_{k+1}-g_k=H_k(x^{(k+1)}-x^{(k)}) gk+1gk=Hk(x(k+1)x(k))
y k = g k + 1 − g k , δ k = x ( k + 1 ) − x ( k ) y_k=g_{k+1}-g_k, \delta_k=x^{(k+1)}-x^{(k)} yk=gk+1gkδk=x(k+1)x(k)
可以得到拟牛顿条件
y k = H k δ k y_k=H_k\delta_k yk=Hkδk
或者
H k − 1 y k = δ k H_k^{-1}y_k=\delta_k Hk1yk=δk
H k H_k Hk为正定时,可以保证 p k = − H k − 1 g k p_k=-H_k^{-1}g_k pk=Hk1gk是下降方向.

x = x ( k ) + λ p k = x ( k ) − λ H k − 1 g k x=x^{(k)}+\lambda p_k=x^{(k)}-\lambda H_k^{-1}g_k x=x(k)+λpk=x(k)λHk1gk
f ( x ) f(x) f(x) x ( k ) x^{(k)} x(k)的二阶Taylor展开可以表示为
f ( x ) = f ( x ( k ) ) − λ g k T H k − 1 g k f(x)=f(x^{(k)})-\lambda g_k^TH_k^{-1}g_k f(x)=f(x(k))λgkTHk1gk
其中 λ \lambda λ是一个充分小的正数,所以 p k p_k pk是下降方向.
令正定阵 G k + 1 G_{k+1} Gk+1近似 H k − 1 H_k^{-1} Hk1,即 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
G k + 1 = G k + Δ G k G_{k+1}=G_k+\Delta G_k Gk+1=Gk+ΔGk

DFP

DFP算法设置 G k + 1 G_{k+1} Gk+1为如下结构
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 y k = δ k G_{k+1}y_k=\delta_k Gk+1yk=δk

{ P k y k = δ k ⇔ P k = δ k δ k T δ k T y k Q k y k = − G k y k ⇔ Q k = − G k y k y k T G k y k T G k y k \left\{ \begin{aligned} &P_ky_k=\delta_k\Leftrightarrow P_k=\frac{\delta_k\delta_k^T}{\delta_k^Ty_k}\\ &Q_ky_k=-G_ky_k\Leftrightarrow Q_k=-\frac{G_ky_ky_k^TG_k}{y_k^TG_ky_k} \end{aligned} \right. Pkyk=δkPk=δkTykδkδkTQkyk=GkykQk=ykTGkykGkykykTGk
可以得到迭代公式
G k + 1 = G k + δ k δ k T δ k T y k − G k y k y k T G k y k T G k y k G_{k+1}=G_k+\frac{\delta_k\delta_k^T}{\delta_k^Ty_k}-\frac{G_ky_ky_k^TG_k}{y_k^TG_ky_k} Gk+1=Gk+δkTykδkδkTykTGkykGkykykTGk

BFGS

考虑使用矩阵 B k B_k Bk逼近Hessian矩阵 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 δ k = y k ⇔ P k = y k y k T y k T δ k Q k δ k = − B k δ k ⇔ Q k = − B k δ k δ k T B k δ k T B k δ k \left\{ \begin{aligned} &P_k\delta_k=y_k\Leftrightarrow P_k=\frac{y_ky_k^T}{y_k^T\delta_k}\\ &Q_k\delta_k=-B_k\delta_k\Leftrightarrow Q_k=-\frac{B_k\delta_k\delta_k^TB_k}{\delta_k^TB_k\delta_k} \end{aligned} \right. Pkδk=ykPk=ykTδkykykTQkδk=BkδkQk=δkTBkδkBkδkδkTBk
得到迭代公式
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 (2) 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}\tag{2} Bk+1=Bk+ykTδkykykTδkTBkδkBkδkδkTBk(2)

Broyden类算法

根据 G k G_k Gk B k B_k Bk之间的关系, G k = B k − 1 , G k + 1 = B k + 1 − 1 G_k=B_k^{-1},G_{k+1}=B_{k+1}^{-1} Gk=Bk1Gk+1=Bk+11. 对 ( 2 ) (2) (2)使用Sherman-Morrison公式可以得到

假设 A A A n n n阶可逆矩阵, u u u v v v n n n维向量,且 A + u v T A+uv^T A+uvT也是可逆矩阵,则有
( A + u v T ) − 1 = A − 1 − A − 1 u v T A − 1 1 + v T A − 1 u (A+uv^T)^{-1}=A^{-1}-\frac{A^{-1}uv^TA^{-1}}{1+v^TA^{-1}u} (A+uvT)1=A11+vTA1uA1uvTA1

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
可以得到一类拟牛顿法
G k + 1 = α G D F P + ( 1 − α ) G B F G S , 0 ≤ α ≤ 1 G_{k+1}=\alpha G^{DFP}+(1-\alpha)G^{BFGS}, 0\leq\alpha\leq 1 Gk+1=αGDFP+(1α)GBFGS0α1

参考文献

统计学习方法 清华大学出版社 李航

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

minuxAE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值