随机化Nesterov加速Kaczmarz算法在求解超定线性方程组中的应用
题目描述
假设我们有一个大型、超定的线性方程组 \(A \mathbf{x} = \mathbf{b}\),其中 \(A \in \mathbb{R}^{m \times n}\) 且 \(m \gg n\),通常无解(即不相容)。我们目标是找到最小二乘解 \(\mathbf{x}^* = \arg\min_{\mathbf{x}} \|A\mathbf{x} - \mathbf{b}\|_2^2\)。Kaczmarz算法通过逐行投影求解,但收敛慢。本题结合随机化行选择与Nesterov加速技巧,得到“随机化Nesterov加速Kaczmarz算法”,以期大幅加速收敛。
第一步:回顾经典Kaczmarz算法
给定第 \(i\) 行 \(\mathbf{a}_i^T\) 和对应右端项 \(b_i\),经典Kaczmarz更新为:
\[\mathbf{x}_{k+1} = \mathbf{x}_k + \frac{b_i - \mathbf{a}_i^T \mathbf{x}_k}{\|\mathbf{a}_i\|_2^2} \mathbf{a}_i \]
即向超平面 \(\mathbf{a}_i^T \mathbf{x} = b_i\) 投影。若按顺序选行,收敛慢。随机化Kaczmarz以概率 \(p_i = \|\mathbf{a}_i\|_2^2 / \|A\|_F^2\) 选行,可加速。
第二步:引入Nesterov加速思想
Nesterov加速梯度法在梯度下降中加入“动量”,其一般形式为:
\[\begin{aligned} \mathbf{y}_k &= \mathbf{x}_k + \alpha_k (\mathbf{x}_k - \mathbf{x}_{k-1}) \\ \mathbf{x}_{k+1} &= \mathbf{y}_k - \eta \nabla f(\mathbf{y}_k) \end{aligned} \]
其中 \(\alpha_k\) 为动量系数,\(\eta\) 为步长。对最小二乘问题 \(f(\mathbf{x}) = \frac12 \|A\mathbf{x}-\mathbf{b}\|_2^2\),梯度为 \(A^T(A\mathbf{x}-\mathbf{b})\)。但这里我们不直接用梯度,而是将Kaczmarz的单行投影视为随机梯度步。
第三步:推导随机化Nesterov加速Kaczmarz(RNK)
将Nesterov动量与随机行选择结合。定义:
- 当前迭代点 \(\mathbf{x}_k\) 和辅助点 \(\mathbf{y}_k\)。
- 行选择概率 \(p_i = \|\mathbf{a}_i\|_2^2 / \|A\|_F^2\)。
- 动量系数序列 \(\alpha_k = (t_k - 1)/t_{k+1}\),通常取 \(t_0=1, t_{k+1} = (1+\sqrt{1+4t_k^2})/2\)(Nesterov经典选择)。
算法迭代格式如下(对每个 \(k\)):
- 根据概率 \(p_i\) 随机选取行索引 \(i_k\)。
- 计算辅助点更新:
\[ \mathbf{y}_k = \mathbf{x}_k + \alpha_k (\mathbf{x}_k - \mathbf{x}_{k-1}) \]
- 执行Kaczmarz投影步,但基于 \(\mathbf{y}_k\) 和选中的行:
\[ \mathbf{x}_{k+1} = \mathbf{y}_k + \frac{b_{i_k} - \mathbf{a}_{i_k}^T \mathbf{y}_k}{\|\mathbf{a}_{i_k}\|_2^2} \mathbf{a}_{i_k} \]
- 更新 \(t_{k+1} = (1+\sqrt{1+4t_k^2})/2\),从而更新 \(\alpha_{k+1} = (t_{k+1}-1)/t_{k+2}\) 用于下一步。
注意:第一步初始化 \(\mathbf{x}_0 = \mathbf{x}_{-1} = \mathbf{0}\) 或其他初值。
第四步:直观解释与几何视角
- 经典随机Kaczmarz是梯度下降的随机坐标上升变体,收敛速度为 \(O(1/k)\)。
- 加入Nesterov动量后,本质是将迭代方向从当前点 \(\mathbf{x}_k\) 切换到外推点 \(\mathbf{y}_k\),这个外推利用了前两步信息,在光滑强凸问题中可加速到 \(O(1/k^2)\)。
- 在随机设置下,虽然理论保证更复杂,但实践表明动量可显著减少迭代震荡,更快逼近解。
第五步:收敛性要点
对于一致随机行选择,若方程组相容(有解),随机Kaczmarz期望误差衰减为:
\[\mathbb{E} \|\mathbf{x}_k - \mathbf{x}^*\|_2^2 \le (1 - \frac{\sigma_{\min}^2(A)}{\|A\|_F^2})^k \|\mathbf{x}_0 - \mathbf{x}^*\|_2^2 \]
其中 \(\sigma_{\min}(A)\) 是 \(A\) 的最小奇异值。加入Nesterov加速后,在目标函数强凸且光滑的假设下(这里对应 \(f(\mathbf{x}) = \frac12\|A\mathbf{x}-\mathbf{b}\|_2^2\)),动量可将收敛率从 \(O(1/k)\) 提升至 \(O(1/k^2)\)。但对于随机Kaczmarz,其更新并非精确梯度步,需用随机近似梯度理论分析,通常得到类似加速效果。
第六步:算法实现注意事项
- 行范数 \(\|\mathbf{a}_i\|_2^2\) 和 \(\|A\|_F^2\) 可预计算,加速概率抽样。
- 对于超定不相容系统,算法收敛到最小二乘解在行张成空间上的投影,收敛性分析需考虑噪声项。
- 实际中可引入松弛参数 \(\omega\) 在投影步:
\[ \mathbf{x}_{k+1} = \mathbf{y}_k + \omega \frac{b_{i_k} - \mathbf{a}_{i_k}^T \mathbf{y}_k}{\|\mathbf{a}_{i_k}\|_2^2} \mathbf{a}_{i_k} \]
\(\omega \in (0,2)\) 保证收敛,可调优加速。
第七步:与普通随机Kaczmarz比较
- 优点:动量项平滑迭代路径,减少“之字形”震荡,在条件数较大时加速明显。
- 缺点:需存储上一步迭代点,计算动量外推,略微增加每步开销,但通常可忽略。
总结
随机化Nesterov加速Kaczmarz算法将经典投影法与动量加速结合,是求解大规模超定线性系统的有效迭代法,尤其适合数据矩阵 \(A\) 行数远大于列数且稀疏的场景。其核心是在随机行选择的框架下,通过Nesterov外推预测下一步更优的更新方向,从而显著提升收敛速度。