Ch5 梯度法
5.1 最优化问题
定义二次泛函 ϕ(x)=xTAx−2bTx,若 A 对称正定,则求解 Ax=b 的解等价于求解二次泛函 ϕ(x) 的极小值点。
Proof.
ϕ(x)是凸函数,其梯度为 ∇ϕ(x)=Ax−b. 设 x∗ 为方程 Ax=b 的解,xc 为函数 ϕ 的最小化点,定义 A-范数为
∥v∥A=vTAv.
由于
ϕ(xc)=21xcTAxc−xcTb=21(xc−x∗)TA(xc−x∗)−21bTA−1b
且
ϕ(x∗)=−21bTA−1b,
因此可得
ϕ(xc)=21∥xc−x∗∥A2+ϕ(x∗).
故产生一系列逐次更优的 ϕ 的近似最小化点的迭代过程,亦即产生一系列逐次更优的 Ax=b 的近似解的迭代过程,这些近似解以 A- 范数衡量。■
5.2 最速下降法
亦称梯度下降法
分析
改进的近似最小化点 x+ 由下式给出
x+=xc−μcgc,
其中 gc=Axc−b 是当前梯度,μc 解决
μ∈Rminϕ(xc−μgc).
μc 的表达式是 gcTAgcgcTgc
Proof.
由于
ϕ(xc−μgc)=21(xc−μgc)TA(xc−μgc)−(xc−μgc)Tb=21μ2gcTAgc−μgcT[Axc−b]=21μ2gcTAgc−μgcTgc,
且 ∂μ∂ϕ=μgcTAgc−gcTgc,令 ∂μ∂ϕ=0,则 μc=gcTAgcgcTgc。■
现在我们有
ϕ(x+)=ϕ(xc−μcgc)=21xcTAxc−xcTb+21μ2gcTAgc−μgcTgc=ϕ(xc)−21gcTAgc(gcTgc)2.
因此,如果 gc=0,目标函数是减小的。为了建立该方法的全局收敛性,定义
κc=gcTgcgcTAgc⋅gcTgcgcTA−1gc
并观察到 gcTA−1gc=2ϕ(xc)+bTA−1b 和
ϕ(x+)=ϕ(xc)−21κc1gcTA−1gc=ϕ(xc)−κc1(ϕ(xc)+21bTA−1b).
如果 λmax(A) 和 λmin(A) 是 A 的最大和最小特征值,那么我们有
κc=gcTgcgcTAgc⋅gcTgcgcTA−1gc≤λmin(A)λmax(A)=κ2(A).
如果我们从 (11.3.8) 两边减去 ϕ(x∗)=−(bTA−1b)/2 并使用 (11.3.5),那么我们得到
∥x+−x∗∥A2≤(1−κ2(A)1)∥xc−x∗∥A2.
由此通过归纳可知,具有精确线搜索的最速下降法是全局收敛的。
算法
下降方向是负梯度方向:−(Ax−b),学习率为上述分析中的 μ。
\begin{algorithm}\caption{最速下降法/梯度下降法 Gradient Descent}
\begin{algorithmic}
\Input{$A,b$}
\Output{$x = x_{k}$}
\State{Set $x_{0}\in\mathbb{R}^{n}, r_{0}=Ax_{0}-b, k=0$}
\While{$r_{k}\neq 0$}
\State{$\mu_k = \frac{ r_{k}^Tr_{k}}{ r_{k}^TAr_{k}}$}
\State{$x_{k+1} = x_{k} - \mu_k r_{k}$}
\State{$r_{k+1} = Ax_{k+1} - b$}
\State{$k \leftarrow k+1$}
\EndWhile
\end{algorithmic}
\end{algorithm}
5.3 共轭梯度法(Conjugate Gradient)
理论分析 - A subspace strategy(子空间策略)
定义 v+S={x:x=v+s,s∈S}(我们可以发现最速下降法在第 k 步对仿射空间 xk+span{∇ϕ(xk)} 进行优化)
给定 x0:Ax0≈b,我们的目标是找到 {S1⊂S2⊂S3⊂⋯dim(Sk)=k 来解决每一步的 minx∈x0+Skϕ(x)。
如果 xk 是第 k 步的最小化点,由于嵌套性质,则有
ϕ(x1)≥ϕ(x2)≥⋯≥ϕ(xn)=ϕ(x∗).
接下来我们希望找到一个子空间,以促进 ϕ 值的快速减小。由于 ϕ 在负梯度方向上减小最快,因此在 xk 处,我们选择包含 xk 和 ∇ϕ(xk)=Axk−b 的 Sk,则有
ϕ(xk+1)≜x∈x0+Sk+1minϕ(x)≤μ∈Rminϕ(xk−μgk)
如果 x0 是一个初始猜测,并且我们定义 g0=Ax0−b,那么由于 ∇ϕ(xk)∈span{xk,Axk} 可以得出满足这一要求的唯一方法是设置
Sk=K(A,g0,k)=span{g0,Ag0,⋯,Ak−1g0}.
标准共轭梯度法(Standard CG)算法
\begin{algorithm}\caption{标准共轭梯度法 Standard Conjugate Gradient}
\begin{algorithmic}
\Input{$A,b$}
\Output{$x = x_{k}$}
\State{Set $x_{0}\in\mathbb{R}^{n}, r_{0}=b-Ax_{0}, p_0=r_0, k=0$}
\While{$r_{k}\neq 0$}
\State{$\alpha_k = \frac{ r_{k}^Tp_{k}}{ p_{k}^TAp_{k}}$}
\State{$x_{k+1} = x_{k} + \alpha_{k} p_{k}$}
\State{$r_{k+1} = b - Ax_{k+1}=r_k - \alpha_k A p_k$}
\State{$\beta_k = -\frac{ r_{k+1}^TAp_{k}}{ p_{k}^TAp_{k}}$}
\State{$p_{k+1} = r_{k+1} + \beta_k p_{k}$}
\State{$k \leftarrow k+1$}
\EndWhile
\end{algorithmic}
\end{algorithm}
其中第一步示例如下:
α0=p0TAp0r0Tp0,x1=x0+α0p0,r1=b−Ax1,β0=−p0TAp0r1TAp0,p1=r1+β0p0,k=k+1.
上述 Standard CG 算法中部分步骤计算的优化:
- αk=pkTApkrkTrk
- rk+1=rk−αkApk
- βk=rkTrkrk+1Trk+1
“共轭”的体现-共轭基本性质
由 C-G 法得到的向量组 {r(i)} 与 {p(i)} 有以下性质:
(1) piTrj=0,0≤i<j≤k;
(2) riTrj=0,0≤i,j≤k,i=j;
(3) piTApj=0,0≤i,j≤k,i=j;
(4)span{r0,⋯,rk}=span{p0,⋯,pk}=K(A,r0,k+1),其中K(A,r0,k+1)=span{r0,Ar0,⋯,Akr0},通常称之为 Krylov 子空间。
证明 用数学归纳法. 当 k=1 时,因为
p0=r0,r1=r0−α0Ap0,p1=r1+β1p0,
故
r1Tr0=r0Tr0−α0r0TAr0=r0Tr0−r0TAr0r0Tr0r0TAr0=0,p1TAp0=(r1+β0r0)TAr0=r1TAr0−r0TAr0r1TAr0r0TAr0=0.
所以定理的结论对 k=1 成立. 现假设定理的结论对 k(k≥1) 成立,下面证明其对 k+1 也成立.
(1) 利用等式 rk+1=rk−αkApk 及归纳法假设,有
piTrk+1=piTrk−αkpiTApk=0−0=0,0≤i≤k−1.
又由于
pkTrk+1=pkTrk−αkpkTApk=pkTrk−pkTApkpkTrkpkTApk=0.
故定理的结论(1)对 k+1 亦成立.
(2) 利用归纳假设有
span{r0,⋯,rk}=span{p0,⋯,pk},
而由(1)所证可知,rk+1 与上述子空间正交,从而定理的结论(2)对 k+1 也成立.
(3) 由等式
ri+1=ri−αiApi,i=0,1,⋯,k−1.
有
piTA=αi1(ri−ri+1)T
利用上述等式、等式 pk+1=rk+1+βkpk 与归纳假设以及(2)所证的结论,有
piTApk+1=αi1rk+1T(ri−ri+1)+βkpiTApk=0−0+0=0,i=0,1,⋯,k−1.
而由 βk 的定义可得
pk+1TApk=(rk+1+βk+1pk)TApk=rk+1TApk−pkTApkrk+1TApkpkTApk=0−0=0.
故定理的结论(3)对 k+1 也成立.
(4) 由归纳假设知
rk,pk∈k(A,r0,k+1)=span{r0,Ar0,⋯,Akr0},
于是
rk+1=rk−αkpk∈K(A,r0,k+2)=span{r0,Ar0,⋯,Ak+1r0},pk+1=rk+1+βkpk∈K(A,r0,k+2)=span{r0,Ar0,⋯,Ak+1r0}.
再注意到 (2) 和 (3) 所证的结论表明,向量组 r0,⋯,rk+1 是线性无关的,p0,⋯,pk+1 是线性无关的,因此定理的结论 (4) 对 k+1
同样成立.
综上所述,由归纳法原理知定理得证. ■
5.4 预优共轭梯度法(Preconditioned CG)
想法来源
当线性方程组 Ax=b 的系数矩阵 A 仅有几个少数几个互不相同的特征值或者非常良态的时候,共轭梯度法就会收敛得非常之快. 这就促使我们在应用共轭梯度法时,首先应将原方程转化为另一个方程 A~x~=b~,其中 A~ 满足上述讨论的性质.
这个想法的基础是下面这个定理:
用共轭梯度法求得的 xk 有如下的误差估计:
∣∣xk−x∗∣∣A≤2(κ2(A)+1κ2(A)−1)k∣∣x0−x∗∣∣A,
其中 ∣∣x∣∣A=xTAx,κ2(A)=∣∣A∣∣2∣∣A−1∣∣2.
理论分析
选择对称正定阵 C,使得 A~=C−TAC−1,x~=Cx,b~=C−Tb,且我们希望 A~ 具有良好的性质.
应用Standard CG于上述方程组,常规的做法是首先计算 A~=C−TAC−1,x~=Cx,b~=C−Tb,并且在获得近似解 x~k 之后需通过变换 xk=C−1x~k 获取原方程的解.
实际上这些都是不必要的
令
∀x0∈Rn,x~0=Cx0,Setr~0=b~−A~x~0=C−Tr0,p~0=r~0,
故
α0=r0TC−1C−TAC−1C−Tr0r0TC−1C−Tr0=p0ATp0r0Ty0,
其中 My0=r0,p0=y0. 则
y0=M−1r0=C−1C−Tr0,⟹M=CTC=C2.
在获得预优矩阵 M 的表达式之后,我们可以设计如下的算法
算法
\begin{algorithm}\caption{预优共轭梯度法 Preconditioned Conjugate Gradient}
\begin{algorithmic}
\Input{$A,b;M$}
\Output{$x = x_{k}$}
\State{Set $x_{0}\in\mathbb{R}^{n}, r_{0}=b-Ax_{0}, p_0=y_0=M^{-1}r_0, k=0$}
\While{$r_{k}\neq 0$}
\State{$\alpha_k = \frac{ r_{k}^Ty_{k}}{ p_{k}^TAp_{k}}$}
\State{$x_{k+1} = x_{k} + \alpha_{k} p_{k}$}
\State{$r_{k+1} = b - Ax_{k+1} = r_{k} - \alpha_{k}Ap_k$}
\State{\bfseries{Solve} $y_{k+1}$ for $My_{k+1}=r_{k+1}$}
\State{$\beta_k = \frac{ r_{k+1}^{T} y_{k+1}}{ r_{k}^{T} y_{k}}$}
\State{$p_{k+1} = y_{k+1} + \beta_k p_{k}$}
\State{$k \leftarrow k+1$}
\EndWhile
\end{algorithmic}
\end{algorithm}