求解PageRank 问题的Arnoldi 松弛两步分裂算法

2019-09-20 07:37顾传青付友花王金波
关键词:迭代法收敛性范数

顾传青,付友花, 王金波

(1. 上海大学 理学院, 上海200444;2. 保密通信重点实验室, 成都610041)

PageRank 算法是著名的超链分析算法[1], 是当今搜索引擎使用最重要的排序算法之一.PageRank 问题就是求解Google 矩阵首特征值1 所对应的特征向量. Google 矩阵的定义如下:

式中, α ∈(0,1)是阻尼因子, E = veT, e = (1,1,··· ,1)T∈Rn, v = e/n, P是一个列随机矩阵. PageRank 向量x 是Google 矩阵的主特征向量, 满足

为解决PageRank 问题, 最经典的算法是易于计算的幂法[1]. 但当阻尼因子α 接近1 时,幂法收敛的速度非常慢. 为了改进算法的收敛速度, Gleich 等[2]利用Richardson 迭代法提出了内外迭代法. Gu 等[3]将幂法和内外迭代法相结合,提出了两步分裂迭代(power-inner-outer,PIO)算法. 随后,Xie 等[4]在PIO 算法基础上提出了松弛两步分裂(relaxed PIO, RPIO)算法.用于PageRank 问题的Arnoldi 算法[5]是一种重启的Arnoldi 算法[6]. Wu 等[7]将幂法和重启的Arnoldi 算法相结合, 提出了深度重启的Arnoldi 算法. 本工作在文献[3]的基础上, 在原有的PIO 算法中加入一个新的松弛参数, 并且运用深度重启的Arnoldi 算法来加速算法的收敛性, 得到了一个Arnoldi 松弛两步分裂(Arnoldi-RPIO)算法. 与原有的内外迭代法[2]和PIO 算法[3]相比, 本工作给出的数值算例显示了新算法的有效性.

1 内外迭代法和深度重启的Arnoldi 算法

1.1 内外迭代法

根据式(1)和(2), 特征值问题可以转化为求线性系统

的解, 其中eTx = 1. 考虑到问题在阻尼因子α 越小时越容易求解PageRank, 线性系统(3)可以写成如下的等价方程:

并通过不动点迭代求解式(4), 即

式(5)可称为外迭代. 但是, 求解系数矩阵I -βP 的线性系统仍然比较困难. 文献[2]提出了使用Richardson 迭代法来计算xk+1, 将式(5)中的右端项记为f, 即

定义内线性系统

然后使用Richardson 内迭代:

外迭代的停止条件为

内迭代的停止条件为

1.2 PIO 算法

在内外迭代法的基础上, Gu 等[3]提出了PIO 算法来求解PageRank 问题. PIO 算法的迭代格式如下: 给定一个初始向量x(0), 计算

直到向量序列{xk}收敛, 其中0 <β <α <1.

1.3 深度重启的Arnoldi 算法

考虑如下的特征值问题:

式中, A ∈Cn×n, (λ,x)是矩阵A 的特征对. 给定一个‖v1‖2= 1 的初始向量, 由Arnoldi 过程生成一组Krylov 子空间

的一组正交基v1,v2,··· ,vm. 在实际求解中,可以用修正的Gram-Schmidt 算法来得到Krylov子空间[8]. 由Arnoldi 过程可以得到

式中, Vm= (v1,v2,··· ,vm)是Krylov 子空间的一组正交基, Hm= {hi,j}m×m∈Cm×m是一个m×m 的上Hessenberg 矩阵, em= (0,0,··· ,0,1)T,Hm∈C(m+1)×m是一个如下的上Hessenberg 矩阵:

深度重启的Arnoldi 算法的具体步骤如下.

步骤1 给定Krylov 子空间维数m, 所要求的特征对个数p ≤m, 控制精度tol 和单位初始向量v1.

步骤2 运行m 步关于A 和v1的Arnoldi 过程, 得到计算Hm的所有特征对i = 1,2,··· ,m. 将Hm的特征值按模数递减排序, 从中选出p 个最大的特征对, 转向步骤6.

步骤3 将vp+1作为初始值运行m-p 步Arnoldi 过程, 得到. 计算Hm的所有特征对(), i = 1,2,··· ,m. 将Hm的特征值按模数递减排序, 从中选出前p 个特征对.

步骤4 检验收敛性. 对于得到的最大的Ritz 值λ1和Ritz 向量y1计算其残量. 若满足计算精度, 则选取x1=Vmy1作为PageRank 向量的近似解, 算法停止, 否则继续.

步骤5 将选出的p 个特征向量yi, i=1,2,···, p, 正交化为2 模单位向量, 得到m×p 矩阵Wp= [w1,w2,··· ,wp]. 如果特征向量yi是复向量, 需要实部和虚部分开存取, 构造m×p阶矩阵.

步骤6 通过在Wp的底部增加一行0 形成(m+1)×p 的矩阵Wp= [Wp;0]. 然后令是(m +1) × (m +1) 阶单位矩阵Im+1的最后一列. 显然(m+1)×(p+1)的矩阵Wp+1是正交矩阵.

步骤7 使用旧的Vm+1和Hm形成新的Vm+1和Vm+1Wp+1. 然后令, 返回步骤3.

2 深度重启的Arnoldi-RPIO 算法

本工作提出利用深度重启的Arnoldi-RPIO 算法来求解PageRank 问题. 迭代格式如下:

Arnoldi-RPIO 算法在PIO 算法的基础上引入了一个新的参数γ, 并使用Arnoldi 算法进行深度重启来加速算法收敛.

Arnoldi-RPIO 算法的具体步骤如下.

步骤1 给定初始化向量v, 选取Krylov 子空间的维数m, 欲保留的特征向量数p, 外迭代的收敛精度τ, 内迭代的收敛精度η, 参数α, β, 控制内外迭代与Arnoldi 算法阶段的转换参数α1和α2, maxit, restart=0, 外迭代的误差r =1, 内迭代的误差d=1,d0=d.

步骤2 运行1.3 节算法2~3 次. 若是第1 次运行, 则运行步骤2~7, 否则运行步骤3~7.如果残差范数满足收敛精度, 则算法停止, 否则继续.

步骤3 将由深度重启的Arnoldi 算法得到的PageRank 向量的近似解x1作为内外迭代法的初始向量.

end if r <τ, 算法停止, 否则转向步骤2.

关于Arnoldi-RPIO 算法有如下几点说明: ①参数α1, α2, restart, maxit 是用来控制内外迭代法和深度重启的Arnoldi 算法的转换; ②定义rcurr为一次内迭代后的残差范数, rpre为一次内迭代前的残差范数, ratio = rcurr/rpre为内迭代前后相邻残差范数比; 同时定义ratio1为内迭代中当前步的残差范数和上一步的残差范数之比(这里给出ratio 和ratio1的定义是为了保证算法的运算效率); ③通过比较每一次进入内外迭代前后的残差范数比ratio = rcurr/rpre与α1的大小, 来决定是否执行restart=restart+1; 通过maxit 控制restart 的次数, 如果restart>maxit, 则中止内外迭代法阶段, 进入深度重启的Arnoldi 算法阶段, 否则继续运行内外迭代法.

在实际求解中, α1和α2的选择非常关键. 由于ratio1=d/d0, ratio=r/r0, 所以这两个参数很自然地小于α (幂法的收敛速率是α). 本工作中选择α1=α-0.1, α2=α-0.1. 事实上,如果令γ =1, 则Arnoldi-RPIO 算法就等价于文献[7]提出的Arnoldi 算法.

3 Arnoldi-RPIO 算法的收敛性分析

RPIO 算法和深度重启的Arnoldi 算法的收敛性分别在文献[4, 9-10]中被证明. 不妨假设A 是一个对角化矩阵, 并且x1和子空间Km的距离定义为

式中, Lm-1表示次数小于m-1 的多项式集, 并且p(λ1)=1, σ(A)表示A 的特征值集. 不失一般性, 假设A 的特征值降序排列:

引理1[9]假设A 是一个对角化矩阵, Arnoldi 算法的初始向量v1可以展开为v1=是特征基, 且‖xi‖2= 1, i = 1,2,··· ,n,, γi/= 0, 则如下的不等式成立:

式中, Pm是子空间Km(A,v1)上的正交投影,

将由深度重启的Arnoldi 算法得到的v1作为RPIO 算法的初始向量. RPIO 算法得到向量v*1=ωGkv1, 其中k ≥maxit,

ω 是正规化因子. 在Arnoldi-RPIO 算法的下一步循环中, v*1将被作为Arnoldi 过程的初始向量, 这样就可以得到一个新的Krylov 子空间:

下面的定理证明了本工作给出的新算法的收敛性.

因为

可以推出

假设πi是P 的一个特征值,可知是(I -βP)-1的一个特征值. 由

和λ1=1, 得到Gx1=x1,Gkx1=x1. 再令

对于i=2,3,··· ,n, 由于|λi|≤α, γ ≥1, 可以推出

从而得到如下两个关系式:

现在令p(λ)=q(λ)/q(1), 则p(1)=1, 从而得到

因此, 证明了

4 数值算例

本工作选择Stanford-Berkeley 矩阵作为测试矩阵, 给出数值算例来展示Arnoldi-RPIO算法的有效性, 并将其与内外迭代法和PIO 算法进行对比. 数值算例是在内存为4 GB, 处理器为2.53 GHz Intel(R)Core(TM)i3 M CPU 的电脑上用MATLAB(R2014a)程序进行的. 这里, Mat-Vec 表示矩阵向量乘积的次数, CPU 表示运算时间, 单位为s.

为保证实验的公平性, 阻尼因子α 的取值分别为0.990, 0.993, 0,995, 0.998, β =0.5, 内外终止条件均为η =10-2, τ =10-8. 在Arnoldi-RPIO 算法中, 参数α1=α-0.1, α2=α-0.1.为了描述Arnoldi-RPIO 算法的有效性, 定义

表1 列出了测试矩阵的特征, 包括矩阵的维数(n)、非零元个数(nn)和稠密度(den), 并定义表2 和图1 列出了3 种算法的数值结果.

表1 测试矩阵的特征Table 1 Characteristics of test matrix

表2 关于Stanford-Berkeley 矩阵3 种算法的数值结果Table 2 Numerical results of three algorithms for Stanford-Berkeley matrix

图1 关于Stanford-Berkeley 矩阵3 种算法的收敛性分析, τ =10-8Fig.1 Convergence analysis of three algorithms for Standford-Berkeley matrices, τ =10-8

图1 描述了阻尼因子α 取不同值时3 种算法的收敛轨迹. 算例中Arnoldi-RPIO 算法选取的参数为γ = 6,m = 8,p = 4, maxit=40. 观察表2 的数值结果发现, Arnoldi-RPIO 算法在Mat-Vec 和CPU 两个方面的表现都是最好的. 对于Stanford-Berkeley 矩阵, 数值结果显示: 当α = 0.998 时, Arnoldi-RPIO 算法耗时250.101 4 s 达到的收敛精度, PIO 算法需耗时575.583 5 s 才能达到; 并且阻尼因子α 取值越接近于1 时, 本工作给出的Arnoldi-RPIO 算法的计算效果就越好.

猜你喜欢
迭代法收敛性范数
求解大型广义绝对值方程的Picard-SS迭代法
迭代法求解一类函数方程的再研究
群体博弈的逼近定理及通有收敛性
向量范数与矩阵范数的相容性研究
求解复对称线性系统的CRI变型迭代法
END随机变量序列Sung型加权和的矩完全收敛性
φ-混合序列加权和的完全收敛性
基于加权核范数与范数的鲁棒主成分分析
多种迭代法适用范围的思考与新型迭代法
如何解决基不匹配问题:从原子范数到无网格压缩感知