Ch5 梯度法
5.1 最速下降法
亦称梯度下降法
理论分析
- 定义二次泛函\(\psi(x) = x^TAx - 2b^Tx\),若A对称正定,则求解\(Ax = b\)的解等价于求解二次泛函\(\psi(x)\)的极小值点。
-
求解思路:给定任意向量\(x_{0}\),依次求\(x_{1}, x_{2}, \cdots\),s.t. \(\psi (x_{k+1}) < \psi(x_{k})\)
\(\rightarrow\)给定\(x_{0}\),确定一个下降方向 \(p_0\),在直线\(x_{0} + \alpha p_{0}\)上求\(\psi(x)\)的极小值点\(x_{1} = x_0 + \alpha_0 p_0\),i.e.,确定 \(\alpha_0 = \mathop{\arg \min }\limits_{\alpha \in \mathbb{R}}\psi(x_0 + \alpha p_0)\);
\(\rightarrow\)给定 \(x_1\),确定一个下降方向 \(p_1\),\(\cdots\)
- 问题转化为两要点:
- 如何确定方向序列\(\{ p_{k}\}\);
- 如何求得步长序列\(\{\alpha_k\}\)。这里步长的确定一般依靠线搜索方法。
算法
Set \(x_{0} \in \mathbb{R}^n, p_{0} = r_{0} = b - Ax_{0}, k = 0,\)
while \(r_{k}\neq 0\), repeat
\(\alpha_k = \frac{ r_{k}^Tr_{k}}{ r_{k}^TAr_{k}}\)
\(x_{k+1} = x_{k} + \alpha_k r_{k}\)
\(r_{k+1} = b - Ax_{k+1}\)
\(k \leftarrow k+1\)
end(while)
5.2 共轭梯度法(Conjugate Gradient)
与最速下降法的异同
- 相同点:第一步仍然要取\(x_{0} \in \mathbb{R}^n, r_{0} = b- Ax_{0}\);
- 不同点:在第\(k+1(k \geq 1)\)步中,“下降”方向不再取负梯度方向。CG的下降方向的选取策略如下:在过点\(x_{k}\)由向量\(r_{k}\)和\(p_{k-1}\)所张成的平面内选取\(\psi(x)\)下降最快的方向:\(\pi = \{x = x_{k} + \xi r_{k} + \eta p_{k-1}: \xi, \eta \in \mathbb{R} \}\)
标准共轭梯度法(Standard CG)
目标函数为\(f(x) = \frac{1}{2}x^T A x - b^T x\),故梯度为\(\nabla f(x) = Ax - b\),则下降方向要取负梯度\(p = r = b - Ax\)。
算法
\(\forall x_{0}\), set \(r_{0} = b - Ax_{0}, p_{0} = r_{0}, k =0,\)
while \(r_{k}\neq 0\), repeat
\(\alpha_k = \frac{ r_{k}^Tp_{k}}{ p_{k}^TAp_{k}}\)
\(x_{k+1} = x_{k} + \alpha_{k} p_{k}\)
\(r_{k+1} = b - Ax_{k+1}\)
\(\beta_k = -\frac{ r_{k+1}^TAp_{k}}{ p_{k}^TAp_{k}}\)
\(p_{k+1} = r_{k+1} + \beta_k p_{k}\)
\(k \leftarrow k+1\)
end(while)
其中第一步示例如下.
Standard CG算法中部分步骤计算的简化
- \(\alpha_k = \frac{r_k^T r_k}{p_k^T A p_k}\)
- \(r_{k+1} = r_k - \alpha_k A p_k\)
- \(\beta_{k} = \frac{r_{k+1}^T r_{k+1}}{r_k^T r_k}\)
“共轭”的体现-共轭基本性质
由C-G法得到的向量组\(\{r^{(i)}\}\)与\(\{p^{(i)} \}\)有以下性质:
(1) \(p_{i}^T r_{j} = 0,\; 0 \leq i < j \leq k\);
(2) \(r_{i}^T r_{j} = 0,\; 0 \leq i,j \leq k,\; i\neq j\);
(3) \(p_{i}^T A p_{j} = 0,\; 0 \leq i,j \leq k,\; i\neq j\);
(4)\(\text{span}\{r_{0}, \cdots, r_{k} \} = \text{span}\{p_{0}, \cdots, p_{k} \} = \mathcal{K}(A, r_{0}, k+1)\),其中\(\mathcal{K}(A, r_{0}, k+1) = \text{span}\{r_{0}, Ar_{0}, \cdots, A^k r_{0} \}\),通常称之为\(Krylov\)子空间。
证明 用数学归纳法. 当 \(k=1\)时,因为
故
所以定理的结论对 \(k=1\) 成立. 现假设定理的结论对 \(k(k\geq 1)\) 成立,下面证明其对 \(k+1\) 也成立.
(1) 利用等式 \(r_{k+1} = r_k - \alpha_k A p_k\) 及归纳法假设,有
又由于
故定理的结论(1)对 \(k+1\) 亦成立.
(2) 利用归纳假设有
而由(1)所证可知,\(r_{k+1}\)与上述子空间正交,从而定理的结论(2)对 \(k+1\) 也成立.
(3) 由等式
有
利用上述等式、等式 \(p_{k+1} = r_{k+1} + \beta_k p_k\) 与归纳假设以及(2)所证的结论,有
而由 \(\beta_k\) 的定义可得
故定理的结论(3)对 \(k+1\) 也成立.
(4) 由归纳假设知
于是
再注意到 (2) 和 (3) 所证的结论表明,向量组 \(r_0, \cdots, r_{k+1}\) 是线性无关的,\(p_0, \cdots, p_{k+1}\) 是线性无关的,因此定理的结论 (4) 对 \(k+1\) 同样成立.
综上所述,由归纳法原理知定理得证.
5.3 预优共轭梯度法(Preconditioned CG)
想法来源
当线性方程组 \(Ax = b\) 的系数矩阵 \(A\) 仅有几个少数几个互不相同的特征值或者非常良态的时候,共轭梯度法就会收敛得非常之快. 这就促使我们在应用共轭梯度法时,首先应将原方程转化为另一个方程 \(\tilde{A}\tilde{x} = \tilde{b}\),其中 \(\tilde{A}\) 满足上述讨论的性质.
这个想法的基础是下面这个定理:
用共轭梯度法求得的 \(x_k\) 有如下的误差估计:
其中 \(||x||_A = \sqrt{x^TA x}, \;\kappa_2(A) = ||A||_2 ||A^{-1}||_2\).
理论分析
选择对称正定阵 \(C\),使得 \(\tilde{A} = C^{-T} A C^{-1}, \tilde{x} = Cx, \tilde{b} = C^{-T}b\),且我们希望 \(\tilde{A}\) 具有良好的性质.
应用Standard CG于上述方程组,常规的做法是首先计算 \(\tilde{A} = C^{-T} A C^{-1}, \tilde{x} = Cx, \tilde{b} = C^{-T}b\),并且在获得近似解 \(\tilde{x}_k\) 之后需通过变换 \(x_k = C^{-1}\tilde{x}_k\) 获取原方程的解.
实际上这些都是不必要的
令
故
其中 \(My_0 = r_0, p_0 = y_0\). 则
在获得预优矩阵 \(M\) 的表达式之后,我们可以设计如下的算法
算法
\(\forall x_{0}\), set \(r_{0} = b - Ax_{0},\; p_{0} = y_{0} = M^{-1}r_0,\; k =0,\)
while \(r_{k}\neq 0\), repeat
\(\alpha_k = \frac{ r_{k}^Ty_{k}}{ p_{k}^TAp_{k}}\)
\(x_{k+1} = x_{k} + \alpha_{k} p_{k}\)
\(r_{k+1} = b - Ax_{k+1} = r_k - \alpha_k A p_k\)
Solve \(My_{k+1} = r_{k+1}\)
\(\beta_k = \frac{ r_{k+1}^T y_{k+1}}{ r_{k}^T y_{k}}\)
\(p_{k+1} = y_{k+1} + \beta_k p_{k}\)
\(k \leftarrow k+1\)
end(while)