参考了各路神仙的资料,包含自己的理解。
有任何的书写错误、排版错误、概念错误等,希望大家包含指正。
由于字数限制,分成三篇博客。
【机器学习】梯度下降法与牛顿法【Ⅰ】梯度下降法概述
【机器学习】梯度下降法与牛顿法【Ⅱ】牛顿法与修正牛顿法
【机器学习】梯度下降法与牛顿法【Ⅲ】拟牛顿法
牛顿法在每次迭代时需要计算出黑塞矩阵 H t H_t Ht,然后求解一个以该矩阵为系数矩阵的线性方程组 H t d t = − g t H_td_t=-g_t Htdt=−gt,这非常耗时,另外黑塞矩阵可能不可逆。为此提出了一些改进的方法,典型的代表是拟牛顿法(Quasi-Newton)。拟牛顿法是一类方法,其思想为不去计算黑塞矩阵及其逆矩阵,而是设法构造一个新矩阵来逼近黑塞矩阵或其逆矩阵。
拟牛顿法的算法实现为
输入: 初始值 x 0 精度阈值 ε 初始矩阵 B ^ 0 过程: \begin{array}{ll} \textbf{输入:}&\space初始值\space x_0 \space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space \\ &\space精度阈值 \space \varepsilon \\ &\space 初始矩阵 \space \hat{B}_0\\ \textbf{过程:} \end{array} 输入:过程: 初始值 x0 精度阈值 ε 初始矩阵 B^0
1 : t = 0 , B 0 = B ^ 0 2 : while true do 3 : 计算梯度 g t 4 : if ∣ ∣ g t ∣ ∣ 2 < ε then 5 : return 6 : end if 7 : 计算搜索方向 d t = − B t − 1 g t 8 : 确定步长 λ t 9 : 计算新的迭代点 x t + 1 = x t + λ t d t 10 : 确定 B t + 1 11 : t = t + 1 12 : end while \begin{array}{rl} 1:&t=0, \space B_0=\hat{B}_0\\ 2:&\textbf{while} \space \textbf{true} \space \textbf{do} \\ 3:&\space\space\space\space 计算梯度\space g_t \\ 4:&\space\space\space\space \textbf{if}\space \left|\left|g_t\right|\right|_2\space \lt \varepsilon \space \textbf{then}\\ 5:&\space\space\space\space \space\space\space\space \textbf{return } \\ 6:&\space\space\space\space \textbf{end}\space \textbf{if} \\ 7:&\space\space\space\space 计算搜索方向 \space d_t=-B^{-1}_tg_t \\ 8:&\space\space\space\space 确定步长 \space \lambda_t \\ 9:&\space\space\space\space 计算新的迭代点 \space x_{t+1}=x_t+ \lambda_td_t \\ 10:&\space\space\space\space 确定 \space B_{t+1} \\ 11:&\space\space\space\space t=t+1 \\ 12:&\textbf{end}\space\textbf{while} \end{array} 1:2:3:4:5:6:7:8:9:10:11:12:t=0, B0=B^0while true do 计算梯度 gt if ∣∣gt∣∣2 <ε then return end if 计算搜索方向 dt=−Bt−1gt 确定步长 λt 计算新的迭代点 xt+1=xt+λtdt 确定 Bt+1 t=t+1end while
输出: 极值点 x t \begin{array}{ll} \textbf{输出:} &\space 极值点\space x_t \space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space \end{array} 输出: 极值点 xt
算法 4 拟牛顿法迭代算法
不同的具体拟牛顿法唯一的区别在于确定算法中 B t + 1 B_{t+1} Bt+1 的方法不同。
在牛顿法中,对二阶泰勒展开式两侧求导,有
∇ f ( x t + 1 ) = ∇ f ( x t ) + H t ( x t + 1 − x t ) \nabla f(x_{t+1})=\nabla f(x_t)+H_t(x_{t+1}-x_t) ∇f(xt+1)=∇f(xt)+Ht(xt+1−xt)
用于逼近黑塞矩阵 H H H 的近似矩阵 B B B 也要满足类似上式的关系。因此存在拟牛顿方程
∇ f ( x t + 1 ) − ∇ f ( x t ) = B t + 1 ( x t + 1 − x t ) \nabla f(x_{t+1})-\nabla f(x_t)=B_{t+1}(x_{t+1}-x_t) ∇f(xt+1)−∇f(xt)=Bt+1(xt+1−xt)
有些人可能有疑问,为什么式 7 7 7 是 B t + 1 B_{t+1} Bt+1 对应 H t H_t Ht 。
根据算法 3 3 3 的描述,确定 B t + 1 B_{t+1} Bt+1 这步紧跟在第 t t t 轮迭代计算完 x t + 1 x_{t+1} xt+1 之后,其实是提前计算出了下一次迭代中的近似矩阵 B B B ,这样在第 t ′ = t + 1 t'=t+1 t′=t+1 轮迭代时就可以直接使用 B t ′ B_{t'} Bt′ ,根据 d t ′ = − B t ′ − 1 g t ′ d_{t'}=-B^{-1}_{t'}g_{t'} dt′=−Bt′−1gt′ 更新迭代方向,再根据 x t ′ + 1 = x t ′ + λ t ′ d t ′ x_{t'+1}=x_{t'}+\lambda_{t'}d_{t'} xt′+1=xt′+λt′dt′ 计算新迭代点,此时, B t ′ B_{t'} Bt′ 依然与 H t ′ H_{t'} Ht′ 对应。
理解了算法过程,这里也就理解了,不再赘述。
记 y t = ∇ f ( x t + 1 ) − ∇ f ( x t ) y_t=\nabla f(x_{t+1})-\nabla f(x_t) yt=∇f(xt+1)−∇f(xt), s t = x t + 1 − x t s_t=x_{t+1}-x_t st=xt+1−xt,拟牛顿方程可以简记为
y t = B t + 1 s t (7) y_t=B_{t+1}s_t \tag{7} yt=Bt+1st(7)
还可以从拉格朗日中值定理的角度去理解拟牛顿方程,比较容易理解,不再赘述。
另外,如果我们直接逼近的是 H t − 1 H^{-1}_t Ht−1 而不是 H t H_t Ht ,规定 C t C_t Ct 是对 H t − 1 H_t^{-1} Ht−1 的近似,那么对应地满足
s t = C t + 1 y t (8) s_t=C_{t+1}y_t \tag{8} st=Ct+1yt(8)
两个拟牛顿方程对应了两种具体的实现思想,即通过 B t B_t Bt 逼近 H t H_t Ht 和通过 C t C_t Ct 逼近 H t − 1 H_{t}^{-1} Ht−1 。
大体上,基于已有信息 y t y_t yt、 s t s_t st 和 B t B_t Bt 来确定 B t + 1 B_{t+1} Bt+1(或基于已有信息 y t y_t yt、 s t s_t st 和 C t C_t Ct 来确定 C t + 1 C_{t+1} Ct+1 )的方法分为两大类。
第一类方法是选择满足拟牛顿方程且与 B t B_t Bt 近似的矩阵,即要求满足
min ∣ ∣ B t + 1 − B t ∣ ∣ , s . t . y t = B t + 1 s t , B = B T \min ||B_{t+1}-B_t||,\space\space {\rm s.t.}\space y_t=B_{t+1}s_t,B=B^T min∣∣Bt+1−Bt∣∣, s.t. yt=Bt+1st,B=BT
同理,如果是选择与 C t C_t Ct 近似的矩阵,即需要满足
min ∣ ∣ C t + 1 − C t ∣ ∣ , s . t . s t = C t + 1 y t , C = C T \min ||C_{t+1}-C_t||,\space\space {\rm s.t.}\space s_t=C_{t+1}y_t,C=C^T min∣∣Ct+1−Ct∣∣, s.t. st=Ct+1yt,C=CT
这部分具体求解方法过于数学,不进行讲解。
第二类方法是在满足拟牛顿方程的基础上,对 B t B_t Bt(或 C t C_t Ct)进行校正,令 B t + 1 = B t + Δ B t B_{t+1}=B_t+\Delta B_t Bt+1=Bt+ΔBt(或 C t + 1 = C t + Δ C t ) C_{t+1}=C_t+\Delta C_t) Ct+1=Ct+ΔCt) 。根据对矩阵 Δ B t \Delta B_t ΔBt(或 Δ C t \Delta C_t ΔCt)的秩要求不同,分为“rank-2 校正”和“rank-1 校正”,“rank-2 校正”要求 Δ B t \Delta B_t ΔBt(或 Δ C t \Delta C_t ΔCt)的秩为 2 2 2 ,这类方法包括 DFP 方法和 BFGS 方法;“rank-1 校正”要求 Δ B t \Delta B_t ΔBt(或 Δ C t \Delta C_t ΔCt)的秩为 1 1 1 ,这类方法包括 SR-1 方法。之所以对 Δ B t \Delta B_t ΔBt(或 Δ C t \Delta C_t ΔCt)的秩进行限制,是因为可以避免 Δ B t \Delta B_t ΔBt(或 Δ C t \Delta C_t ΔCt)过于复杂,一方面导致计算难度上升,另一方面引入过多无关信息。
DFP 方法的基本思想是使用矩阵 C t C_t Ct 来逼近黑塞矩阵的逆矩阵 H t − 1 H_t^{-1} Ht−1 。在 DFP 方法中 C t + 1 C_{t+1} Ct+1 与 { y t , s t , C t } \{y_t,s_t,C_t\} {yt,st,Ct} 满足如下关系
C t + 1 = C t − C t y t y t T C t y t T C t y t + s t s t T y t T s t (9) C_{t+1}=C_t-\frac{C_ty_ty_t^TC_t}{y_t^TC_ty_t}+\frac{s_ts_t^T}{y_t^Ts_t} \tag{9} Ct+1=Ct−ytTCtytCtytytTCt+ytTstststT(9)
推导过程如下。
上文提到 C t + 1 = C t + Δ C t C_{t+1}=C_t+\Delta C_t Ct+1=Ct+ΔCt ,其中要求 Δ C t \Delta C_t ΔCt 秩为 2 2 2 ,那么不妨假设 Δ C t = a u u T + b v v T \Delta C_t=auu^T+bvv^T ΔCt=auuT+bvvT,即
C t + 1 = C t + a u u T + b v v T (10) C_{t+1}=C_t+auu^T+bvv^T \tag{10} Ct+1=Ct+auuT+bvvT(10)
其中 u u u 和 v v v 为 n n n 维向量, a a a 和 b b b 为标量。
可以证明只有当 u u u 和 v v v 线性无关时, r ( a u u T + b v v T ) = 2 r(auu^T+bvv^T)=2 r(auuT+bvvT)=2,其他情况下 a u u T + b v v T auu^T+bvv^T auuT+bvvT 的秩均不为 2 2 2,所以我认为更准确地来说, Δ C t \Delta C_t ΔCt 的秩最大为 2 2 2 。
将拟牛顿方程式 ( 8 ) (8) (8) 代入式 ( 10 ) (10) (10) 中,变形后得
C t y t + a u u T y t + b v v T y t − s t = 0 (11) C_ty_t+auu^Ty_t+bvv^Ty_t-s_t=0 \tag{11} Ctyt+auuTyt+bvvTyt−st=0(11)
令 u = C t y t u=C_ty_t u=Ctyt,则式 ( 11 ) (11) (11) 的前两项可以合并为 C t y t + a u u T y t = u ( 1 + a u T y t ) C_ty_t+auu^Ty_t=u(1+au^Ty_t) Ctyt+auuTyt=u(1+auTyt) ;令 v = s t v=s_t v=st,则式 ( 11 ) (11) (11) 的后两项可以合并为 b v v T y t − s t = s t ( b v T y t − 1 ) bvv^Ty_t-s_t=s_t(bv^Ty_t-1) bvvTyt−st=st(bvTyt−1) 。由于方程就式 ( 11 ) (11) (11) 一个,但是未知数却有 u u u 和 v v v 两个,因此方程存在多组解,我们不妨认为 1 + a u T y t = 0 1+au^Ty_t=0 1+auTyt=0, b v T y t − 1 = 0 bv^Ty_t-1=0 bvTyt−1=0,可以解得
从另一个角度来说,如果 u u u 和 v v v 线性无关,那么想要式 ( 11 ) (11) (11) 成立就必须保证 u u u 的系数 1 + a u T y t 1+au^Ty_t 1+auTyt 和 v v v 的系数 b v T y t − 1 bv^Ty_t-1 bvTyt−1 均为零。
a = − 1 u T y t = − 1 y t T C t y t b = 1 v T y t = 1 s t T y t a=-\frac{1}{u^Ty_t}=-\frac{1}{y_t^TC_ty_t} \\ b=\frac{1}{v^Ty_t}=\frac{1}{s_t^Ty_t} a=−uTyt1=−ytTCtyt1b=vTyt1=stTyt1
将 u = C t y t u=C_ty_t u=Ctyt 和 v = s t v=s_t v=st 以及上面的结果代回式 ( 10 ) (10) (10) 中可得式 ( 9 ) (9) (9) 。
BFPS 方法的基本思想是使用矩阵 B t B_t Bt 来逼近黑塞矩阵 H t H_t Ht 。在 BFPS 方法中 B t + 1 B_{t+1} Bt+1 与 { y t , s t , B t } \{y_t,s_t,B_t\} {yt,st,Bt} 满足如下关系
B t + 1 = B t − B t s t s t T B t s t T B t s t + y t y t T y t T s t (12) B_{t+1}=B_t-\frac{B_ts_ts_t^TB_t}{s_t^TB_ts_t}+\frac{y_ty_t^T}{y_t^Ts_t} \tag{12} Bt+1=Bt−stTBtstBtststTBt+ytTstytytT(12)
推导过程与 DFP 相似,由于 BFGS 对应的拟牛顿方程式 ( 7 ) (7) (7)与 BFP 的拟牛顿方程式 ( 8 ) (8) (8) 是对偶的,所以只需要将式 ( 9 ) (9) (9) 中的 y t y_t yt 和 s t s_t st 调换即可。
在根据 d t = − B t − 1 g t d_t=-B^{-1}_tg_t dt=−Bt−1gt 获取迭代方向时,需要用到 B − 1 B^{-1} B−1,虽然又出现了计算逆矩阵的步骤,直观上来看与引入拟牛顿法的目的相违背,但是其实可以通过 Sherman-Morrison 公式将式 ( 12 ) (12) (12) 关于 B B B 的递推公式转换为关于 B − 1 B^{-1} B−1 的递推公式。
Sherman-Morrison公式以 Jack Sherman 和 Winifred J. Morrison命名,在线性代数中,是求解逆矩阵的一种方法。对于任意非奇异方阵 A A A 和 n n n 维向量 u , v ∈ R n u,v\in \mathbb{R}^n u,v∈Rn,若 1 + v T A − 1 u ≠ 0 1+v^TA^{-1}u\ne 0 1+vTA−1u=0,则
( A + u v T ) − 1 = A − 1 − ( A − 1 u ) ( v T A − 1 ) 1 + v T A − 1 u (13) (A+uv^T)^{-1}=A^{-1}-\frac{(A^{-1}u)(v^TA^{-1})}{1+v^TA^{-1}u}\tag{13} (A+uvT)−1=A−1−1+vTA−1u(A−1u)(vTA−1)(13)
通过式 ( 13 ) (13) (13) 最终得到
B t + 1 − 1 = ( I − s t y t T s t T y t ) B t − 1 ( I − y t s t T s t T y t ) + s t s t T s t T y t (14) B_{t+1}^{-1}=\left(I-\frac{s_ty^T_t}{s^T_ty_t}\right)B_t^{-1}\left(I-\frac{y_ts_t^T}{s^T_ty_t}\right)+\frac{s_ts^T_t}{s^T_ty_t} \tag{14} Bt+1−1=(I−stTytstytT)Bt−1(I−stTytytstT)+stTytststT(14)
我们一般初始化 B 0 = I B_0=I B0=I,所以 B 0 − 1 = I B^{-1}_0=I B0−1=I,之后根据式 ( 14 ) (14) (14) 进行递推即可。
下面是推导式 ( 14 ) (14) (14) 的过程。
为了方便叙述,省略下标。令 D = B + y y T y T s D=B+\frac{yy^T}{y^Ts} D=B+yTsyyT ,可知 − B s s T B s T B s = − 1 s T B s ( B s ) ( B s ) T -\frac{Bss^TB}{s^TBs}=-\frac{1}{s^TBs}(Bs)(Bs)^T −sTBsBssTB=−sTBs1(Bs)(Bs)T, s T B s s^TBs sTBs 为标量(二次型形式)。
对式 ( 12 ) (12) (12) 两侧取逆,利用Sherman-Morrison公式有
B t + 1 − 1 = ( D − 1 s T B s ( B s ) ( B s ) T ) − 1 = D − 1 − D − 1 ( − 1 s T B s ( B s ) ( B s ) T ) D − 1 1 − 1 s T B s ( B s ) D − 1 ( B s ) T = D − 1 + D − 1 B s s T B s T B s − s T B D − 1 B s D − 1 \begin{align} B_{t+1}^{-1}&=\left( D-\frac{1}{s^TBs}(Bs)(Bs)^T \right)^{-1} \notag \\ &=D^{-1}-\frac{D^{-1}\left( -\frac{1}{s^TBs}(Bs)(Bs)^T \right)D^{-1}}{1-\frac{1}{s^TBs}(Bs)D^{-1}(Bs)^T} \notag \\ &=D^{-1}+D^{-1}\frac{Bss^TB}{s^TBs-s^TBD^{-1}Bs}D^{-1} \tag{15} \end{align} Bt+1−1=(D−sTBs1(Bs)(Bs)T)−1=D−1−1−sTBs1(Bs)D−1(Bs)TD−1(−sTBs1(Bs)(Bs)T)D−1=D−1+D−1sTBs−sTBD−1BsBssTBD−1(15)
对 D − 1 D^{-1} D−1 再次利用Sherman-Morrison公式有
D − 1 = ( B + y y T y T s ) − 1 = B − 1 − B − 1 y y T y T s B − 1 1 + 1 y T s y T B − 1 y = B − 1 − B − 1 y y T B − 1 y T s + y T B − 1 y \begin{align} D^{-1}&=\left(B+\frac{yy^T}{y^Ts}\right)^{-1} \notag \\ &=B^{-1}-\frac{B^{-1}\frac{yy^T}{y^Ts}B^{-1}}{1+\frac{1}{y^Ts}y^TB^{-1}y} \notag \\ &=B^{-1}-\frac{B^{-1}yy^TB^{-1}}{y^Ts+y^TB^{-1}y}\tag{16} \end{align} D−1=(B+yTsyyT)−1=B−1−1+yTs1yTB−1yB−1yTsyyTB−1=B−1−yTs+yTB−1yB−1yyTB−1(16)
注意到 y T s y^Ts yTs 和 y T B − 1 y y^TB^{-1}y yTB−1y 都是常数,令 Q = y T s + y T B − 1 y Q=y^Ts+y^TB^{-1}y Q=yTs+yTB−1y,将式 ( 16 ) (16) (16) 代回式 ( 15 ) (15) (15) 中,其中第二项
D − 1 B s s T B s T B s − s T B D − 1 B s D − 1 = ( B − 1 − B − 1 y y T B − 1 Q ) B s s T B s T B s − s T B ( B − 1 − B − 1 y y T B − 1 Q ) B s ( B − 1 − B − 1 y y T B − 1 Q ) = ( B − 1 − B − 1 y y T B − 1 Q ) B s s T B s T B s − s T B s + s T y y T s Q ( B − 1 − B − 1 y y T B − 1 Q ) = Q s T y y T s ( B − 1 − B − 1 y y T B − 1 Q ) B s s T B ( B − 1 − B − 1 y y T B − 1 Q ) = Q s T y y T s ( s s T B − B − 1 y y T s s T B − 1 Q ) ( B − 1 − B − 1 y y T B − 1 Q ) = Q s T y y T s ( s s T − s s T y y T B − 1 Q − B − 1 y y T s s T Q + B − 1 y y T s s T y y T B − 1 Q 2 ) ( B − 1 − B − 1 y y T B − 1 Q ) , ( l e t k = s T y = y T s ) = Q k 2 ( s s T − k s y T B − 1 Q − B − 1 y y T s T Q + B − 1 k 2 y y T B − 1 Q 2 ) = Q s s T k 2 − s y T B − 1 k − B − 1 y s T k + B − 1 y y T B − 1 Q \begin{align} D^{-1}\frac{Bss^TB}{s^TBs-s^TBD^{-1}Bs}D^{-1} & \notag \\ &= \left( B^{-1}-\frac{B^{-1}yy^TB^{-1}}{Q} \right) \frac{Bss^TB}{s^TBs-s^TB\left( B^{-1}-\frac{B^{-1}yy^TB^{-1}}{Q} \right)Bs} \left( B^{-1}-\frac{B^{-1}yy^TB^{-1}}{Q} \right) \notag \\ &= \left( B^{-1}-\frac{B^{-1}yy^TB^{-1}}{Q} \right) \frac{Bss^TB}{s^TBs-s^TBs+\frac{s^Tyy^Ts}{Q}} \left( B^{-1}-\frac{B^{-1}yy^TB^{-1}}{Q} \right) \notag \\ &= \frac{Q}{s^Tyy^Ts}\left( B^{-1}-\frac{B^{-1}yy^TB^{-1}}{Q} \right) Bss^TB\left( B^{-1}-\frac{B^{-1}yy^TB^{-1}}{Q} \right)\notag\\ &= \frac{Q}{s^Tyy^Ts}\left( ss^TB-\frac{B^{-1}yy^Tss^TB^{-1}}{Q} \right) \left( B^{-1}-\frac{B^{-1}yy^TB^{-1}}{Q} \right)\notag\\ &= \frac{Q}{s^Tyy^Ts}\left( ss^T-\frac{ss^Tyy^TB^{-1}}{Q}-\frac{B^{-1}yy^Tss^T}{Q}+\frac{B^{-1}yy^Tss^Tyy^TB^{-1}}{Q^2} \right) \left( B^{-1}-\frac{B^{-1}yy^TB^{-1}}{Q} \right),\space\space ({\rm let} \space k=s^Ty=y^Ts ) \notag \\ &= \frac{Q}{k^2}\left( ss^T-\frac{ksy^TB^{-1}}{Q} - \frac{B^{-1}yy^Ts^T}{Q} + \frac{B^{-1}k^2yy^TB^{-1}}{Q^2} \right) \notag \\ &= \frac{Qss^T}{k^2} -\frac{sy^TB^{-1}}{k} - \frac{B^{-1}ys^T}{k} + \frac{B^{-1}yy^TB^{-1}}{Q} \notag \end{align} D−1sTBs−sTBD−1BsBssTBD−1=(B−1−QB−1yyTB−1)sTBs−sTB(B−1−QB−1yyTB−1)BsBssTB(B−1−QB−1yyTB−1)=(B−1−QB−1yyTB−1)sTBs−sTBs+QsTyyTsBssTB(B−1−QB−1yyTB−1)=sTyyTsQ(B−1−QB−1yyTB−1)BssTB(B−1−QB−1yyTB−1)=sTyyTsQ(ssTB−QB−1yyTssTB−1)(B−1−QB−1yyTB−1)=sTyyTsQ(ssT−QssTyyTB−1−QB−1yyTssT+Q2B−1yyTssTyyTB−1)(B−1−QB−1yyTB−1), (let k=sTy=yTs)=k2Q(ssT−QksyTB−1−QB−1yyTsT+Q2B−1k2yyTB−1)=k2QssT−ksyTB−1−kB−1ysT+QB−1yyTB−1
将第二项代回,有
B t + 1 − 1 = D − 1 + Q s s T k 2 − s y T B − 1 k − B − 1 y s T k + B − 1 y y T B − 1 Q = B − 1 + Q s s T k 2 − s y T B − 1 k − B − 1 y s T k = ( I − s y T k ) B − 1 − B − 1 y s T k + ( y T s + y T B − 1 y ) s s T k 2 = ( I − s y T k ) B − 1 − B − 1 y s T k + s s T k + y T B − 1 y s s T k 2 , ( N o t e t h a t y T B − 1 y i s s c a l a r , s o y T B − 1 y s s T = s y T B − 1 y s T ) = ( I − s y T k ) B − 1 − B − 1 y s T k + s s T k + s y T k B − 1 y s T k = ( I − s y T k ) B − 1 − ( I − y s T k ) B − 1 y s T k + s s T k = ( I − s y T k ) B − 1 ( I − y s T k ) + s s T k \begin{align} B_{t+1}^{-1} &= D^{-1} + \frac{Qss^T}{k^2} -\frac{sy^TB^{-1}}{k} - \frac{B^{-1}ys^T}{k} + \frac{B^{-1}yy^TB^{-1}}{Q} \notag \\ &= B^{-1}+\frac{Qss^T}{k^2} -\frac{sy^TB^{-1}}{k} - \frac{B^{-1}ys^T}{k} \notag \\ &= \left( I-\frac{sy^T}{k} \right)B^{-1}-\frac{B^{-1}ys^T}{k} + \frac{(y^Ts+y^TB^{-1}y)ss^T}{k^2} \notag\\ &= \left( I-\frac{sy^T}{k} \right)B^{-1}-\frac{B^{-1}ys^T}{k} + \frac{ss^T}{k} + \frac{y^TB^{-1}yss^T}{k^2} ,\space\space ({\rm Note \space that \space} y^TB^{-1}y {\rm \space is \space scalar,\space so \space} y^TB^{-1}yss^T=sy^TB^{-1}ys^T)\notag\\ &= \left( I-\frac{sy^T}{k} \right)B^{-1}-\frac{B^{-1}ys^T}{k} + \frac{ss^T}{k} + \frac{sy^T}{k}\frac{B^{-1}ys^T}{k} \notag \\ &= \left( I-\frac{sy^T}{k} \right)B^{-1} - \left( I-\frac{ys^T}{k} \right)\frac{B^{-1}ys^T}{k} + \frac{ss^T}{k} \notag \\ &= \left( I-\frac{sy^T}{k} \right)B^{-1} \left( I-\frac{ys^T}{k} \right)+\frac{ss^T}{k} \tag{17} \end{align} Bt+1−1=D−1+k2QssT−ksyTB−1−kB−1ysT+QB−1yyTB−1=B−1+k2QssT−ksyTB−1−kB−1ysT=(I−ksyT)B−1−kB−1ysT+k2(yTs+yTB−1y)ssT=(I−ksyT)B−1−kB−1ysT+kssT+k2yTB−1yssT, (Note that yTB−1y is scalar, so yTB−1yssT=syTB−1ysT)=(I−ksyT)B−1−kB−1ysT+kssT+ksyTkB−1ysT=(I−ksyT)B−1−(I−kysT)kB−1ysT+kssT=(I−ksyT)B−1(I−kysT)+kssT(17)
将 k = s T y k=s^Ty k=sTy 代回式 ( 17 ) (17) (17) ,加上下标得到式 ( 14 ) (14) (14) 。推导完毕。
一定注意 B t − 1 ≠ C t B_t^{-1} \ne C_t Bt−1=Ct !虽然根据拟牛顿公式很容易得到 B B B 和 C C C 满足互逆的关系,但本质上二者是不互逆的,通过对比式 ( 9 ) (9) (9) 和式 ( 14 ) (14) (14) 可以很清楚地看到二者是不同的。直观上理解, B t − 1 B_t^{-1} Bt−1 是我们通过对 B t B_t Bt 迭代再取逆得到的,而 C t C_t Ct 通过迭代可以直接得到,除了 B 0 B_0 B0 和 C 0 C_0 C0 一般取 I I I 所以互逆外,其他迭代中 B B B 和 C C C 无法满足时刻互逆,因此最终也无法保证二者互逆。
另一个角度考虑,如果二者满足互逆关系,那么 BFGS 方法完全没有必要存在,相比于 DFP 方法甚至还多了一步求逆的过程。相反,实践表明 BFGS 方法往往比 DFP 方法更加有效,被认为是最有效的拟牛顿法。
有别于 DFP 方法和 BFGS 方法,SR-1 方法是一种 rank-1 校正方法。其基本思想也是用 B t B_t Bt(或 C t C_t Ct)来逼近黑塞矩阵 H t H_t Ht(或其逆矩阵 H t − 1 H^{-1}_t Ht−1),这里仅大概描述一下 SR-1 采用 B t B_t Bt 逼近黑塞矩阵 H t H_t Ht 时公式,采用新的矩阵逼近黑塞矩阵的逆矩阵的公式类似。在 SR-1 方法中 B t + 1 B_{t+1} Bt+1 与 { y t , s t , B t } \{y_t,s_t,B_t\} {yt,st,Bt} 满足如下关系
B t + 1 = B t + ( y t − B t s t ) ( y t − B t s t ) T ( y t − B t s t ) T s t (18) B_{t+1}=B_t+\frac{(y_t-B_ts_t)(y_t-B_ts_t)^T}{(y_t-B_ts_t)^Ts_t} \tag{18} Bt+1=Bt+(yt−Btst)Tst(yt−Btst)(yt−Btst)T(18)
推导过程与 BFGS 方法类似。只不过因为是 rank-1 校正,所以只要求 Δ B t = a u u T \Delta B_t=auu^T ΔBt=auuT 。将拟牛顿方程式 ( 7 ) (7) (7) 代入 B t + 1 = B t + a u u T B_{t+1}=B_t+auu^T Bt+1=Bt+auuT 中得
a u u T s t = y t − B t s t auu^Ts_t=y_t-B_ts_t auuTst=yt−Btst
令 u = y t − B t s t u=y_t-B_ts_t u=yt−Btst ,得 a u T s t = 1 au^Ts_t=1 auTst=1,即 a = 1 u T s t = 1 ( y t − B t s t ) T s t a=\frac{1}{u^Ts_t}=\frac{1}{(y_t-B_ts_t)^Ts_t} a=uTst1=(yt−Btst)Tst1 。将 u u u 和 a a a 代回 B t + 1 = B t + a u u T B_{t+1}=B_t+auu^T Bt+1=Bt+auuT 中得到式 ( 18 ) (18) (18) 。
SR-1 方法的迭代公式相较于 DFP 方法和 BFGS 方法更加简单,但是 DFP 方法和 BFGS 方法可以保证 B B B (或 C C C)正定,而 SR-1 方法不行。
牛顿法属于高阶优化算法,梯度下降法属于低阶优化算法,因为相较而言高阶算法看得更远,在做出某一步点移动的选择时候,会考虑之后的更多步,因此下降路径更符合真实的最快下降路径,低阶算法所考虑的下降路径则更局部,因此牛顿法的收敛速度会比梯度下降法更快。
假设目标函数是个二元函数,那么牛顿法相当于用一个曲面来拟合局部区域,而梯度下降法相当于用一个平面拟合局部区域,显然曲面拟合会更加真实,更加相似。
二者都存在陷入局部极值点的问题。可以通过设置不同的初始迭代点多次执行,或者规定约束条件以保证结果正确。
原始牛顿法主要存在三个缺点:
缺点2可以由修正牛顿法解决,缺点2和缺点3可以由拟牛顿法解决。
另外需要注意,在深度学习中,往往采用梯度下降法,而很少采用牛顿法,主要是因为神经网络常常是非凸的,牛顿法难以收敛,即使收敛也很容易陷入鞍点。
[1] 牛顿法 - 博客园
[2] 黑塞矩阵 - 百度百科
[3] 牛顿法和拟牛顿法 - 知乎
[4] 【最优化】无约束优化方法- 知乎
[5] (一)牛顿法与阻尼牛顿法 - 博客园
[6] 线搜索(line search)方法 - 博客园
[7] 最优化理论与方法-第六讲-无约束优化问题(二)- 哔哩哔哩
[8] 拟牛顿法(DFP、BFGS、L-BFGS)- CSDN博客
[9] Sherman-Morrison公式在BFGS算法的应用 - 简书
[10] 逻辑回归模型及LBFGS的Sherman Morrison(SM) 公式推导 - CSDN博客
[11] 最优化算法数学详解之——梯度下降法和牛顿迭代法 - CSDN博客