统计学习方法--牛顿法和拟牛顿法

与公众号同步更新,详细内容及相关ipynb文件在公众号中,公众号:AI入门小白


牛顿法(Newton method) 和拟牛顿法(quasi-Newton method) 也是求解无约束最优化问题的常用方法,有收敛速度快的优点。牛顿法是迭代算法,每一步需要求解目标函数的黑塞矩阵的逆矩阵,计算比较复杂。拟牛顿法通过正定矩阵近似黑塞矩阵的逆矩阵或黑塞矩阵,简化了这一计算过程。

黑塞矩阵是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。

牛顿法

考虑无约束最优化问题
min ⁡ x ∈ R n f ( x ) (B.1) \min_{x \in R^n} f(x) \quad \tag{B.1} xRnminf(x)(B.1)
其中 x ∗ x^* x为目标函数的极小点。

假设 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)附近进行二阶泰勒展开:
f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) + 1 2 ( x − x ( k ) ) T H ( x ( k ) ) ( x − x ( k ) ) (B.2) f(x) = f(x^{(k)}) + g_k^T (x - x^{(k)}) + \frac{1}{2} (x - x^{(k)})^T H(x^{(k)})(x - x^{(k)}) \quad \tag{B.2} f(x)=f(x(k))+gkT(xx(k))+21(xx(k))TH(x(k))(xx(k))(B.2)
这里, g k = g ( x ( k ) ) = ▽ f ( x ( k ) ) g_k = g(x^{(k)}) = \triangledown f(x^{(k)}) gk=g(x(k))=f(x(k)) f ( x ) f(x) f(x)的梯度向量在点 x ( k ) x^{(k)} x(k)的值, H ( x ( k ) ) H(x^{(k)}) H(x(k)) f ( x ) f(x) f(x)的黑塞矩阵
H ( x ) = [ ∂ 2 f ∂ x i ∂ x j ] n × n (B.3) H(x) = \Bigg[\frac{\partial^2 f}{\partial x_i \partial x_j} \Bigg]_{n\times n} \quad \tag{B.3} H(x)=[xixj2f]n×n(B.3)
在点 x ( k ) x^{(k)} x(k)的值。函数 f ( x ) f(x) f(x)有极值的必要条件是在极值点处一阶导数为0 ,即梯度向量为0。特别是当 H ( x ( k ) ) H(x^{(k)}) H(x(k))是正定矩阵时,函数 f ( x ) f(x) f(x)的极值为极小值。

牛顿法利用极小点的必要条件
▽ f ( x ) = 0 (B.4) \triangledown f(x) = 0 \quad \tag{B.4} f(x)=0(B.4)
每次选代中从点 x ( k ) x^{(k)} x(k)开始,求目标函数的极小点,作为第 k + 1 k + 1 k+1次迭代值 x ( k + 1 ) x^{(k+1)} x(k+1)。具体地,假设 x ( k + 1 ) x^{(k+1)} x(k+1)满足:
▽ f ( x ( k + 1 ) ) = 0 (B.5) \triangledown f(x^{(k+1)}) = 0 \quad \tag{B.5} f(x(k+1))=0(B.5)
由式(B.2) 有
▽ f ( x ) = g k + H k ( x − x ( k ) ) (B.6) \triangledown f(x) = g_k + H_k(x - x^{(k)}) \quad \tag{B.6} f(x)=gk+Hk(xx(k))(B.6)
其中 H k = H ( x ( k ) ) H_k = H(x^{(k)}) Hk=H(x(k))。这样,式(B.5)成为
g k + H k ( x ( k + 1 ) − x ( k ) ) = 0 (B.7) g_k + H_k (x^{(k+1)} - x^{(k)}) = 0 \quad \tag{B.7} gk+Hk(x(k+1)x(k))=0(B.7)
因此,
x ( k + 1 ) = x ( k ) − H k − 1 g k (B.8) x^{(k+1)} = x^{(k)} - H_k^{-1} g_k \quad \tag{B.8} x(k+1)=x(k)Hk1gk(B.8)
或者
x ( k + 1 ) = x ( k ) + p k (B.9) x^{(k+1)} = x^{(k)} + p_k \quad \tag{B.9} x(k+1)=x(k)+pk(B.9)
其中,
H k p k = − g k (B.10) H_k p_k = -g_k \quad \tag{B.10} Hkpk=gk(B.10)
用式(B.8)作为迭代公式的算法就是牛顿法。

算法B.1(牛顿法)
输入:目标函数 f ( x ) f(x) f(x),梯度 g ( x ) = ▽ f ( x ) g(x) = \triangledown f(x) g(x)=f(x),黑塞矩阵 H ( x ) H(x) H(x),精度要求 ε \varepsilon ε
输出: f ( x ) f(x) f(x)的极小点 x ∗ x^* x
(1)取初始点 x ( 0 ) x^{(0)} x(0),置 k = 0 k = 0 k=0
(2)计算 g k = g ( x ( k ) ) g_k = g(x^{(k)}) gk=g(x(k))
(3)若 ∥ g k ∥ < ε \lVert g_k \rVert < \varepsilon gk<ε,则停止计算,得近似解 x ∗ = x ( k ) x^* = x^{(k)} x=x(k)
(4)计算 H k = H ( x ( k ) ) H_k = H(x^{(k)}) Hk=H(x(k)),并求 p k p_k pk
H k p k = − g k H_k p_k = -g_k Hkpk=gk
(5)置 x ( k + 1 ) = x ( k ) + p k x^{(k+1)} = x^{(k)} + p_k x(k+1)=x(k)+pk
(6)置 k = k + 1 k = k+1 k=k+1,转(2)

步骤(4) 求 p k , p k = − H k − 1 g k p_k, p_k = -H_k^{-1} g_k pk,pk=Hk1gk,要求 H k − 1 H_k^{-1} Hk1,计算比较复杂,所以有其它改进的方法。

拟牛顿法的思路

在牛顿法的迭代中,需要计算黑塞矩阵的逆矩阵 H − 1 H^{-1} H1,这一计算比较复杂,考虑用一个 n n n阶矩阵 G k = G ( x ( k ) ) G_k = G(x^{(k)}) Gk=G(x(k))来近似代替 H k − 1 = H − 1 ( x ( k ) ) H_k^{-1} = H^{-1}(x^{(k)}) Hk1=H1(x(k))。这就是拟牛顿法的基本想法。

先看牛顿法迭代中黑塞矩阵 H k H_k Hk满足的条件。首先, H k H_k Hk满足以下关系。在式(B.6)中取 x = x ( k + 1 ) x = x^{(k+1)} x=x(k+1),即得
g k + 1 − g k = H k ( x ( k + 1 ) − x ( k ) ) (B.11) g_{k+1} - g_k = H_k(x^{(k+1)} - x^{(k)}) \quad \tag{B.11} gk+1gk=Hk(x(k+1)x(k))(B.11)
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 (B.12) y_k = H_k \delta_k \quad \tag{B.12} yk=Hkδk(B.12)

H k − 1 y k = δ k (B.13) H_k^{-1} y_k = \delta_k \quad \tag{B.13} Hk1yk=δk(B.13)
式(B.12) 或式(B.13) 称为拟牛顿条件。

如果 H k H_k Hk是正定的( H k − 1 H_k^{-1} Hk1也是正定的),那么可以保证牛顿法搜索方向 p k p_k pk是下降方向。这是因为搜索方向是 p k = − H k − 1 g k p_k = -H_k^{-1} g_k pk=Hk1gk,由式(B.8) 有
x = x ( k ) + λ p k = x ( k ) − λ H k − 1 g k (B.14) x = x^{(k)} + \lambda p_k = x^{(k)} - \lambda H_k^{-1} g_k \quad \tag{B.14} x=x(k)+λpk=x(k)λHk1gk(B.14)
所以 f ( x ) f(x) f(x) x ( k ) x^{(k)} x(k)的泰勒展开式(B.2) 可以近似写成:
f ( x ) = f ( x ( k ) ) − λ g k T H k − 1 g k (B.15) f(x) = f(x^{(k)}) - \lambda g_k^T H_k^{-1} g_k \quad \tag{B.15} f(x)=f(x(k))λgkTHk1gk(B.15)
H k − 1 H_k^{-1} Hk1正定,故有 g k T H k − 1 g k > 0 g_k^T H_k^{-1} g_k > 0 gkTHk1gk>0。当 λ \lambda λ为一个充分小的正数时,总有 f ( x ) < f ( x ( k ) ) f(x) < f(x^{(k)}) f(x)<f(x(k)),也就是说 p k p_k pk是下降方向。

拟牛顿法将 G k G_k Gk作为 H k − 1 H_k^{-1} Hk1的近似,要求矩阵 G k G_k Gk满足同样的条件。首先,每次选代矩阵 G k G_k Gk是正定的。同时, G k G_k Gk满足下面的拟牛顿条件:
G k + 1 y k = δ k (B.16) G_{k+1} y_k = \delta_k \quad \tag{B.16} Gk+1yk=δk(B.16)
按照拟牛顿条件选择 G k G_k Gk作为 H k − 1 H_k^{-1} 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 (B.17) G_{k+1} = G_k + \Delta G_k \quad \tag{B.17} Gk+1=Gk+ΔGk(B.17)
这种选择有一定的灵活性,因此有多种具体实现方法。下面介绍Broyden 类拟牛顿法。

DFP (Davidon-Fletcher- Powell) 算法(DFP algorithm)

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 (B.18) G_{k+1} = G_k + P_k +Q_k \quad \tag{B.18} Gk+1=Gk+Pk+Qk(B.18)
其中 P k , Q k P_k, Q_k Pk,Qk是待定矩阵。这时,
G k + 1 y k = G k y k + P k y k + Q k y k (B.19) G_{k+1}y_k = G_k y_k + P_k y_k + Q_k y_k \quad \tag{B.19} Gk+1yk=Gkyk+Pkyk+Qkyk(B.19)
为使 G k + 1 G_{k+1} Gk+1满足拟牛顿条件,可使 P k P_k Pk Q k Q_k Qk满足:
P k y k = δ k (B.20) P_k y_k = \delta_k \quad \tag{B.20} Pkyk=δk(B.20)
Q k y k = − G k y k (B.21) Q_k y_k = -G_k y_k \quad \tag{B.21} Qkyk=Gkyk(B.21)
事实上,不难找出这样的 P k P_k Pk Q k Q_k Qk,例如取:
P k = δ k δ k T δ k T y k (B.22) P_k = \frac{\delta_k \delta_k^T}{\delta_k^T y_k} \quad \tag{B.22} Pk=δkTykδkδkT(B.22)
Q k = − G k y k y k T G k y k T G k y k (B.23) Q_k = -\frac{G_k y_k y_k^T G_k}{y_k^T G_k y_k} \quad \tag{B.23} Qk=ykTGkykGkykykTGk(B.23)
这样就可得到矩阵 G k + 1 G_{k+1} Gk+1的迭代公式:
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 (B.24) G_{k+1} = G_k + \frac{\delta_k \delta_k^T}{\delta_k^T y_k} - \frac{G_k y_k y_k^T G_k}{y_k^T G_k y_k} \quad \tag{B.24} Gk+1=Gk+δkTykδkδkTykTGkykGkykykTGk(B.24)
称为DFP 算法。

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

算法B.2(DFP算法)
输入:目标函数 f ( x ) f(x) f(x),梯度 g ( x ) = ∇ f ( x ) g(x) = \nabla f(x) g(x)=f(x),精度要求 ε \varepsilon ε
输出: f ( x ) f(x) f(x)的极小点 x ∗ x^* x
(1)选定初始点 x ( 0 ) x^{(0)} x(0),取 G 0 G_0 G0为正定对称矩阵,置 k = 0 k=0 k=0
(2)计算 g k = g ( x ( k ) ) g_k = g(x^{(k)}) gk=g(x(k))。若 ∥ g k ∥ < ε \lVert g_k \rVert < \varepsilon gk<ε,则停止计算,得近似解 x ∗ = x ( k ) x^* = x^{(k)} x=x(k);否则转(3)。
(3)置 p k = − G k g k p_k = -G_k g_k pk=Gkgk
(4)一维搜索:求 λ k \lambda_k λk使得
f ( x ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( x ( k ) + λ p k ) f(x^{(k)} + \lambda_k p_k) = \min_{\lambda \geq 0} f(x^{(k)} + \lambda p_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)
(5)置 x ( k + 1 ) = x ( k ) + λ k p k x^{(k+1)} = x^{(k)} + \lambda_k p_k x(k+1)=x(k)+λkpk
(6)计算 g k + 1 = g ( x ( k + 1 ) ) g_{k+1} = g(x^{(k+1)}) gk+1=g(x(k+1)),若 ∥ g k + 1 ∥ < ε \lVert g_{k+1} \rVert < \varepsilon gk+1<ε,则停止计算,得近似解 x ∗ = x ( k + 1 ) x^* = x^{(k+1)} x=x(k+1);否则,按式(B.24)算出 G k + 1 G_{k+1} Gk+1
(7)置 k = k + 1 k = k+1 k=k+1,转(3)。

BFGS (Broyden-Fletcher-Goldfarl-Shanno) 算法(BFGS algorithm)

BFGS 算法是最流行的拟牛顿算法。
可以考虑用 G k G_k Gk逼近黑塞矩阵的逆矩阵 H − 1 H^{-1} H1,也可以考虑用 B k B_k Bk逼近黑塞矩阵 H H H
这时,相应的拟牛顿条件是
B k + 1 δ k = y k (B.25) B_{k+1} \delta_k = y_k \quad \tag{B.25} Bk+1δk=yk(B.25)
可以用同样的方法得到另一迭代公式。首先令
B k + 1 = B k + P k + Q k (B.26) B_{k+1} = B_k + P_k + Q_k \quad \tag{B.26} Bk+1=Bk+Pk+Qk(B.26)
B k + 1 δ k = B k δ k + P k δ k + Q k δ k (B.27) B_{k+1} \delta_k = B_k \delta_k + P_k \delta_k + Q_k \delta_k \quad \tag{B.27} Bk+1δk=Bkδk+Pkδk+Qkδk(B.27)
考虑使 P k P_k Pk Q k Q_k Qk满足:
P k δ k = y k (B.28) P_k \delta_k = y_k \quad \tag{B.28} Pkδk=yk(B.28)
Q k δ k = − B k δ k (B.29) Q_k \delta_k = -B_k \delta_k \quad \tag{B.29} Qkδk=Bkδk(B.29)
找出适合条件的 P k P_k Pk Q k Q_k Qk,得到BFGS算法矩阵 B k + 1 B_{k+1} Bk+1的迭代公式:
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.30) B_{k+1} = B_k + \frac{y_k y_k^T}{y_k^T \delta_k} - \frac{B_k \delta_k \delta_k^T B_k}{\delta_k^T B_k \delta_k} \quad \tag{B.30} Bk+1=Bk+ykTδkykykTδkTBkδkBkδkδkTBk(B.30)
如果初始矩阵 B 0 B_0 B0是正定的,则迭代过程中的每个矩阵 B k B_k Bk都是正定的。

算法B.3(BFGS算法)
输入:目标函数 f ( x ) , g ( x ) = ∇ f ( x ) f(x),g(x) = \nabla f(x) f(x),g(x)=f(x),精度要求 ε \varepsilon ε
输出: f ( x ) f(x) f(x)的极小点 x ∗ x^* x
(1)选定初始点 x ( 0 ) x^{(0)} x(0),取 B 0 B_0 B0为正定对称矩阵,置 k = 0 k=0 k=0
(2)计算 g k = g ( x ( k ) ) g_k = g(x^{(k)}) gk=g(x(k))。若 ∥ g k ∥ < ε \lVert g_k \rVert < \varepsilon gk<ε,则停止计算,得近似解 x ∗ = x ( k ) x^* = x^{(k)} x=x(k);否则转(3)。
(3)由 B k p k = − g k B_k p_k = -g_k Bkpk=gk求出 p k p_k pk
(4)一维搜索:求 λ k \lambda_k λk使得
f ( x ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( x ( k ) + λ p k ) f(x^{(k)} + \lambda_k p_k) = \min_{\lambda \geq 0} f(x^{(k)} + \lambda p_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)
(5)置 x ( k + 1 ) = x ( k ) + λ k p k x^{(k+1)} = x^{(k)} + \lambda_k p_k x(k+1)=x(k)+λkpk
(6)计算 g k + 1 = g ( x ( k + 1 ) ) g_{k+1} = g(x^{(k+1)}) gk+1=g(x(k+1)),若 ∥ g k + 1 ∥ < ε \lVert g_{k+1} \rVert < \varepsilon gk+1<ε,则停止计算,得近似解 x ∗ = x ( k + 1 ) x^* = x^{(k+1)} x=x(k+1);否则,按式(B.30)算出 B k + 1 B_{k+1} Bk+1
(7)置 k = k + 1 k = k + 1 k=k+1,转(3)。

Broyden 类算法(Broyden’s algorithm)

Sherman-Morrison 公式:假设 A A A n n n阶可逆矩阵, u , v u, v u,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
可以从BFGS 算法矩阵 B k B_k Bk的迭代公式(B.30) 得到BFGS 算法关于 G k G_k Gk的迭代公式。事实上,若记 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=Bk1,Gk+1=Bk+11,那么对式(B.30) 两次应用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 (B.31) G_{k+1} = \Bigg(I - \frac{\delta_ky_k^T}{\delta_k^Ty_k} \Bigg)G_k\Bigg(I - \frac{\delta_ky_k^T}{\delta_k^Ty_k} \Bigg)^T + \frac{\delta_k\delta_k^T}{\delta_k^Ty_k} \quad \tag{B.31} Gk+1=(IδkTykδkykT)Gk(IδkTykδkykT)T+δkTykδkδkT(B.31)
称为BFGS 算法关于 G k G_k Gk的迭代公式。

由DFP 算法 G k G_k Gk的迭代公式(B.23) 得到的 G k + 1 G_{k+1} Gk+1记作 G D F P G^{DFP} GDFP,由BFGS算法 G k G_k Gk的迭代公式(B.31) 得到的 G k + 1 G_{k+1} Gk+1记作 G B F G S G^{BFGS} GBFGS,它们都满足方程拟牛顿条件式,所以它们的线性组合
G k + 1 = α G D F P + ( 1 − α ) G B F G S (B.32) G_{k+1} = \alpha G^{DFP} + (1 - \alpha)G^{BFGS} \quad \tag{B.32} Gk+1=αGDFP+(1α)GBFGS(B.32)
也满足拟牛顿条件式,而且是正定的。其中 0 ≤ α ≤ 1 0 \leq \alpha \leq 1 0α1。这样就得到了一类拟牛顿法,称为Broyden 类算法。

数据来源:统计学习方法(第二版)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值