1. 引言
Google首次提出PageRank模型来决定一个代表网页的有向图的重要节点,即网页排序问题[1]。给定一个有向图的随机行走,修正后的PageRank模型建立一个存在唯一稳定分布的马尔科夫链。由于PageRank模型的广泛成功,再根据如今实际应用中高维数据的需要,Gleich等[2]提出了高阶PageRank问题,它是一阶问题的推广。与此同时他们也发现了高阶PageRank的存储障碍[2],之后,他们根据秩1对称近似估计,希望利用这种估计的存储量小的优势,进一步提出多重线性PageRank模型。
Gleich等[2]基于秩1近似估计技术提出多重线性PageRank问题:令
是一个
阶随机张量,概率
,
是一个随机向量,则多重线性PageRank问题定义如下:
, (1)
其中,
是所求的随机向量(被称为多重线性PageRank向量),并且
.
近年来,随着对多重线性PageRank问题研究的不断深入,诸多学者纷纷涌现出创新性的求解方法。这些方法旨在更高效地处理复杂网络中的多重线性关系、以更短的计算时间和更少的迭代次数求出多重线性PageRank值。例如,Bucci和Poloni [3]提出了一种计算多重线性PageRank的延拓方法:预测校正延拓算法。Meini和Poloni [4]利用二次向量方程理论,提出了基于perron的多重线性PageRank算法。Cipolla等人[5]通过采用重新启动形式的简化拓扑–算法,引入了不动点多重线性PageRank计算的外推方法。Boubekraoui等人[6]提出了一种利用向量Aitken外推技术计算多重线性PageRank向量的新方法。Lai等[7]将Anderson加速技术集成到现有的松弛不动点迭代中,用于计算多重线性PageRank问题。Zhou等[8]基于[1]中的不动点迭代和内外迭代,提出了一种两步迭代法(FPIO)来计算多重线性PageRank问题。然后考虑多步不动点迭代,并将其作为内外迭代的前提条件,给出了一种新方法:MFPIO算法,该方法可以看作是FPIO方法的扩展。此外,将最小多项式外推(MPE)作为不动点迭代的加速技术以加快多重线性PageRank向量的计算速度,从而提出了一种新方法:FPMPE算法。针对多重线性PageRank问题,结合松弛技术,提出了新的张量分裂算法。Bentbib等人[9]提出了一些向量外推方法,如最小多项式外推(MPE)和降秩外推(RRE)可以用来加速定点多重线性PageRank的计算。
本文的主要贡献:1) 提出了采用随机算法求解多重线性PageRank问题;2) 给出数值实验说明随机算法求解多重线性PageRank问题的有效性。
2. 预备知识
首先介绍本文用到的符号和基本知识。令
表示欧氏范数,矩阵
的F范数为
,
表示矩阵
的广义逆,
,
为矩阵
的最小非零奇异值,
。令
,当向量
满足
且
时,称
为随机向量。
是一个
阶
维张量,
,
,
。
对于多重线性PageRank问题(1.1),与它等价的另一个形式为:
, (2)
其中
为Kronecker积,
为(1.1)中张量
的模1展开。令
为一个三阶
维随机张量,即
,其模1展开如下:
给定一个向量
,
,
的计算结果为一个向量,即
,该向量具体的项为:
为矩阵,该矩阵定义如下;
3. 收敛性定理
定义3:[10]若对于每个
且
,存在常数
,(
),使得以下式子成立:
则称函数
满足局部切向锥条件。
引理3:如果函数
满足局部切向锥条件,对于每个
以及
,有以下式子成立:
定理3:对于非线性问题
,函数
的定义域
是有界闭集,并且有
使得
。若函数
的偏导函数连续且对于
,
均为列满秩的行下有界矩阵,对于每个
,函数
满足局部切向锥条件,
,(
),则NRK算法依期望线性收敛
4. 提出的算法
通过深入钻研求解大规模线性问题的Kaczmarz算法及其随机版本,王等[10]将Kaczmarz算法及其随机化版本的迭代思路以及随机选择概率引入到大规模非线性问题的求解中,根据所选择的随机选择投影行的概率方式的不同,提出的三种非线性Kaczmarz算法,分别是非线性Kaczmarz算法(NK)、非线性随机Kaczmarz算法(NRK)、非线性均匀随机Kaczmarz算法(NURK)。本文利用这三种非线性Kaczmarz算法求解多重线性PageRank问题,并通过数值实验验证求解的有效性。
令
,且
为非零向量,定义投影算子如下:
易证
是随机向量。
对于多重线性PageRank问题
,令
,下面给出求解多重线性PageRank问题的三种算法框架(算法1~3):
算法1. 非线性Kaczmarz (NK)算法
1:给定
,初始值
,停机误差
,最大迭代步数
,
,令
2:while
&
3:取
4:梯度计算
5:迭代
6:
7:计算残差
8:end while 9:输出
|
算法2. 非线性随机Kaczmarz (NRK)算法
1:给定
,初始值
,停机误差
,最大迭代步数
,
,令
2:while
&
3:依概率
选择行指标
4:梯度计算
5:迭代
6:
7:计算残差
8:end while 9:输出
|
算法3. 非线性均匀随机Kaczmarz (NURK)算法
1:给定
,初始值
,停机误差
,最大迭代步数
,
,令
2:while
&
3:依概率
选择行指标
4:梯度计算
5:迭代
6:
7:计算残差
8:end while 9:输出
|
记
,
为在点
的偏导数矩阵。
是偏导数矩阵
的第
行。
5. 数值实验
基于多重线性PageRank问题,我们将通过数值实验来验证所提出算法的有效性。主要从迭代步数(IT),以秒为单位的迭代时间(CPU),误差(err)这三个方面来检验所提算法的效率。其中,误差err定义如下
,
停机误差为
,最大迭代步数设置为30,000,选取参数
为
,初始值为
,
为张量的维数。实验是在一台配备1.80 GHz 4核Intel (R) Core (TM) i5-8250U CPU以及8 GB 2400 MHz DDR3内存的计算机上,使用MATLAB (版本R2018a)进行的,并且我们还使用了MATLAB的Tensor Toolbox工具箱。
对于式多重线性PageRank问题(1.1)中的随机张量
,我们通过以下几种方式获取。
例1:运用MATLAB中的rand函数,生成若干个3阶
维随机张量
。在本例中,我们给出了当
两种情况,数值实验结果如下:
小结:从表1及图1可以看出,当维数
或
,
时,所用的三种算法能够有效求解重线性PageRank问题。
Table 1. Experimental results of Example 1
表1. 例1实验结果
n |
Method |
CPU |
IT |
err |
200 |
NK |
12.6939 |
560 |
8.82e−11 |
NRK |
11.2142 |
500 |
7.41e−11 |
NURK |
11.8904 |
517 |
7.87e−11 |
400 |
NK |
179.3317 |
1030 |
7.62e−11 |
NRK |
158.3353 |
909 |
4.34e−11 |
NURK |
143.4701 |
821 |
9.95e−11 |
Figure 1. The relationship between CPU and err when n = 200 (left) and n = 400 (right)
图1. n = 200 (左)及n = 400 (右)时CPU与err的关系
例2:设
表示张量零元素密度(
或
时,
分别是正张量或零张量),运用MATLAB中的randsample函数生成具有不同密度的稀疏张量
。本例中取
,
或
,实验结果如下:
小结:从表2及图2可以看出,当维数
,
或
,
时,所用的三种算法能够有效求解重线性PageRank问题。
Table 2. Experimental results of Example 2
表2. 例2实验结果
n |
t |
Method |
CPU |
IT |
err |
300 |
0.3 |
NK |
66.3524 |
856 |
9.50e−11 |
NRK |
60.0733 |
775 |
4.99e−11 |
NURK |
64.1696 |
829 |
9.05e−11 |
0.5 |
NK |
56.0994 |
724 |
5.11e−11 |
NRK |
55.7386 |
722 |
6.82e−11 |
NURK |
62.3506 |
805 |
7.25e−11 |
Figure 2. The relationship between CPU and err when t = 0.3 (left) and t = 0.5 (right)
图2. t = 0.3 (左)及t = 0.5 (右)时CPU与err的关系
例3:[6]令
表示具有节点集
的有向图,其中
和
分别表示悬挂节点和两两连通节点的集合,
表示子集
中的节点数,即
,那么我们可以构造非负张量𝒜:
,
其中
从
之间随机选取,规范化
得到张量
。
在本例中,我们给出了当
,
以及当
,
的情况,数值实验结果如下表。
小结:从表3及图3可以看出,当
,
或
,
,
时,所用的三种算法能够有效求解重线性PageRank问题。
Table 3. Experimental results of Example 3
表3. 例3实验结果
n |
|
Method |
CPU |
IT |
err |
200 |
150 |
NK |
40.4712 |
1744 |
9.79e−11 |
NRK |
40.1985 |
1750 |
6.10e−11 |
NURK |
42.2552 |
1818 |
9.35e−11 |
400 |
300 |
NK |
565.8186 |
3253 |
9.86e−11 |
NRK |
611.5724 |
3393 |
6.44e−11 |
NURK |
560.7826 |
3313 |
9.60e−11 |
Figure 3. The relationship between CPU and err when n = 200 (left) and n = 400 (right)
图3. n = 200 (左)及n = 400 (右)时CPU与err的关系
例4:[11]选用真实数据集Edinburgh,阶数
,维数
,该张量中非零元素个数为4292。对于一个矩阵
以及向量
,
定义如下:
.
我们通过对真实数据集的整理以获得三阶随机张量
的模1展开矩阵:
.
取
,通过验证,我们发现对于真实数据集,非线性随机Kaczmarz算法也能有效求解,如图4。因此,无论是对于虚拟数据集还是真实数据集,非线性随机Kaczmarz算法可有效求解重线性PageRank问题。
Figure 4. Edinburgh
图4. Edinburgh
6. 结语
数值实验表明,用非线性Kaczmarz方法、非线性随机Kaczmarz方法以及非线性均匀随机Kaczmarz方法求解重线性PageRank问题,整体上非线性随机Kaczmarz方法的效果要好一些,达到停止准则时所需的时间较少。实验结果证实了利用随机算法求解算多重线性PageRank问题的有效性。