上一节主要介绍了共轭方向法的重要特征以及相关证明,本节将介绍共轭方向法的代表算法——共轭梯度法。
关于凸二次函数 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,⋯,dn−1},在迭代过程中的输出位置 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=xk−1+αk−1⋅dk−1k=1,2,⋯,n
基于上述操作产生的数值解序列 { x k } k = 1 n \{x_k\}_{k=1}^n {xk}k=1n具有如下特征:
首先,投影空间与
原始特征空间不同,它是将
正定矩阵 Q \mathcal Q Q对角化后的特征空间效果;
该特征空间是由
共轭方向 d i ( i = 0 , 1 , ⋯ , n − 1 ) d_i(i=0,1,\cdots,n-1) di(i=0,1,⋯,n−1)但并不是说它们是
正交基:显然,上面存在被我们忽视的核心问题:如何通过一种简单方式获取一组共轭方向 ? ? ?
而共轭梯度法构造共轭方向的思想在于:在迭代下降的过程中,借助当前位置 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均相互共轭,以此类推。
初始化操作:
算法过程:
求解过程详见
共轭梯度法背景介绍新共轭方向产生时,需要满足一个重要条件:与之前迭代产生的共轭方向均共轭:
( d k + 1 ) T Q d i = 0 i = 0 , 1 , 2 , ⋯ , k (d_{k+1})^T \mathcal Q d_{i} = 0 \quad i=0,1,2,\cdots,k (dk+1)TQdi=0i=0,1,2,⋯,k
首先,尝试将 d k + 1 d_{k+1} dk+1表示为: x k + 1 x_{k+1} xk+1负梯度方向 − ∇ f ( x k + 1 ) - \nabla f(x_{k+1}) −∇f(xk+1)与 d 0 , d 1 , ⋯ , d k d_0,d_1,\cdots,d_k d0,d1,⋯,dk线性组合的加法形式:
其中
β 0 , ⋯ , β k \beta_0,\cdots,\beta_k β0,⋯,βk表示对应共轭方向的系数,是一个标量;
d k + 1 = − ∇ f ( x k + 1 ) + β 0 d 0 + β 1 d 1 ⋯ + β k d k d_{k+1} = - \nabla f(x_{k+1}) + \beta_0 d_0 + \beta_1d_1 \cdots + \beta_k d_k dk+1=−∇f(xk+1)+β0d0+β1d1⋯+βkdk
将该式代入上面的重要条件,即:
在线性组合中,除去与
d i d_i di相同的一项外,其余项均为
0 0 0。
( d k + 1 ) T Q d i = 0 ⇒ [ − ∇ f ( x k + 1 ) + β 0 d 0 + β 1 d 1 ⋯ + β k d k ] T Q d i = 0 ⇒ [ − ∇ f ( x k + 1 ) ] T Q d i + β 0 ⋅ ( d 0 ) T Q d i ⏟ = 0 + ⋯ + β i ⋅ ( d i ) T Q d i + ⋯ + β k ( d k ) T Q d i ⏟ = 0 = 0 ⇒ [ − ∇ f ( x k + 1 ) ] T Q d i + β i ⋅ ( d i ) T Q d i = 0 \begin{aligned} (d_{k+1})^T \mathcal Q d_{i} = 0 & \Rightarrow [-\nabla f(x_{k+1}) + \beta_0 d_0 + \beta_1d_1 \cdots + \beta_k d_k]^T \mathcal Q d_i = 0 \\ & \Rightarrow [- \nabla f(x_{k+1})]^T\mathcal Q d_i + \beta_0 \cdot \underbrace{(d_0)^T \mathcal Q d_i}_{=0} + \cdots + \beta_i \cdot (d_i)^T \mathcal Q d_i + \cdots + \beta_k \underbrace{(d_k)^T \mathcal Q d_i}_{=0} = 0 \\ & \Rightarrow [- \nabla f(x_{k+1})]^T\mathcal Q d_i + \beta_i \cdot (d_i)^T \mathcal Q d_i = 0 \end{aligned} (dk+1)TQdi=0⇒[−∇f(xk+1)+β0d0+β1d1⋯+βkdk]TQdi=0⇒[−∇f(xk+1)]TQdi+β0⋅=0 (d0)TQdi+⋯+βi⋅(di)TQdi+⋯+βk=0 (dk)TQdi=0⇒[−∇f(xk+1)]TQdi+βi⋅(di)TQdi=0
经过整理,有:
很明显:项
( d i ) T Q d i (d_i)^T \mathcal Q d_i (di)TQdi与项
[ ∇ f ( x k + 1 ) ] T Q d i [\nabla f(x_{k+1})]^T \mathcal Q d_i [∇f(xk+1)]TQdi描述的都是
1 × 1 1 \times 1 1×1的矩阵,一个值,移项就好啦~
β i ⋅ ( d i ) T Q d i = ∇ f ( x k + 1 ) T Q d i ⇒ β i = [ ∇ f ( x k + 1 ) ] T Q d i ( d i ) T Q d i \beta_i \cdot (d_i)^T \mathcal Q d_i = \nabla f(x_{k+1})^T \mathcal Q d_i \Rightarrow \beta_i = \frac{[\nabla f(x_{k+1})]^T \mathcal Q d_i}{(d_i)^T \mathcal Q d_i} βi⋅(di)TQdi=∇f(xk+1)TQdi⇒βi=(di)TQdi[∇f(xk+1)]TQdi
此时,当 β i \beta_i βi确定后, d k + 1 d_{k+1} dk+1必然与 d i d_i di共轭。同理,可以对所有的 β i ( i = 0 , 1 , ⋯ , k ) \beta_i(i=0,1,\cdots,k) βi(i=0,1,⋯,k)进行求解,当所有的 β \beta β值确定后,必然与 d 0 , d 1 , ⋯ , d k d_0,d_1,\cdots,d_k d0,d1,⋯,dk均共轭。但上面的结论公式中,仅仅描述了 β k \beta_k βk参数。也就是说:在迭代公式中,仅描述了 d k + 1 d_{k+1} dk+1与 d k d_k dk共轭,其余的共轭方向并没有提。
观察除了 d k d_k dk之外的其他项。当 j = 0 , 1 , ⋯ , k − 1 j=0,1,\cdots,k-1 j=0,1,⋯,k−1时,观察 β j \beta_j βj的分子部分:
[ ∇ f ( x k + 1 ) ] T Q d j [\nabla f(x_{k+1})]^T \mathcal Q d_j [∇f(xk+1)]TQdj
关于共轭方向 d j d_j dj,通过线搜索公式可以将其表示为如下形式:
x j + 1 = x j + α j ⋅ d j ⇒ d j = x j + 1 − x j α j x_{j+1} = x_j + \alpha_j \cdot d_j \Rightarrow d_j = \frac{x_{j+1} - x_j}{\alpha_j} xj+1=xj+αj⋅dj⇒dj=αjxj+1−xj
两边同时左乘正定矩阵 Q \mathcal Q Q,有:
在小括号内两项同时加上
系数项 C \mathcal C C,符号不发生变化。很明显,
Q x j + 1 + C \mathcal Q x_{j+1} + \mathcal C Qxj+1+C就是
∇ f ( x j + 1 ) , ∇ f ( x j ) \nabla f(x_{j+1}),\nabla f(x_j) ∇f(xj+1),∇f(xj)同理。
Q d j = 1 α j ( Q x j + 1 − Q x j ) = 1 α j [ ( Q x j + 1 + C ) − ( Q x j + C ) ] = 1 α j [ ∇ f ( x j + 1 ) − ∇ f ( x j ) ] \begin{aligned} \mathcal Q d_j & = \frac{1}{\alpha_j}(\mathcal Q x_{j+1} - \mathcal Q x_j) \\ & = \frac{1}{\alpha_j} \left[(\mathcal Q x_{j+1} + \mathcal C) - (\mathcal Q x_j + \mathcal C) \right] \\ & = \frac{1}{\alpha_j} [\nabla f(x_{j+1}) - \nabla f(x_j)] \end{aligned} Qdj=αj1(Qxj+1−Qxj)=αj1[(Qxj+1+C)−(Qxj+C)]=αj1[∇f(xj+1)−∇f(xj)]
将 Q d j \mathcal Q d_j Qdj的展开结果代入上式,有:
[ ∇ f ( x k + 1 ) ] T Q d j = 1 α j ⋅ [ ∇ f ( x k + 1 ) ] T [ ∇ f ( x j + 1 ) − ∇ f ( x j ) ] = 1 α j ⋅ { [ ∇ f ( x k + 1 ) ] T ∇ f ( x j + 1 ) − [ ∇ f ( x k + 1 ) ] T ∇ f ( x j ) } \begin{aligned} [\nabla f(x_{k+1})]^T \mathcal Q d_j & = \frac{1}{\alpha_j} \cdot [\nabla f(x_{k+1})]^T [\nabla f(x_{j+1}) - \nabla f(x_j)] \\ & = \frac{1}{\alpha_j} \cdot \left\{[\nabla f(x_{k+1})]^T \nabla f(x_{j+1}) - [\nabla f(x_{k+1})]^T\nabla f(x_j)\right\} \end{aligned} [∇f(xk+1)]TQdj=αj1⋅[∇f(xk+1)]T[∇f(xj+1)−∇f(xj)]=αj1⋅{[∇f(xk+1)]T∇f(xj+1)−[∇f(xk+1)]T∇f(xj)}
观察大括号内第一项: [ ∇ f ( x k + 1 ) ] T ∇ f ( x j + 1 ) [\nabla f(x_{k+1})]^T \nabla f(x_{j+1}) [∇f(xk+1)]T∇f(xj+1),将 ∇ f ( x j + 1 ) \nabla f(x_{j+1}) ∇f(xj+1)使用共轭方向进行表示:
d j + 1 = − ∇ f ( x j + 1 ) + β 0 d 0 + β 1 d 1 + ⋯ β j d j ⇓ ∇ f ( x j + 1 ) = − d j + 1 + β 0 d 0 + β 1 d 1 + ⋯ + β j d j d_{j+1} = -\nabla f(x_{j+1}) + \beta_0 d_0 + \beta_1 d_1 + \cdots \beta_j d_j \\ \Downarrow \\ \nabla f(x_{j+1}) = -d_{j+1} + \beta_0 d_0 + \beta_1 d_1 + \cdots + \beta_j d_j dj+1=−∇f(xj+1)+β0d0+β1d1+⋯βjdj⇓∇f(xj+1)=−dj+1+β0d0+β1d1+⋯+βjdj
将其代入,有:
根据
共轭方向法的第一条重要特征,所有项全部是
0 0 0。
[ ∇ f ( x k + 1 ) ] T ∇ f ( x j + 1 ) = − [ ∇ f ( x k + 1 ) ] T d j + 1 ⏟ = 0 + β 0 ⋅ [ ∇ f ( x k + 1 ) ] T d 0 ⏟ = 0 + ⋯ + β j ⋅ [ ∇ f ( x k + 1 ) ] T d j ⏟ = 0 = 0 \begin{aligned} [\nabla f(x_{k+1})]^T \nabla f(x_{j+1}) & = - \underbrace{[\nabla f(x_{k+1})]^Td_{j+1}}_{=0} + \beta_0 \cdot\underbrace{[\nabla f(x_{k+1})]^T d_0}_{=0} + \cdots + \beta_j \cdot \underbrace{[\nabla f(x_{k+1})]^T d_j}_{=0} \\ & = 0 \end{aligned} [∇f(xk+1)]T∇f(xj+1)=−=0 [∇f(xk+1)]Tdj+1+β0⋅=0 [∇f(xk+1)]Td0+⋯+βj⋅=0 [∇f(xk+1)]Tdj=0
同理,大括号内第二项: [ ∇ f ( x k + 1 ) ] T ∇ f ( x j ) = 0 [\nabla f(x_{k+1})]^T\nabla f(x_j) = 0 [∇f(xk+1)]T∇f(xj)=0。最终可得:当 j = 0 , 1 , ⋯ , k − 1 j=0,1,\cdots,k-1 j=0,1,⋯,k−1时,对应的分子 β j = 0 \beta_j = 0 βj=0,最终整理,有:
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)+βk⋅dk,βk=(dk)TQdk[∇f(xk+1)]TQdk
关于精确搜索条件下步长 α k = − [ ∇ f ( x k ) ] T d k ( d k ) T Q d k \begin{aligned}\alpha_k = -\frac{[\nabla f(x_k)]^T d_k}{(d_k)^T \mathcal Q d_k}\end{aligned} αk=−(dk)TQdk[∇f(xk)]Tdk,可以将其化简为如下形式:
目的是为了将线搜索过程中变量
α k , d k \alpha_k,d_k αk,dk的表达式与
目标函数梯度信息建立起直观联系。
α k = [ ∇ f ( x k ) ] T ∇ f ( x k ) ( d k ) T Q d k \alpha_k = \frac{[\nabla f(x_k)]^T \nabla f(x_k)}{(d_k)^T \mathcal Q d_k} αk=(dk)TQdk[∇f(xk)]T∇f(xk)
化简描述:观察 α k \alpha_k αk分子部分的描述: [ ∇ f ( x k ) ] T d k [\nabla f(x_k)]^T d_k [∇f(xk)]Tdk,由于共轭方向 d k d_k dk可表示为:
d k = − ∇ f ( x k ) + β k − 1 ⋅ d k − 1 d_k = - \nabla f(x_{k}) + \beta_{k-1} \cdot d_{k-1} dk=−∇f(xk)+βk−1⋅dk−1
对分子进行整理:
依然使用
第一条重要特征: [ ∇ f ( x k ) ] T d k − 1 = 0 [\nabla f(x_k)]^Td_{k-1} = 0 [∇f(xk)]Tdk−1=0
[ ∇ f ( x k ) ] T d k = [ ∇ f ( x k ) ] T [ − ∇ f ( x k ) + β k − 1 ⋅ d k − 1 ] = − [ ∇ f ( x k ) ] T ∇ f ( x k ) + β k − 1 ⋅ [ ∇ f ( x k ) ] T d k − 1 ⏟ 0 = − [ ∇ f ( x k ) ] T ∇ f ( x k ) \begin{aligned} [\nabla f(x_k)]^T d_k & = [\nabla f(x_k)]^T [-\nabla f(x_k) + \beta_{k-1} \cdot d_{k-1}] \\ & = -[\nabla f(x_k)]^T \nabla f(x_k) + \beta_{k-1}\cdot \underbrace{[\nabla f(x_k)]^Td_{k-1}}_{0} \\ & = -[\nabla f(x_k)]^T \nabla f(x_k) \end{aligned} [∇f(xk)]Tdk=[∇f(xk)]T[−∇f(xk)+βk−1⋅dk−1]=−[∇f(xk)]T∇f(xk)+βk−1⋅0 [∇f(xk)]Tdk−1=−[∇f(xk)]T∇f(xk)
最终对分子部分进行替换即可。
精确搜索条件下关于共轭方向系数 β k = ∇ f ( x k + 1 ) Q d k ( d k ) T Q d k \begin{aligned}\beta_k = \frac{\nabla f(x_{k+1}) \mathcal Q d_k}{(d_k)^T \mathcal Q d_k}\end{aligned} βk=(dk)TQdk∇f(xk+1)Qdk,可以将其化简为如下形式:
β k = [ ∇ f ( x k + 1 ) ] T ∇ f ( x k + 1 ) [ ∇ f ( x k ) ] T ∇ f ( x k ) \beta_k = \frac{[\nabla f(x_{k+1})]^T\nabla f(x_{k+1})}{[\nabla f(x_k)]^T \nabla f(x_k)} βk=[∇f(xk)]T∇f(xk)[∇f(xk+1)]T∇f(xk+1)
化简描述:观察分子 [ ∇ f ( x k + 1 ) ] T Q d k [\nabla f(x_{k+1})]^T\mathcal Q d_k [∇f(xk+1)]TQdk,使用 Q d k = 1 α k [ ∇ f ( x k + 1 ) − ∇ f ( x k ) ] \begin{aligned}\mathcal Qd_k = \frac{1}{\alpha_k}[\nabla f(x_{k+1}) - \nabla f(x_k)]\end{aligned} Qdk=αk1[∇f(xk+1)−∇f(xk)]进行替换,对于 β k \beta_k βk有如下表达:
β k = 1 α k ⋅ [ ∇ f ( x k + 1 ) ] T [ ∇ f ( x k + 1 ) − ∇ f ( x k ) ] ( d k ) T Q d k = [ ∇ f ( x k + 1 ) ] T [ ∇ f ( x k + 1 ) − ∇ f ( x k ) ] α k ⋅ ( d k ) T Q d k \begin{aligned} \beta_k & = \frac{1}{\alpha_k} \cdot \frac{[\nabla f(x_{k+1})]^T[\nabla f(x_{k+1}) - \nabla f(x_k)]}{(d_k)^T \mathcal Q d_k} \\ & = \frac{[\nabla f(x_{k+1})]^T[\nabla f(x_{k+1}) - \nabla f(x_k)]}{\alpha_k \cdot (d_k)^T \mathcal Q d_k} \end{aligned} βk=αk1⋅(dk)TQdk[∇f(xk+1)]T[∇f(xk+1)−∇f(xk)]=αk⋅(dk)TQdk[∇f(xk+1)]T[∇f(xk+1)−∇f(xk)]
根据化简后的 α k \alpha_k αk,有:
[ ∇ f ( x k ) ] T ∇ f ( x k ) = α k ⋅ ( d k ) T Q d k [\nabla f(x_k)]^T \nabla f(x_k) = \alpha_k \cdot (d_k)^T \mathcal Q d_k [∇f(xk)]T∇f(xk)=αk⋅(dk)TQdk
替换 β k \beta_k βk分母,有:
并将
[ ∇ f ( x k + 1 ) ] T ∇ f ( x k ) = 0 [\nabla f(x_{k+1})]^T \nabla f(x_k) = 0 [∇f(xk+1)]T∇f(xk)=0带入
β k = [ ∇ f ( x k + 1 ) ] T [ ∇ f ( x k + 1 ) − ∇ f ( x k ) ] [ ∇ f ( x k ) ] T ∇ f ( x k ) = [ ∇ f ( x k + 1 ) ] T ∇ f ( x k + 1 ) [ ∇ f ( x k ) ] T ∇ f ( x k ) \begin{aligned} \beta_k & = \frac{[\nabla f(x_{k+1})]^T[\nabla f(x_{k+1}) - \nabla f(x_k)]}{[\nabla f(x_k)]^T \nabla f(x_k)} \\ \quad \\ & = \frac{[\nabla f(x_{k+1})]^T\nabla f(x_{k+1})}{[\nabla f(x_k)]^T \nabla f(x_k)} \end{aligned} βk=[∇f(xk)]T∇f(xk)[∇f(xk+1)]T[∇f(xk+1)−∇f(xk)]=[∇f(xk)]T∇f(xk)[∇f(xk+1)]T∇f(xk+1)
观察参数: β k = [ ∇ f ( x k + 1 ) ] T ∇ f ( x k + 1 ) [ ∇ f ( x k ) ] T ∇ f ( x k ) \begin{aligned}\beta_k=\frac{[\nabla f(x_{k+1})]^T\nabla f(x_{k+1})}{[\nabla f(x_k)]^T \nabla f(x_k)}\end{aligned} βk=[∇f(xk)]T∇f(xk)[∇f(xk+1)]T∇f(xk+1)的化简结果,可以发现:共轭方向 d k d_k dk的迭代结果只与上一迭代步骤的共轭方向 d k d_k dk与 x k , x k + 1 x_k,x_{k+1} xk,xk+1位置的梯度相关。
d k + 1 = − ∇ f ( x k + 1 ) + [ ∇ f ( x k + 1 ) ] T ∇ f ( x k + 1 ) [ ∇ f ( x k ) ] T ∇ f ( x k ) ⋅ d k d_{k+1} = -\nabla f(x_{k+1}) + \frac{[\nabla f(x_{k+1})]^T\nabla f(x_{k+1})}{[\nabla f(x_k)]^T \nabla f(x_k)} \cdot d_k dk+1=−∇f(xk+1)+[∇f(xk)]T∇f(xk)[∇f(xk+1)]T∇f(xk+1)⋅dk
这意味着:关于共轭方向的迭代过程与正定矩阵 Q \mathcal Q Q,描述一次项系数矩阵 C \mathcal C C没有关联关系。从而可以将凸二次函数 f ( x ) f(x) f(x)的优化问题映射到其他复杂目标函数的优化问题中。
虽然上述的化简过程全部是取等操作,但这些取等操作是依赖于 f ( x ) = 1 2 x T Q x + C T x \begin{aligned}f(x) = \frac{1}{2}x^T \mathcal Q x + \mathcal C^Tx\end{aligned} f(x)=21xTQx+CTx条件的基础上。如果是一般性的复杂目标函数:得到的化简结果 β k \beta_k βk可能只是是一个近似解。因为上述化简过程中可能存在:
当然,不仅仅是下面描述的迭代步骤中存在
不相等的情况,在替换
[ ∇ f ( x k ) ] T ∇ f ( x k ) = α k ⋅ ( d k ) T Q d k [\nabla f(x_k)]^T \nabla f(x_k) = \alpha_k \cdot (d_k)^T \mathcal Q d_k [∇f(xk)]T∇f(xk)=αk⋅(dk)TQdk时,无论是
FR \text{FR} FR方法还是
PRP \text{PRP} PRP方法,其得到的
β k \beta_k βk都不是精确解。因为
Q \mathcal Q Q是
凸二次函数的特有信息,而
一般性目标函数可能不存在该信息,或者说
Q \mathcal Q Q存在,但不作主导作用。
[ ∇ f ( x k + 1 ) ] T [ ∇ f ( x k + 1 ) − ∇ f ( x k ) ] [ ∇ f ( x k ) ] T ∇ f ( x k ) ≠ [ ∇ f ( x k + 1 ) ] T ∇ f ( x k + 1 ) [ ∇ f ( x k ) ] T ∇ f ( x k ) \frac{[\nabla f(x_{k+1})]^T[\nabla f(x_{k+1}) - \nabla f(x_k)]}{[\nabla f(x_k)]^T \nabla f(x_k)} \neq \frac{[\nabla f(x_{k+1})]^T\nabla f(x_{k+1})}{[\nabla f(x_k)]^T \nabla f(x_k)} [∇f(xk)]T∇f(xk)[∇f(xk+1)]T[∇f(xk+1)−∇f(xk)]=[∇f(xk)]T∇f(xk)[∇f(xk+1)]T∇f(xk+1)
关于 FR,PRP \text{FR,PRP} FR,PRP方法的区别在于 β k \beta_k βk的迭代方式。关于非线性共轭梯度法的迭代过程表示如下:
初始化操作:
算法过程:
此时的目标函数可能已经不是形如
f ( x ) = 1 2 x T Q x + C T x \begin{aligned}f(x) = \frac{1}{2} x^T\mathcal Q x + \mathcal C^T x\end{aligned} f(x)=21xTQx+CTx的格式,因而不能使用公式进行求解;甚至此时的目标函数不一定是
凸函数,从而求解的最优解可能仅是
局部最优解,而不是
全局最优解;在迭代过程中
并不一定需要求解精确解,我们的目的是让目标函数收敛至最小值详见
线搜索方法——步长角度(精确搜索),因此完全可以使用
非精确搜索如 Armijo,Wolfe \text{Armijo,Wolfe} Armijo,Wolfe准则等获取优质步长。
根据线搜索公式的描述,在迭代过程中关于共轭方向 d k d_k dk的计算需要满足一个大前提: d k d_k dk是下降方向。相反,如果不是下降方向,需要对参数 β k \beta_k βk进行调整。
但这种调整同样存在风险:
d k d_k dk与其他方向不是共轭关系。
根据线性共轭梯度法的描述,其必然会在最多 n n n次迭代内找到凸二次函数的全局最优解。这意味着:该算法具有二次终止性;
在算法实现过程中通常采用 n n n步重启策略,从而该算法的收敛速度可达到 n n n步二阶收敛。
关于
n n n步重启策略的描述:在执行
n n n次迭代后,此时当前位置点的
所有分量均被更新一次。如果在
x n x_n xn位置处开始重新计算梯度:
d n = − ∇ f ( x n ) d_{n} = - \nabla f(x_n) dn=−∇f(xn)此时和初始化点
x 0 x_0 x0的计算方式是相同的。后续迭代与前面的迭代方式均相同。例如:
d n + 1 = − ∇ f ( x n + 1 ) + β n ⋅ d n d_{n+1} = - \nabla f(x_{n+1}) + \beta_{n} \cdot d_{n} dn+1=−∇f(xn+1)+βn⋅dn
和
线性共轭梯度法的区别在于:此时由于复杂的目标函数,该算法无法实现
n n n步迭代/
1 1 1次线搜索过程完成收敛。也就是说:
每 n n n次迭代后,迭代结果会在投影空间中描述一个全新的位置。这里的全新是指所有维度均被更新一次的结果。从而可能需要若干个
n n n次迭代才能达到最优解。
为什么要使用
n n n步重启策略:在迭代足够多次数的情况下,初始的一些
共轭方向已经不会对当前迭代结果产生太大作用。但如果使用正常的迭代方式。
初始共轭方向依然会以线性组合的形式留在当前迭代结果中,从而影响当前迭代的方向。例如关于
d n + 1 d_{n+1} dn+1的正常迭代:
d n + 1 = − ∇ f ( x 0 ) + ∑ i = 0 n β i ⋅ d i d_{n+1} = - \nabla f(x_0) + \sum_{i=0}^{n} \beta_i \cdot d_i dn+1=−∇f(x0)+i=0∑nβi⋅di
Reference \text{Reference} Reference:
最优化理论与方法-第七讲-无约束优化问题(三)