基于随机化分块Lanczos双对角化算法在矩阵低秩逼近中的应用
1. 问题描述
给定一个大型、稠密或稀疏的 \(m \times n\) 矩阵 \(A\),我们希望计算其一个 秩为 \(k\) 的低秩逼近 \(A_k\),使得 \(A_k\) 近似等于 \(A\) 在某种范数(如谱范数或Frobenius范数)意义下的最优 \(k\) 秩近似(通常由截断奇异值分解SVD给出)。然而,当矩阵 \(A\) 非常大时,传统的确定性SVD算法计算代价昂贵,甚至无法存储整个矩阵。随机化分块Lanczos双对角化算法通过结合 随机投影 与 分块Lanczos双对角化过程,能够在保持较高精度的前提下,显著降低计算复杂度和存储需求,特别适用于大规模矩阵的低秩逼近问题。
2. 核心思想
- 随机投影降维:使用一个随机矩阵 \(\Omega\) 将原始高维矩阵投影到一个较低维的子空间中,获得一个规模更小的“草图矩阵”,它保留了原始矩阵的主要信息(例如主要奇异子空间)。
- 分块Lanczos双对角化:对草图矩阵应用分块Lanczos过程,将其转换为一个规模较小的双对角矩阵,该过程能够更有效地捕捉矩阵的奇异值结构,尤其在需要较高精度逼近时优于纯随机投影方法。
- 通过小规模双对角矩阵恢复近似SVD:对生成的双对角矩阵进行精确的SVD分解,然后通过投影回原空间得到原矩阵的近似奇异值、左奇异向量和右奇异向量。
3. 算法步骤详解
步骤 1:随机采样生成草图
选择一个目标秩 \(k\)(希望逼近的秩)和一个过采样参数 \(p\)(例如 \(p = 10\)),令 \(l = k + p\)。生成一个 \(n \times l\) 的随机高斯矩阵 \(\Omega\)。计算 采样矩阵 \(Y\):
\[Y = A \Omega \]
这个过程将 \(A\) 的列空间投影到一个 \(l\) 维随机子空间中。\(Y\) 的列张成的空间以高概率包含了 \(A\) 的前 \(k\) 个主要左奇异向量所在的子空间。
步骤 2:正交化采样矩阵
对 \(Y\) 进行 QR分解,得到一组标准正交基 \(Q\):
\[Y = Q R, \quad Q \in \mathbb{R}^{m \times l}, \quad Q^T Q = I_l \]
此时,\(Q\) 的列空间近似张成了 \(A\) 的前 \(k\) 个主要左奇异子空间。
步骤 3:形成小规模投影矩阵
将矩阵 \(A\) 投影到 \(Q\) 张成的子空间上,形成投影矩阵 \(B\):
\[B = Q^T A \quad \Rightarrow \quad B \in \mathbb{R}^{l \times n} \]
由于 \(l \ll \min(m, n)\),矩阵 \(B\) 的规模远小于 \(A\)。
步骤 4:对 \(B\) 应用分块Lanczos双对角化
这是一个关键步骤。传统的Lanczos双对角化过程一次处理一个向量,而分块版本一次处理一个数据块,能更好地利用现代计算机的层次化内存架构(如缓存和SIMD指令),并加速收敛。
我们首先将 \(B\) 转置,得到 \(B^T \in \mathbb{R}^{n \times l}\)。目标是对 \(B^T\) 执行分块Lanczos双对角化,生成一组左正交块 \(U\)、右正交块 \(V\) 和一个双对角矩阵 \(J\),使得:
\[B^T = U J V^T \]
其中 \(U\) 和 \(V\) 是列正交的,\(J\) 是上双对角矩阵。具体步骤如下:
- 初始化:令 \(U_1 = \text{orth}(B^T \Omega_2)\),其中 \(\Omega_2\) 是一个 \(l \times b\) 的随机矩阵(\(b\) 是分块大小)。
- 对于 \(j = 1, 2, \dots, q\)(其中 \(q\) 是迭代次数,通常 \(q \cdot b \approx l\)),进行以下迭代:
- 计算 \(W_j = B U_j\)(对于 \(B^T\) 的Lanczos过程,实际上是 \(W_j = B^T U_j\) 的转置,但为保持双对角化形式,我们按标准过程描述)。
- 进行正交化:\(W_j := W_j - U_{j-1} B_{j-1}^T\)(减去之前方向的分量),然后对 \(W_j\) 进行QR分解得到 \(U_{j+1} B_j\)。
- 更新双对角矩阵 \(J\) 的块 \(B_j\)。
这个过程会生成一个双对角矩阵 \(J\) 和正交矩阵 \(U, V\),满足 \(B = V J^T U^T\)。
步骤 5:计算小规模SVD
对双对角矩阵 \(J\) 进行精确的SVD分解:
\[J = \tilde{U} \Sigma \tilde{V}^T \]
其中 \(\Sigma\) 是 \(l \times l\) 的对角矩阵(奇异值),\(\tilde{U}\) 和 \(\tilde{V}\) 是正交矩阵。
步骤 6:恢复原矩阵的近似SVD
将小规模SVD的结果映射回原始空间:
- 近似左奇异向量:\(U_{\text{approx}} = Q \tilde{U}\)
- 近似奇异值:\(\Sigma_{\text{approx}} = \Sigma\)
- 近似右奇异向量:\(V_{\text{approx}} = \tilde{V}\)
则原矩阵 \(A\) 的秩 \(k\) 逼近为:
\[A_k = U_{\text{approx}}(:,1:k) \cdot \Sigma_{\text{approx}}(1:k,1:k) \cdot V_{\text{approx}}(:,1:k)^T \]
4. 算法优势与注意事项
- 计算效率:主要计算成本在于矩阵乘法 \(A \Omega\) 和 \(Q^T A\),以及小规模分块Lanczos过程。相比全SVD的 \(O(m n \min(m,n))\),复杂度降至约 \(O(m n l + l^2 n)\)。
- 精度:由于分块Lanczos过程能够更好地逼近极端奇异值,因此通常比纯随机投影(如随机化SVD)具有更高的精度,尤其是当奇异值衰减缓慢时。
- 过采样参数 \(p\):过采样确保了随机投影能够以高概率捕获所需的子空间,通常 \(p = 10\) 或 \(20\) 足够。
- 分块大小 \(b\):分块大小影响算法收敛速度和数值稳定性,通常选择 \(b = 32\) 或 \(64\) 以利用现代CPU的向量化能力。
- 重正交化:在分块Lanczos过程中,由于浮点误差,正交性可能会丢失,因此需要实施重正交化(如Modified Gram-Schmidt)以保证数值稳定性。
5. 总结
随机化分块Lanczos双对角化算法巧妙地结合了 随机降维 的效率和 分块Lanczos 的高精度特性,为大规模矩阵低秩逼近提供了一种高效且可靠的解决方案。它特别适用于那些维度极高、难以直接进行传统分解的矩阵,广泛应用于数据科学、机器学习、推荐系统和科学计算等领域。