机器学习笔记之最优化理论与算法(十二)无约束优化问题——共轭梯度法

引言

上一节主要介绍了共轭方向法重要特征以及相关证明,本节将介绍共轭方向法的代表算法——共轭梯度法

回顾:共轭方向法的重要特征

关于凸二次函数 f ( x ) f(x) f(x)的优化问题: min ⁡ f ( x ) = 1 2 x T Q x + C T x \begin{aligned}\min f(x) = \frac{1}{2}x^T \mathcal Qx + \mathcal C^T x \end{aligned} minf(x)=21xTQx+CTx,给定初始点 x 0 x_0 x0以及关于正交矩阵 Q \mathcal Q Q一系列共轭方向 D = { d 0 , d 1 , ⋯   , d n − 1 } \mathcal D = \{d_0,d_1,\cdots,d_{n-1}\} D={ d0,d1,,dn1},在迭代过程中的输出位置 x k ( k = 1 , 2 , ⋯   , n ) x_k(k=1,2,\cdots,n) xk(k=1,2,,n)表示如下:
x k = x k − 1 + α k − 1 ⋅ d k − 1 k = 1 , 2 , ⋯   , n x_k = x_{k-1} + \alpha_{k-1} \cdot d_{k-1} \quad k = 1,2,\cdots,n xk=xk1+αk1dk1k=1,2,,n

基于上述操作产生的数值解序列 { x k } k = 1 n \{x_k\}_{k=1}^n { xk}k=1n具有如下特征:

  • 目标函数 f ( ⋅ ) f(\cdot) f()输出位置 x k x_k xk处的梯度 ∇ f ( x k ) \nabla f(x_k) f(xk)迭代过程中使用过的共轭方向 d i ( i = 0 , 1 , ⋯   , k − 1 ) d_i(i=0,1,\cdots,k-1) di(i=0,1,,k1)均相互垂直
    [ ∇ f ( x k ) ] T d i = 0 i = 0 , 1 , ⋯   , k − 1 [\nabla f(x_k)]^T d_i = 0 \quad i=0,1,\cdots,k-1 [f(xk)]Tdi=0i=0,1,,k1
  • 如果定义集合 X k \mathcal X_k Xk k k k次迭代过程中 x k x_k xk可选择的位置空间
    X k = { x 0 + ∑ i = 0 k − 1 α i ⋅ d i ∣ α i ∈ R } \mathcal X_k = \left\{x_0 + \sum_{i=0}^{k-1} \alpha_i \cdot d_i \mid \alpha_i \in \mathbb R\right\} Xk={ x0+i=0k1αidiαiR}
    那么如果 x k x_k xk是第 k k k次迭代的最优解,等价于:
    x k = arg ⁡ min ⁡ x { 1 2 x T Q x + C T x ∣ x ∈ X k } x_k = \mathop{\arg\min}\limits_{x} \left\{\frac{1}{2} x^T \mathcal Q x + \mathcal C^T x \mid x \in \mathcal X_k \right\} xk=xargmin{ 21xTQx+CTxxXk}
    并且当 k = n k=n k=n时,此时的位置空间 X n \mathcal X_n Xn就是由共轭方向 d 0 , d 1 , ⋯   , d n − 1 d_0,d_1,\cdots,d_{n-1} d0,d1,,dn1描述的投影空间 X n ∈ R n \mathcal X_n \in \mathbb R^n XnRn,因而目标函数 f ( x ) f(x) f(x)必然可以通过最多 n n n次迭代找到最优解。
    • 首先,投影空间与原始特征空间不同,它是将正定矩阵 Q \mathcal Q Q对角化后的特征空间效果;
    • 该特征空间是由共轭方向 d i ( i = 0 , 1 , ⋯   , n − 1 ) d_i(i=0,1,\cdots,n-1) di(i=0,1,,n1)但并不是说它们是正交基
      ∀ d i , d j ∈ D , i ≠ j ⇒ ( d i ) T Q d j = 0 \forall d_i,d_j \in \mathcal D,i \neq j \Rightarrow (d_i)^T \mathcal Q d_j = 0 di,djD,i=j(di)TQdj=0
      Q = P 2 = P T P \mathcal Q = \mathcal P^2 = \mathcal P^T \mathcal P Q=P2=PTP,其中 P \mathcal P P同样是正定矩阵。有:
      ( d i ) T Q d j = ( d i ) T P T P d j = ( P d i ) T ( P d j ) = 0 \begin{aligned} (d_i)^T \mathcal Q d_j & = (d_i)^T \mathcal P^T \mathcal P d_j \\ & = (\mathcal P d_i)^T (\mathcal P d_j) = 0 \end{aligned} (di)TQdj=(di)TPTPdj=(Pdi)T(Pdj)=0
      可以看出: P d i ( i = 0 , 1 , ⋯   , n − 1 ) \mathcal P d_i(i=0,1,\cdots,n-1) Pdi(i=0,1,,n1)才是投影空间的正交基。当然 d i d_i di也有成为正交基情况,即: Q = P 2 = P ⇒ P = I \mathcal Q = \mathcal P^2 = \mathcal P \Rightarrow \mathcal P = \mathcal I Q=P2=PP=I。其中 I \mathcal I I表示单位矩阵

线性共轭梯度法

显然,上面存在被我们忽视的核心问题:如何通过一种简单方式获取一组共轭方向 ? ? ?

共轭梯度法构造共轭方向的思想在于:在迭代下降的过程中,借助当前位置 x k x_k xk梯度信息构造共轭方向。对应算法步骤表示如下:
该操作是在迭代过程的同时构造梯度方向初始化 d 0 d_0 d0,在构造新的共轭方向 d 1 d_1 d1时,需要保证其与 d 0 d_0 d0共轭;在构造 d 2 d_2 d2时,需要保证其与 d 0 , d 1 d_0,d_1 d0,d1均相互共轭,以此类推。

初始化操作

  • 给定初始点 x 0 x_0 x0,记 d 0 = − ∇ f ( x 0 ) d_0 = -\nabla f(x_0) d0=f(x0);设置阈值 ϵ > 0 \epsilon > 0 ϵ>0 k = 0 k = 0 k=0

算法过程

  • 事先判断 ∥ ∇ f ( x k ) ∥ ≤ ϵ \|\nabla f(x_k)\| \leq \epsilon ∥∇f(xk)ϵ是否成立 ? ? ?是,则算法终止
  • 计算当前迭代步骤的最优步长 α k \alpha_k αk
    求解过程详见共轭梯度法背景介绍
    α k = − [ ∇ f ( x k ) ] T d k ( d k ) T Q d k \alpha_k = - \frac{[\nabla f(x_k)]^T d_k}{(d_k)^T \mathcal Q d_k} αk=(dk)TQdk[f(xk)]Tdk
  • 计算新位置点 x k + 1 = x k + α k ⋅ d k x_{k+1} = x_k + \alpha_k \cdot d_k xk+1=xk+αkdk,并计算共轭方向 d k + 1 d_{k+1} dk+1
    d k + 1 = − ∇ f ( x k + 1 ) + β k ⋅ d k , β k = [ ∇ f ( x k + 1 ) ] T Q d k ( d k ) T Q d k d_{k+1} = -\nabla f(x_{k+1}) + \beta_k \cdot d_k,\beta_k = \frac{[\nabla f(x_{k+1})]^T \mathcal Q d_k}{(d_k)^T \mathcal Q d_k} dk+1=f(xk+1)+βkdk,βk=(dk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

静静的喝酒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值