3.1移位功率迭代和设置动态移位
计算\(\textbf{Q}=\textbf{AA}^{\mathrm{T}}\textbv{Q}\)在幂迭代中算法1与计算最大特征值和对应特征向量的幂方法相同\(\textbf{AA}^{\mathrm{T}}\)由于第二大特征值与最大特征值之比的减小,移位技巧可用于加速幂方法的收敛[17]. 这激发了在随机SVD算法的幂迭代中使用移位的想法。我们首先给出两个引理[17]用移位值导出功率迭代。 对于任何矩阵A类,\(\textbf{AA}^{\mathrm{T}}\)是对称半正定矩阵,因此其奇异值是其特征值,根据引理2.引理3说明了这一点\(\sigma_{i}(\textbf{AA}^{mathrm{T}})-\alpha\)是的特征值\(\textbf{AA}^{\mathrm{T}}\!-\!\alpha\textbf{I}\).和\(|\sigma_{i}(\textbf{AA}^{\mathrm{T}})\!-\!\阿尔法|\)是的奇异值\(\textbf{AA}^{\mathrm{T}}\!-\!\alpha\textbf{I}\)根据引理2.英寸算法1,衰减趋势最大\(l)处理矩阵的奇异值影响SVD结果的准确性。什么时候?\(\sigma_{i}(\textbf{AA}^{\mathrm{T}})-\alpha\gt 0\)对于任何\(i \leq l),它们是\(l)最大奇异值\(\textbf{AA}^{\mathrm{T}}-\alpha\textbf{I}\),它们明显表现出更快的衰变。以下命题说明了满足这些条件的时间。 提议2这表明,如果我们选择换班\(0\lt\alpha\!\leq\!\sigma_{l}(\textbf{A}\textbf{A}^{mathrm{T}})/2\),我们可以更改计算\(\textbf{Q}=\textbf{AA}^{\mathrm{T}}\textbv{Q}\)到\(\textbf{Q}=(\textbf{AA}^{\mathrm{T}}-\alpha\textbf{I})\textbf{Q}\)在幂迭代中,使用相同的近似支配子空间。我们称之为移位功率迭代。对于移位功率迭代的每一步,这使得问主子空间的基的近似\(范围(\textbf{A})\)比执行原始幂迭代步骤的范围更大,因为\(\textbf{AA}^{\mathrm{T}}-\alpha\textbf{I}\)比\(\textbf{AA}^{\mathrm{T}}\)因此,移位功率迭代可以提高具有相同功率参数的随机SVD算法的精度\(p\).然后,如何设置班次\(\字母\)剩下的问题是正确的。 考虑奇异值比率从\(\frac{\sigma{i}(\textbf{AA}^{\mathrm{T}})}{\simma{j}(\textbf{AA}^{mathrm}){\)到\(\frac{\sigma{i}(\textbf{AA}^{\mathrm{T}}-\alpha\textbf{i})}{\simma_{j},用于\(j)和\(\西格玛_{j}(\textbf{AA}^{\mathrm{T}})\ gt \西格玛_{i}(\textbf{AA}^{\mathrm{T})\)。很容易看到\(\frac{\sigma{i}(\textbf{AA}^{\mathrm{T}}-\alpha\textbf{i}{\mathrm{T}})}\)如果假设\(\字母\)在里面提议2持有。的较大值\(\字母\),比率越小\(\frac{\sigma{i}(\textbf{AA}^{\mathrm{T}}-\alpha\textbf{i})}{\simma_{j},反映了奇异值更快的衰减。因此,为了最大限度地提高移位功率迭代对提高精度的影响,我们应该选择移位\(\字母\)在满足要求的同时尽可能大\(\alpha\leq\sigma_{l}(\textbf{AA}^{mathrm{T}})/2\)注意,计算\(\sigma_{l}(\textbf{A}\textbf{A}^{mathrm{T})直接是非常困难的。我们的想法是使用\(\textbf{A}\textbf{A}^{\mathrm{T}}\textbf{Q}\)在幂迭代中逼近\(\sigma_{l}(\textbf{A}\textbf{A}^{mathrm{T})并设置班次\(\字母\).假设\(\textbf{Q}\in\mathbb{R}^{m\次l}\)是的幂迭代中的正交矩阵算法1.根据提议1,这意味着我们可以设置\(\alpha=\sigma_{l}(\textbf{A}\textbf{A}^{mathrm{T}}\textbf{Q})/2\)以保证\(\字母\)在里面提议2用于执行移位功率迭代。进行正交归一化以减小舍入误差并计算\(\sigma_{l}(\textbf{A}\textbf{A}^{mathrm{T}}\textbf{Q})\),我们使用经济SVD实现“orth(●)”。这与使用QR分解具有相似的计算量,并且得到的左奇异向量矩阵包含相同子空间的正交基。 到目前为止,我们可以计算\(\字母\)在幂迭代的第一步,然后我们执行\(\textbf{Q}\!=\!(\textbf{AA}^{\mathrm{T}}-\alpha\textbf{I})\textbf{Q})在以下迭代步骤中。注意计算的奇异值\((\textbf{AA}^{mathrm{T}}-\alpha\textbf{I})\textbv{Q}\)很方便。然后,根据提议1和2,我们可以用\(0\lt\alpha\leq\sigma_{l}(\textbf{AA}^{mathrm{T})/2\)其中说明了如何使用的奇异值\((\textbf{AA}^{mathrm{T}}\!-\!\alpha\textbf{I})\textbf{Q}\)到近似值\(\sigma_{i}(\textbf{A}\textbf{A}^{mathrm{T}})因此,在每个迭代步骤中,我们都可以获得shift和update的有效值\(\字母\)如果我们有更大的\(\字母\),以加快奇异值的衰减。 将移位幂迭代与动态更新方案相结合\(\字母\),我们推导了一种基于动态移位功率迭代的随机SVD算法算法2。在步骤5中,它检查\(\frac{\sigma{l}((\textbf{A}\textb5{A}^{mathrm{T}}\!-\alpha\textbf{I})\mathbf{Q})+\alpha}{2}\)大于\(\字母\).对于相同的功率参数设置\(p\),算法2计算时间与算法1(用SVD代替高瘦矩阵的QR),但产生的结果具有更好的准确性。对于矩阵问用计算算法2,我们导出了\(\|\textbf{Q}\textbf{Q}^{\tathrm{T}}\textbf{答}-\文本框{A}\|\),这反映了计算出的截断SVD接近最优值的程度。 算法2可以与更多技能协作,在处理稀疏矩阵的同时实现进一步的加速。首先,我们可以在步骤2、4和8中使用EVD计算身高和瘦矩阵的经济SVD或正交基。这求助于中的eigSVD算法[16],如中所述算法3。该算法与[16]但以正确的顺序输出奇异值。“eig(●)”计算EVD。“rot90”(S公司,2)”是旋转的函数S公司180°和“\(\mathrm{fliplr}(\cdot)\)“第4步是从左到右翻转数组或矩阵的函数。因此,奇异值按降序排列,而与之对应的奇异向量位于正确的位置。其次,对于\(\textbf{A}\in\mathbb{R}^{m\次n}\)具有\(m\gt n\),计算的SVD更有效\(\textbf{A}^{\mathrm{T}}\)具有算法2因此,对于具有\(m\geq n)和\(n \geq m)分别是。具有的矩阵的版本\(m\geq n)如所述算法4,如果我们替换A类具有\(\textbf{A}^{\mathrm{T}}\). 假设\(p\)执行幂迭代以达到一定的精度,并且\(C_{\mathrm{eig}}\)表示EVD触发器计数中的常数。的失败次数算法4是哪里\((2p\!+\!2)C_{mathrm{mul}}\textrm{nnz}(\textbf{A})l\)反映了\(2p\!+\!2\)times matrix–矩阵乘法A类,\(((p\!+\!1)\) \((2C{\mathrm{mul}}nl^{2}\!+!C{\mathrm{eig}}l^{3})\)反映在上执行eigSVD\(n次l次)矩阵\(p\!+\!1\)次,\(2C{\mathrm{mul}}ml^{2}\!+!C{\mathrm{eig}}l^{3}\)在矩阵上反映一次eigSVDB类,\(pC_{\mathrm{mul}}nl\)反映执行操作”\(-\alpha\textbf{Q}\)“用于\(p\)时间,以及\(C_{\mathrm{mul}}nlk\)反映矩阵-要生成的矩阵乘法V(V)从中我们可以看出算法4是\(O(pl\textrm{nnz}(\textbf{A})+pnl ^{2})\)对于\(m\次n\)矩阵A类具有\(m\geq n).的空间复杂性算法4是关于\(O((2m+n)l+\textrm{nnz}(\textbf{A})),因为峰值内存使用发生在步骤8。因为\(C_{\mathrm{qr}}\)和\(C_{\mathrm{svd}}\)比\(C_{\mathrm{mul}}\),我们可以清楚地看到\(\mathrm{FC}_{4} \lt\mathrm公司{FC}_{1}\)什么时候\(m\geq n)和\(n \gg l),这反映了算法4. 3.2基于PVE界限的精度控制
理论研究表明,具有幂迭代的随机奇异值分解产生了秩-\(k\)近似接近最优。在谱范数(或Frobenius范数)下,计算结果(\(\hat{\textbf{U}}\),\(\hat{\bf{\Sigma}}\),以及\(\hat{\textbf{V}}\))以高概率满足以下乘法保证哪里\(在(0,1)中为ε)是一个畸变参数。年提出的另一项担保[29]在机器学习问题中更有意义的是哪里\(\textbf{u}_{i} \)是\(i)的第个左奇异向量A类,以及\(\hat{\textbf{u}}_{i}\)是计算的\(i)th左奇异向量。这称为奇异向量的PVE界。在[29],证明了\((1+\epsilon)\)错误绑定于方程式(17)可能无法保证计算出的奇异向量的准确性。相反,每矢量保证方程式(18)要求每个计算出的奇异向量捕获与对应的精确奇异向量几乎相同的方差,从而保证主成分在主成分分析中的准确性。请注意,较小的\(\ε\)在里面方程(17)和(18)即,随机SVD算法中需要更多的幂迭代才能满足相应的精度保证。 在现有的随机SVD研究中,功率参数\(p\)(或传递参数)假定在前面已知。为了达到一定的准确性,可以进行多次检查,以找到合适且不太大的\(p\)。这会带来大量计算成本。因此,如何自适应有效地确定应该执行多少次幂迭代以确保计算出的奇异值分解具有一定的准确性是一个值得关注的问题。
有不同的标准来评估SVD的准确性,例如方程式(8)以及从PVE结合中导出的。下面我们发现,如果与PVE准则协作,我们可以开发出一种具有精度控制的高效随机SVD算法。PVE绑定方程式(18)可以近似表示为哪里\({\sigma}_{i}(\textbf{A}))表示计算的\(i)th奇异值和上标\((j)\)表示计算值\(p=j)“tol”代表误差容限。这个公式(19)是精度控制的近似PVE标准,“tol”应该由用户指定。适当设置“tol”通常可以确保PVE结合方程式(18)具有\(\ε\)与我们的实验所示的“tol”相当。相反,\(p\)无法深入了解错误,不同情况下差异很大。中的近似标准方程式(19)基于估计的误差\(\hat{\sigma_{i}}^{(j-1)}(\textbf{A})^{2}\)通过考虑\({\sigma_{i}}^{(j)}(\textbf{A})^{2}\)作为准确的结果。此技巧是控制截断EVD计算精度的传统方法[17]并已用于其他具有迭代步骤的数值方法[20]. 请注意,根据方程式(8)或(17)这会导致实现上的困难,因为它需要对大型矩阵进行昂贵的计算。 上述PVE准则的思想导出了一种具有精度控制的随机SVD算法。简单的实现移动了矩阵的生成和SVD\(\textbf{B}=\textbf{Q}^{\mathrm{T}}\textbf-{A}\)然后对终止准则进行检查。下面我们开发了一种更有效的方法来实现PVE准则的精度控制。
根据提案3,\(\sqrt{\sigma_{i}(\textbf{AA}^{mathrm{T}}\textbf{问}-\alpha\textbf{Q})+\alpha}\)更接近\(\sigma_{i}(\textbf{A})\)比\(\sigma_{i}(\textbf{Q}^{\mathrm{T}}\textbf{A})这是用少一步的幂迭代计算出的奇异值。因此,\(\sigma_{i}(\textbf{AA}^{mathrm{T}}\textbf{问}-\alpha\textbf{Q})+\alpha\)可以被视为\(hat{\sigma\{i}}(\textbf{A})^{2}\),因为前者在算法2.将其替换为方程式(19)我们可以导出dashSVD算法,其版本适用于\(m\geq n)描述为算法5这里,精度控制的第5步花费的时间可以忽略不计,\(p_{max}\)是表示幂迭代次数上限的参数(即参数\(p\)),以及带有“\(\素数\)“是最后一个迭代步骤中的数量。算法4也是dashSVD算法的一个版本;它只是不包括精度控制。最后一小节末尾的计算复杂性分析也适用于dashSVD算法(算法5).