上一节主要介绍了共轭方向法的重要特征以及相关证明,本节将介绍共轭方向法的代表算法——共轭梯度法。
关于凸二次函数
f
(
x
)
f(x)
f(x)的优化问题:
min
f
(
x
)
=
1
2
x
T
Q
x
+
C
T
x
minf(x)=12xTQx+CTx
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
(dk+1)TQdi=0⇒[−∇f(xk+1)+β0d0+β1d1⋯+βkdk]TQdi=0⇒[−∇f(xk+1)]TQdi+β0⋅(d0)TQdi⏟=0+⋯+βi⋅(di)TQdi+⋯+βk(dk)TQdi⏟=0=0⇒[−∇f(xk+1)]TQdi+βi⋅(di)TQdi=0
(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
)
]
Qdj=1αj(Qxj+1−Qxj)=1αj[(Qxj+1+C)−(Qxj+C)]=1αj[∇f(xj+1)−∇f(xj)]
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
)
}
TQdj=1αj⋅[∇f(xk+1)]T[∇f(xj+1)−∇f(xj)]=1αj⋅{[∇f(xk+1)]T∇f(xj+1)−[∇f(xk+1)]T∇f(xj)}
[∇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
T∇f(xj+1)=−[∇f(xk+1)]Tdj+1⏟=0+β0⋅[∇f(xk+1)]Td0⏟=0+⋯+βj⋅[∇f(xk+1)]Tdj⏟=0=0
[∇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
αk=−[∇f(xk)]Tdk(dk)TQdk
α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
)
Tdk=[∇f(xk)]T[−∇f(xk)+βk−1⋅dk−1]=−[∇f(xk)]T∇f(xk)+βk−1⋅[∇f(xk)]Tdk−1⏟0=−[∇f(xk)]T∇f(xk)
[∇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
βk=∇f(xk+1)Qdk(dk)TQdk
β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
)
]
Qdk=1αk[∇f(xk+1)−∇f(xk)]
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
βk=1αk⋅[∇f(xk+1)]T[∇f(xk+1)−∇f(xk)](dk)TQdk=[∇f(xk+1)]T[∇f(xk+1)−∇f(xk)]αk⋅(dk)TQdk
β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
)
βk=[∇f(xk+1)]T[∇f(xk+1)−∇f(xk)][∇f(xk)]T∇f(xk)=[∇f(xk+1)]T∇f(xk+1)[∇f(xk)]T∇f(xk)
β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
)
βk=[∇f(xk+1)]T∇f(xk+1)[∇f(xk)]T∇f(xk)
β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
f(x)=12xTQx+CTx
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
f(x)=12xTQx+CTx
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:
最优化理论与方法-第七讲-无约束优化问题(三)