【优化方法】拟牛顿法之DFP算法

一、牛顿法回顾

  • 上一篇牛顿法(Newton Method)中介绍了牛顿法的基本思路,牛顿法具有二阶收敛性,相比较最速下降法,收敛的速度更快。
  • 但是牛顿法也有一个缺点就是:求解Hessian矩阵复杂度比较大

1、下面是第k+1步的牛顿迭代:

  • 对于函数 f ( X ) f(X) f(X),其中 X = [ x 1 , x 2 , … , x n ] T X=[x_1,x_2,…,x_n ]^T X=[x1,x2,,xn]T为向量。在牛顿法的求解过程中,首先是将 f ( X ) f(X) f(X)函数在 X k + 1 X^{k+1} Xk+1处展开,并且令 f ( X ) f(X) f(X)函数在 X k + 1 X^{k+1} Xk+1处的梯度为: ∇ f ( X k + 1 ) = [ ∂ f ∂ x 1 , ∂ f ∂ x 2 , … , ∂ f ∂ x n ] T ∇f(X^{k+1} )=[\frac{∂f}{∂x_1},\frac{∂f}{∂x_2},…,\frac{∂f}{∂x_n}]^T f(Xk+1)=[x1f,x2f,,xnf]T
  • 泰勒展开为: f ( X ) = f ( X k + 1 ) + ∇ f ( X k + 1 ) T ( X − X k + 1 ) + 1 2 ( X − X k + 1 ) T G k + 1 ( X − X k + 1 ) + ⋯ + o f(X)=f(X^{k+1})+∇f(X^{k+1} )^T (X-X^{k+1})+\frac{1}{2} (X-X^{k+1} )^T G_{k+1} (X-X^{k+1})+⋯+o f(X)=f(Xk+1)+f(Xk+1)T(XXk+1)+21(XXk+1)TGk+1(XXk+1)++o
  • G k + 1 为 X = X k + 1 G_{k+1}为X=X^{k+1} Gk+1X=Xk+1的Hesse矩阵,省略高价无穷小量: f ( X ) = f ( X k + 1 ) + ∇ f ( X k + 1 ) T ( X − X k + 1 ) + 1 2 ( X − X k + 1 ) T G k + 1 ( X − X k + 1 ) f(X)=f(X^{k+1})+∇f(X^{k+1} )^T (X-X^{k+1})+\frac{1}{2} (X-X^{k+1} )^T G_{k+1} (X-X^{k+1}) f(X)=f(Xk+1)+f(Xk+1)T(XXk+1)+21(XXk+1)TGk+1(XXk+1)
  • X X X求导,并令导数为 0 0 0 ∇ f ( X ) = ∇ f ( X k + 1 ) T + G k + 1 ( X − X k + 1 ) = 0 ∇f(X)=∇f(X^{k+1} )^T+G_{k+1} (X-X^{k+1})=0 f(X)=f(Xk+1)T+Gk+1(XXk+1)=0
  • 求出 X X X X = X k + 1 − ∇ f ( X k + 1 ) G k + 1 = X k + 1 − G k + 1 − 1 ∇ f ( X k + 1 ) X=X_{k+1}-\frac{∇f(X^{k+1} )}{G_{k+1}} =X_{k+1}-G_{k+1}^{-1} ∇f(X^{k+1} ) X=Xk+1Gk+1f(Xk+1)=Xk+1Gk+11f(Xk+1)

二、DFP拟牛顿法:

  • 由于求解Hessian矩阵复杂度比较大,于是下面我们利用上一步即第 k k k步的信息来求Hessian矩阵:
  • 上面得到公式: ∇ f ( X ) = ∇ f ( X k + 1 ) + G k + 1 ( X − X k + 1 ) ∇f(X)=∇f(X^{k+1} )+G_{k+1} (X-X^{k+1} ) f(X)=f(Xk+1)+Gk+1(XXk+1)
  • 我们令 X = X k X=X^k X=Xk ∇ f ( X k ) = ∇ f ( X k + 1 ) + G k + 1 ( X − X k + 1 ) ∇f(X^k)=∇f(X^{k+1} )+G_{k+1} (X-X^{k+1} ) f(Xk)=f(Xk+1)+Gk+1(XXk+1)
  • 利用上面公式我们可以使用 ∇ f ( X k ) , ∇ f ( X k + 1 ) , X k , X k + 1 ∇f(X^k ),∇f(X^{k+1} ),X^k,X^{k+1} f(Xk),f(Xk+1),Xk,Xk+1来模拟出Hesse矩阵的构造过程,此方法便称为拟牛顿法(QuasiNewton)。
  • 在拟牛顿法中主要包括:DFP拟牛顿法,BFGS拟牛顿法。这里我们讲解DFP拟牛顿法。
  • 化解上面式子: G k + 1 − 1 ( ∇ f ( X k ) − ∇ f ( X k + 1 ) ) = X k − X k + 1 G_{k+1}^{-1}(∇f(X^k )-∇f(X^{k+1} ))=X^k-X^{k+1} Gk+11(f(Xk)f(Xk+1))=XkXk+1 G k + 1 − 1 ( ∇ f ( X k + 1 ) − ∇ f ( X k ) ) = X k − 1 − X k G_{k+1}^{-1}(∇f(X^{k+1} )-∇f(X^k ))=X^{k-1}-X^k Gk+11(f(Xk+1)f(Xk))=Xk1Xk
  • G k + 1 − 1 = H k + 1 G_{k+1}^{-1}=H_{k+1} Gk+11=Hk+1得: H k + 1 ( ∇ f ( X k + 1 ) − ∇ f ( X k ) ) = X k − 1 − X k H_{k+1}(∇f(X^{k+1} )-∇f(X^k ))=X^{k-1}-X^k Hk+1(f(Xk+1)f(Xk))=Xk1Xk
  • 假设下面式子成立: H k + 1 = H k + E k H_{k+1}=H_k+E_k Hk+1=Hk+Ek
  • 这样只要我们求出 E k E_k Ek就就可以得到 H k + 1 H_{k+1} Hk+1,这样我们就将其带入上面的方程中: ( H k + E k ) ( ∇ f ( X k + 1 ) − ∇ f ( X k ) ) = X k + 1 − X k (H_k+E_k)(∇f(X^{k+1} )-∇f(X^k ))=X^{k+1}-X^k (Hk+Ek)(f(Xk+1)f(Xk))=Xk+1Xk
  • 令矩阵 E k E_k Ek用下面式子构造: E k = α u k u k T + β v k v k T E_k=αu_k u_k^T+βv_k v_k^T Ek=αukukT+βvkvkT其中 u k , v k u_k,v_k uk,vk n × 1 n×1 n×1的向量。
  • 令: ∇ f ( X k + 1 ) − ∇ f ( X k ) = y k , X k − 1 − X k = s k ∇f(X^{k+1} )-∇f(X^k )=y_k,X^{k-1}-X^k=s_k f(Xk+1)f(Xk)=ykXk1Xk=sk: H k + 1 y k = s k H_{k+1} y_k=s_k Hk+1yk=sk ( H k + E k ) y k = s k (H_k+E_k)y_k=s_k (Hk+Ek)yk=sk ( H k + α u k u k T + β v k v k T ) y k = s k (H_k+αu_k u_k^T+βv_k v_k^T)y_k=s_k (Hk+αukukT+βvkvkT)yk=sk α u k u k T y k + β v k v k T y k = s k − H k y k αu_k u_k^T y_k+βv_k v_k^T y_k=s_k-H_k y_k αukukTyk+βvkvkTyk=skHkyk
  • u k T y k , v k T y k u_k^T y_k,v_k^T y_k ukTyk,vkTyk为常数,所以可以移到前面去: α ( u k T y k ) u k + β ( v k T y k ) v k = s k − H k y k α(u_k^T y_k)u_k+β(v_k^T y_k)v_k=s_k-H_k y_k α(ukTyk)uk+β(vkTyk)vk=skHkyk
  • 将上面式子中α,β视为变量,其他部分视为常量,这样上面式子就是一个非齐次的线性方程组,它解的可能性有很多,我们取特殊的情况,假设: u k = r H k y k , v k = θ s k u_k=rH_k y_k,v_k=θs_k uk=rHkyk,vk=θsk则有: E k = α r 2 H k y k y k T H k T + β θ 2 s k s k T E_k=αr^2 H_k y_k y_k^T H_k^T+βθ^2 s_k s_k^T Ek=αr2HkykykTHkT+βθ2skskT
  • H k T H_k^T HkT为对称矩阵: E k = α r 2 H k y k y k T H k + β θ 2 s k s k T E_k=αr^2 H_k y_k y_k^T H_k+βθ^2 s_k s_k^T Ek=αr2HkykykTHk+βθ2skskT
  • 代入: α ( ( r H k y k ) T y k ) ( r H k y k ) + β ( ( θ s k ) T y k ) ( θ s k ) = s k − H k y k α((rH_k y_k )^T y_k)(rH_k y_k)+β((θs_k )^T y_k)(θs_k)=s_k-H_k y_k α((rHkyk)Tyk)(rHkyk)+β((θsk)Tyk)(θsk)=skHkyk [ α r 2 ( y k T H k y k ) + 1 ] ( H k y k ) + [ β θ 2 ( s k T y k ) − 1 ] ( s k ) = 0 [αr^2 (y_k^T H_k y_k )+1](H_k y_k )+[βθ^2 (s_k^T y_k )-1](s_k)=0 [αr2(ykTHkyk)+1](Hkyk)+[βθ2(skTyk)1](sk)=0
  • 令: α r 2 ( y k T H k y k ) + 1 = 0 αr^2 (y_k^T H_k y_k )+1=0 αr2(ykTHkyk)+1=0 β θ 2 ( s k T y k ) − 1 = 0 βθ^2 (s_k^T y_k )-1=0 βθ2(skTyk)1=0
  • 得: α r 2 = − 1 y k T H k y k αr^2=-\frac{1}{y_k^T H_k y_k } αr2=ykTHkyk1 β θ 2 = 1 s k T y k βθ^2=\frac{1}{s_k^T y_k} βθ2=skTyk1
  • 最后: E k = − H k y k y k T H k y k T H k y k + s k s k T s k T y k E_k=-\frac{H_k y_k y_k^T H_k}{y_k^T H_k y_k }+\frac{s_k s_k^T}{s_k^T y_k } Ek=ykTHkykHkykykTHk+skTykskskT
  • H k + 1 = H k + E k H_{k+1}=H_k+E_k Hk+1=Hk+Ek可得到, H k + 1 H_{k+1} Hk+1的递推公式: H k + 1 = H k − H k y k y k T H k y k T H k y k + s k s k T s k T y k H_{k+1}=H_k-\frac{H_k y_k y_k^T H_k}{y_k^T H_k y_k }+\frac{s_k s_k^T}{s_k^T y_k } Hk+1=HkykTHkykHkykykTHk+skTykskskT

你可能感兴趣的:(机器学习)