前言
上篇写了线性共轭梯度法,本篇继续非线性共轭梯度法
非线性共轭梯度法
非线性共轭梯度法:
- k = 0 k=0 k=0,通过梯度下降法初始化 x 0 , r 0 = ∇ f ( x 0 ) , p 0 = − r 0 x_0,r_0=\nabla f(x_0),p_0=-r_0 x0,r0=∇f(x0),p0=−r0
- 迭代到 k k k轮,判断收敛条件,如果不满足则进入第3步
- 通过非精确线搜索计算 α k \alpha_{k} αk
- x k + 1 = x k + α k p k x_{k+1}=x_k+\alpha_{k}p_k xk+1=xk+αkpk
- r k + 1 = ∇ f ( x k + 1 ) r_{k+1}=\nabla f(x_{k+1}) rk+1=∇f(xk+1)
- β k + 1 = r k + 1 T r k + 1 r k T r k \beta_{k+1}=\frac{r_{k+1}^Tr_{k+1}}{r_{k}^Tr_{k}} βk+1=rkTrkrk+1Trk+1
- p k + 1 = − r k + 1 + β k + 1 p k p_{k+1}=-r_{k+1}+\beta_{k+1}p_k pk+1=−rk+1+βk+1pk
- k = k + 1 k=k+1 k=k+1
以上就是FR-CG法的流程。
为了确保全局收敛性,使用FR-CG法时,要结合Strong Wolfe Condition,并且收敛速度比较慢。
将
β
\beta
β的更新方式进行更换,可以获得收敛速度更快的PR-CG法:
β
^
k
+
1
=
r
k
+
1
T
(
r
k
+
1
−
r
k
)
∣
∣
r
k
∣
∣
2
β
k
+
1
=
max
{
β
^
k
+
1
,
0
}
\hat \beta_{k+1}=\frac {r_{k+1}^T(r_{k+1}-r_{k})}{||r_k||^2} \\ \quad \beta_{k+1}=\max \{\hat\beta_{k+1},0 \}
β^k+1=∣∣rk∣∣2rk+1T(rk+1−rk)βk+1=max{β^k+1,0}