随机化块Kaczmarz算法在稀疏线性方程组中的概率分布与收敛加速策略
字数 2941 2025-12-18 08:15:28

随机化块Kaczmarz算法在稀疏线性方程组中的概率分布与收敛加速策略

我们先看算法背景。
随机化Kaczmarz算法是一种求解大规模线性方程组 \(A x = b\) 的迭代方法,尤其适用于超定或欠定稀疏矩阵。
当矩阵是分块结构时,采用随机化块Kaczmarz能显著加速收敛。今天介绍其概率分布设计收敛加速策略


1. 问题描述

设线性方程组

\[A x = b, \]

其中 \(A \in \mathbb{R}^{m \times n}\)\(b \in \mathbb{R}^m\),且 \(A\) 是稀疏矩阵。
我们将矩阵的行分成 \(t\) 个块(子矩阵):

\[A = \begin{bmatrix} A_1 \\ A_2 \\ \vdots \\ A_t \end{bmatrix}, \quad b = \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_t \end{bmatrix}, \]

每个块 \(A_i \in \mathbb{R}^{m_i \times n}\)\(\sum_{i=1}^t m_i = m\)

我们的目标是设计一种随机选取块迭代的规则,使得收敛比传统Kaczmarz更快。


2. 经典Kaczmarz与随机化Kaczmarz回顾

Kaczmarz迭代逐行更新:

\[x_{k+1} = x_k + \frac{b_i - a_i^T x_k}{\|a_i\|^2} a_i, \]

其中 \(a_i\)\(A\) 的第 \(i\) 行。

随机化版本(Strohmer & Vershynin, 2009)按概率

\[p_i = \frac{\|a_i\|^2}{\|A\|_F^2} \]

选取行,其中 \(\|A\|_F\) 是Frobenius范数,这样能保证指数收敛期望。


3. 分块Kaczmarz算法

若选取块 \(i\),则更新公式变为:

\[x_{k+1} = x_k + A_i^\dagger (b_i - A_i x_k), \]

其中 \(A_i^\dagger\)\(A_i\) 的伪逆(若 \(A_i\) 行满秩,则 \(A_i^\dagger = A_i^T (A_i A_i^T)^{-1}\))。
这相当于将当前残差在块 \(i\) 对应的行空间上做最小二乘投影。


4. 随机化块选择的概率设计

为了加速收敛,需要考虑块行范数条件数两个因素。

方法1:依块Frobenius范数采样
定义

\[p_i = \frac{\|A_i\|_F^2}{\sum_{j=1}^t \|A_j\|_F^2}. \]

这是直接推广,但未考虑不同块的“困难程度”。

方法2:依块条件数加权的概率
\(\sigma_{\min}(A_i)\)\(A_i\) 的最小奇异值,若行满秩,则收敛速度与 \(\sigma_{\min}^2(A_i)\) 有关。
定义

\[p_i \propto \|A_i\|_F^2 \cdot \frac{1}{\kappa_i^2}, \]

其中 \(\kappa_i = \frac{\sigma_{\max}(A_i)}{\sigma_{\min}(A_i)}\)\(A_i\) 的条件数。
这样更倾向于选择条件数较小的块,避免迭代在病态块上进展缓慢。


5. 自适应权重调整策略

我们可以在迭代过程中动态调整概率:

  1. 开始时所有块等概率。
  2. 记录每次选择块 \(i\) 后残差下降量 \(\Delta r_i = \|b_i - A_i x_k\|^2\)
  3. 若某块残差下降显著,增大其概率;否则降低。

具体:设 \(w_i^{(k)}\) 为块 \(i\) 在第 \(k\) 轮权重,归一化得概率

\[p_i^{(k)} = \frac{w_i^{(k)}}{\sum_j w_j^{(k)}}. \]

权重更新:

\[w_i^{(k+1)} = w_i^{(k)} \cdot \exp\left( \eta \cdot \frac{\Delta r_i}{\text{avg}(\Delta r)} \right), \]

\(\eta\) 是小正数,\(\text{avg}(\Delta r)\) 是最近几次下降量的滑动平均。
这样算法会自适应地更频繁选择当前残差大的块,类似“重点攻关”。


6. 收敛加速策略

除了自适应概率,还可结合以下技巧:

(1) 块内使用随机化行迭代
若块 \(A_i\) 较大,计算 \(A_i^\dagger\) 开销大,可以改为在块内做若干步随机化Kaczmarz行迭代,近似实现块投影。

(2) 过度松弛参数
更新公式引入松弛因子 \(\omega \in (0, 2)\)

\[x_{k+1} = x_k + \omega A_i^\dagger (b_i - A_i x_k). \]

通常 \(\omega \approx 1.5\) 可加速,但需在实验中调节。

(3) 动量加速
引入动量项(类似随机梯度下降的加速):

\[d_k = A_{i_k}^\dagger (b_{i_k} - A_{i_k} x_k), \]

\[ v_{k+1} = \beta v_k + d_k, \]

\[ x_{k+1} = x_k + \omega v_{k+1}. \]

参数 \(\beta\) 可取 0.9 左右。


7. 理论保证(简述)

随机化块Kaczmarz的收敛速度依赖于块延伸条件数(block extension of scaled condition number):

\[\kappa_{\text{block}}^2 = \|A\|_F^2 \cdot \max_i \sigma_{\min}^{-2}(A_i), \]

收敛速率与 \(\kappa_{\text{block}}^2\) 成反比。
自适应概率可降低有效条件数,从而提升速度。


8. 算法伪代码(自适应权重版本)

输入:分块矩阵 A_1,...,A_t,右端项 b_1,...,b_t,初始解 x0,迭代次数 K,初始权重 w_i=1
输出:近似解 x

x = x0
for k = 1 to K do
   计算概率 p_i = w_i / sum(w)
   依概率 p_i 选取块索引 i
   计算残差 r_i = b_i - A_i x
   更新方向 d = A_i^\dagger r_i   (若块大,可用若干步随机行迭代近似)
   x = x + ω * d
   记录 Δr = ||r_i||^2
   更新平均残差下降量 avg_Δr(滑动平均)
   更新 w_i = w_i * exp(η * Δr / avg_Δr)
end for

9. 数值示例说明

假设 \(A\) 是 1000×200 稀疏矩阵,分 20 块,每块 50 行。
若某块的条件数是其他块的 10 倍,等概率采样会使其拖慢收敛。
自适应权重后,算法会减少选取该块的频率,而更多选择“好”的块,使平均每步残差下降更大,从而加快整体收敛。


10. 实际应用场景

这种改进的随机化块Kaczmarz可用于:

  • 大规模CT图像重建(投影矩阵分块对应不同角度)
  • 分布式求解线性系统(每块在不同计算节点)
  • 在线学习中的随机坐标下降法(数据点分块)

通过结合概率分布的自适应调整动量加速,随机化块Kaczmarz在稀疏线性方程组中的收敛速度可以得到明显提升,同时保持计算每步的低成本。

随机化块Kaczmarz算法在稀疏线性方程组中的概率分布与收敛加速策略 我们先看算法背景。 随机化Kaczmarz算法是一种求解大规模线性方程组 \(A x = b\) 的迭代方法,尤其适用于超定或欠定稀疏矩阵。 当矩阵是分块结构时,采用 随机化块Kaczmarz 能显著加速收敛。今天介绍其 概率分布设计 与 收敛加速策略 。 1. 问题描述 设线性方程组 \[ A x = b, \] 其中 \(A \in \mathbb{R}^{m \times n}\),\(b \in \mathbb{R}^m\),且 \(A\) 是稀疏矩阵。 我们将矩阵的行分成 \(t\) 个块(子矩阵): \[ A = \begin{bmatrix} A_ 1 \\ A_ 2 \\ \vdots \\ A_ t \end{bmatrix}, \quad b = \begin{bmatrix} b_ 1 \\ b_ 2 \\ \vdots \\ b_ t \end{bmatrix}, \] 每个块 \(A_ i \in \mathbb{R}^{m_ i \times n}\),\(\sum_ {i=1}^t m_ i = m\)。 我们的目标是设计一种随机选取块迭代的规则,使得收敛比传统Kaczmarz更快。 2. 经典Kaczmarz与随机化Kaczmarz回顾 Kaczmarz迭代逐行更新: \[ x_ {k+1} = x_ k + \frac{b_ i - a_ i^T x_ k}{\|a_ i\|^2} a_ i, \] 其中 \(a_ i\) 是 \(A\) 的第 \(i\) 行。 随机化版本(Strohmer & Vershynin, 2009)按概率 \[ p_ i = \frac{\|a_ i\|^2}{\|A\|_ F^2} \] 选取行,其中 \(\|A\|_ F\) 是Frobenius范数,这样能保证指数收敛期望。 3. 分块Kaczmarz算法 若选取块 \(i\),则更新公式变为: \[ x_ {k+1} = x_ k + A_ i^\dagger (b_ i - A_ i x_ k), \] 其中 \(A_ i^\dagger\) 是 \(A_ i\) 的伪逆(若 \(A_ i\) 行满秩,则 \(A_ i^\dagger = A_ i^T (A_ i A_ i^T)^{-1}\))。 这相当于将当前残差在块 \(i\) 对应的行空间上做最小二乘投影。 4. 随机化块选择的概率设计 为了加速收敛,需要考虑 块行范数 与 条件数 两个因素。 方法1:依块Frobenius范数采样 定义 \[ p_ i = \frac{\|A_ i\| F^2}{\sum {j=1}^t \|A_ j\|_ F^2}. \] 这是直接推广,但未考虑不同块的“困难程度”。 方法2:依块条件数加权的概率 记 \(\sigma_ {\min}(A_ i)\) 为 \(A_ i\) 的最小奇异值,若行满秩,则收敛速度与 \(\sigma_ {\min}^2(A_ i)\) 有关。 定义 \[ p_ i \propto \|A_ i\| F^2 \cdot \frac{1}{\kappa_ i^2}, \] 其中 \(\kappa_ i = \frac{\sigma {\max}(A_ i)}{\sigma_ {\min}(A_ i)}\) 是 \(A_ i\) 的条件数。 这样更倾向于选择 条件数较小 的块,避免迭代在病态块上进展缓慢。 5. 自适应权重调整策略 我们可以在迭代过程中动态调整概率: 开始时所有块等概率。 记录每次选择块 \(i\) 后残差下降量 \(\Delta r_ i = \|b_ i - A_ i x_ k\|^2\)。 若某块残差下降显著,增大其概率;否则降低。 具体:设 \(w_ i^{(k)}\) 为块 \(i\) 在第 \(k\) 轮权重,归一化得概率 \[ p_ i^{(k)} = \frac{w_ i^{(k)}}{\sum_ j w_ j^{(k)}}. \] 权重更新: \[ w_ i^{(k+1)} = w_ i^{(k)} \cdot \exp\left( \eta \cdot \frac{\Delta r_ i}{\text{avg}(\Delta r)} \right), \] \(\eta\) 是小正数,\(\text{avg}(\Delta r)\) 是最近几次下降量的滑动平均。 这样算法会自适应地 更频繁选择当前残差大的块 ,类似“重点攻关”。 6. 收敛加速策略 除了自适应概率,还可结合以下技巧: (1) 块内使用随机化行迭代 若块 \(A_ i\) 较大,计算 \(A_ i^\dagger\) 开销大,可以改为在块内做若干步随机化Kaczmarz行迭代,近似实现块投影。 (2) 过度松弛参数 更新公式引入松弛因子 \(\omega \in (0, 2)\): \[ x_ {k+1} = x_ k + \omega A_ i^\dagger (b_ i - A_ i x_ k). \] 通常 \(\omega \approx 1.5\) 可加速,但需在实验中调节。 (3) 动量加速 引入动量项(类似随机梯度下降的加速): \[ d_ k = A_ {i_ k}^\dagger (b_ {i_ k} - A_ {i_ k} x_ k), \] \[ v_ {k+1} = \beta v_ k + d_ k, \] \[ x_ {k+1} = x_ k + \omega v_ {k+1}. \] 参数 \(\beta\) 可取 0.9 左右。 7. 理论保证(简述) 随机化块Kaczmarz的收敛速度依赖于 块延伸条件数 (block extension of scaled condition number): \[ \kappa_ {\text{block}}^2 = \|A\| F^2 \cdot \max_ i \sigma {\min}^{-2}(A_ i), \] 收敛速率与 \(\kappa_ {\text{block}}^2\) 成反比。 自适应概率可降低有效条件数,从而提升速度。 8. 算法伪代码(自适应权重版本) 9. 数值示例说明 假设 \(A\) 是 1000×200 稀疏矩阵,分 20 块,每块 50 行。 若某块的条件数是其他块的 10 倍,等概率采样会使其拖慢收敛。 自适应权重后,算法会减少选取该块的频率,而更多选择“好”的块,使平均每步残差下降更大,从而加快整体收敛。 10. 实际应用场景 这种改进的随机化块Kaczmarz可用于: 大规模CT图像重建(投影矩阵分块对应不同角度) 分布式求解线性系统(每块在不同计算节点) 在线学习中的随机坐标下降法(数据点分块) 通过结合 概率分布的自适应调整 与 动量加速 ,随机化块Kaczmarz在稀疏线性方程组中的收敛速度可以得到明显提升,同时保持计算每步的低成本。