随机化Kaczmarz算法在超定线性方程组求解中的加速收敛与采样策略优化
1. 题目描述
考虑求解一个超定线性方程组:
\[A \mathbf{x} = \mathbf{b} \]
其中 \(A \in \mathbb{R}^{m \times n}\),\(m \gg n\),\(\mathbf{b} \in \mathbb{R}^m\)。由于方程数多于未知数,通常无精确解,转而求最小二乘解:
\[\mathbf{x}^* = \arg\min_{\mathbf{x}} \|A\mathbf{x} - \mathbf{b}\|_2^2 \]
随机化Kaczmarz算法是经典Kaczmarz方法的随机加速版本,通过合理选择行采样策略,显著提高收敛速度。本题将深入讲解其原理、采样策略的设计及收敛性分析。
2. 背景与基本思想
- 经典Kaczmarz算法:每次迭代随机选取一个方程(即矩阵的一行),将当前解投影到该行对应的超平面上。收敛速度依赖于行的顺序,可能很慢。
- 核心问题:如何选择行能加速收敛?随机化Kaczmarz通过按行范数分布采样,使期望收敛速度最大化。
3. 算法推导
步骤1:经典Kaczmarz的单步更新
设 \(a_i^T\) 是 \(A\) 的第 \(i\) 行,\(b_i\) 是 \(\mathbf{b}\) 的第 \(i\) 个分量。选取第 \(i\) 行时,更新公式为:
\[\mathbf{x}_{k+1} = \mathbf{x}_k + \frac{b_i - a_i^T \mathbf{x}_k}{\|a_i\|_2^2} a_i \]
这相当于将 \(\mathbf{x}_k\) 投影到超平面 \(a_i^T \mathbf{x} = b_i\) 上。
步骤2:随机采样策略
定义行 \(i\) 的采样概率为:
\[p_i = \frac{\|a_i\|_2^2}{\|A\|_F^2} \]
其中 \(\|A\|_F\) 是Frobenius范数。该策略让范数大的行以更高概率被选中,因为大范数行对误差的影响更大。
步骤3:随机化Kaczmarz算法
- 计算行范数 \(\|a_i\|_2^2\) 和总范数 \(\|A\|_F^2 = \sum_{i=1}^m \|a_i\|_2^2\)。
- 初始化 \(\mathbf{x}_0\)(例如零向量)。
- 对 \(k = 0, 1, 2, \dots\) 直到收敛:
- 按概率分布 \(p_i\) 随机选取行索引 \(i_k\)。
- 更新:\(\mathbf{x}_{k+1} = \mathbf{x}_k + \frac{b_{i_k} - a_{i_k}^T \mathbf{x}_k}{\|a_{i_k}\|_2^2} a_{i_k}\)。
4. 收敛性分析
关键引理:
定义最小二乘解 \(\mathbf{x}^*\) 的误差 \(\mathbf{e}_k = \mathbf{x}_k - \mathbf{x}^*\),可以证明:
\[\mathbb{E}[\|\mathbf{e}_{k+1}\|_2^2] \leq \left(1 - \frac{\sigma_{\min}^2(A)}{\|A\|_F^2}\right) \mathbb{E}[\|\mathbf{e}_k\|_2^2] \]
其中 \(\sigma_{\min}(A)\) 是 \(A\) 的最小奇异值。
推导概要:
- 由更新公式,误差满足:
\[ \mathbf{e}_{k+1} = \left(I - \frac{a_{i_k} a_{i_k}^T}{\|a_{i_k}\|_2^2}\right) \mathbf{e}_k \]
- 对随机选取的行取期望:
\[ \mathbb{E}[\|\mathbf{e}_{k+1}\|_2^2] = \|\mathbf{e}_k\|_2^2 - \mathbb{E}\left[\frac{(a_{i_k}^T \mathbf{e}_k)^2}{\|a_{i_k}\|_2^2}\right] \]
- 利用采样概率 \(p_i\) 和瑞利商性质,可得衰减因子 \(1 - \sigma_{\min}^2(A)/\|A\|_F^2\)。
收敛速度:
误差每步期望衰减因子为:
\[\rho = 1 - \frac{\sigma_{\min}^2(A)}{\|A\|_F^2} \]
因此迭代次数 \(K = O\left(\frac{\|A\|_F^2}{\sigma_{\min}^2(A)} \log(1/\epsilon)\right)\) 可达到精度 \(\epsilon\)。
5. 采样策略的优化
问题:基本策略对条件数大的矩阵收敛仍较慢(\(\sigma_{\min}(A)\) 很小)。
改进方案:
- 分区采样:将行按范数分组,每组内均匀采样,再在组间按总范数比例采样,平衡探索与利用。
- 近似杠杆得分采样:采样概率正比于行的杠杆值(leverage score)\(\ell_i = \|U(i,:)\|_2^2\),其中 \(U\) 来自 \(A\) 的SVD或随机化近似。这能进一步加速。
- 贪婪随机化:每步以一定概率选最大残差行,否则按概率 \(p_i\) 选,结合确定性贪婪与随机性。
6. 数值示例(思想实验)
设:
\[A = \begin{bmatrix} 1 & 0 \\ 0 & 10^{-3} \\ 1 & 1 \end{bmatrix}, \quad \mathbf{b} = \begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix} \]
- 行范数:\(\|a_1\|^2=1, \|a_2\|^2=10^{-6}, \|a_3\|^2=2\)。
- 基本策略概率:\(p_1 \approx 0.33, p_2 \approx 3.3\times 10^{-7}, p_3 \approx 0.67\)。
- 效果:第2行几乎不被选中,但其条件数影响大(小奇异值来源)。若用杠杆得分,第2行概率提升,收敛更快。
7. 算法扩展
- 块随机化Kaczmarz:每次选一个行子集,更新为投影到子空间上,减少迭代次数。
- 加速技术:结合Nesterov动量或方差缩减技巧(如SVRG),可进一步降低方差,达到线性收敛。
8. 总结
- 随机化Kaczmarz通过非均匀采样,将收敛速度与矩阵行范数分布关联,比均匀采样大幅加速。
- 最优采样策略(如杠杆得分)能逼近理论下界,尤其适合病态超定系统。
- 该算法简单、内存友好,适用于大规模数据拟合和分布式计算。