这是Hooman Peiro Sajjad,Andrew Docherty,Yuriy Tyshetskiy于2019年发表的一篇论文,主要是对动态图随机游走序列提出了更新策略。
1.背景知识
节点的Representation Learning
把节点表示为低维的向量表达。
Random Walks
-
随机游走可以捕获图的结构信息,用于节点表征学习。
Eg: 𝑘阶随机游走,即给定序列前𝑘个节点后,选择出第𝑘+1个节点。
-
从起始节点到终止节点的概率值 - 可用来表示相似度。(正比于u节点与v节点embedding之后的点乘结果)
随机游走中的节点对
已知 K 个长度为 L 的游走序列:
把节点对的第一项即节点 l 称为 target,后一项称为 context,p 称为context window size。
Vertex pair corpus
所有游走序列产生的节点对集合。
2.相关研究
动态图
图的节点和边随着时间变化而增加或删除。
过去方法
基于静态图,当图发生变化时,再于新的snapshot上重新随机游走。- 低效
3.提出问题
论文提出了Unbiased Update Random Walks的方法,根据dynamic change更新游走序列,计算复杂度取决于其程度和比例。 - 高效
目标
给定 𝑡 时刻的游走序列,更新 𝑡+1 时刻的游走序列,使与单独从 𝒢(𝑡+1) 上得到的游走序列相同。(注意本文讨论的是无向无权图)
定义图的动态变化
- 变化的边集:分别代表 Delete 和 Add 的边
- 变化的节点集:分别代表 Delete 和 Add 的节点
定义受影响的节点和边
- Affected vertice
这里的 “V(边集)” 表示边的两个端点的集合。 - Affected walks
至少包含一个受影响节点的游走序列。
4.更新random walks的3种方法比较
如下图(a)是 t 时刻的图,(b)表示在 t+1 时刻增加了 (B,D)这条边和 D 这个节点。
-
Static
每次图变化后,在新图上重新产生所有游走序列。
-
Naive Update
为新增的节点产生新的游走序列加入原来的序列集合,这种方法会导致有概率偏差。比如加入了节点 D 后,节点 A 应能游走到 D 才对,但是Naive Update 没有对 A 的游走序列进行改变。
-
Unbiased Update
从受影响序列中第一个出现的affected vertex之后重新游走该序列。为了让大家更好地理解这个方法,这里贴上原文描述。
从伪代码可以看出,受影响的序列更新后,和未受影响的序列共同构成序列集合,再重新训练整个图。 -
与此相对的有一个Fast Update:从受影响序列的初始节点重新开始游走 。
Transition Probabilites Error
通过游走序列的节点转移概率误差图,可证明Unbaised Update和RegRW(Static方法)产生序列相似,而简单粗暴的Naive Update则误差很大,Fast稍微好一点,但是依然效果不太好。
时间复杂度分析
可以看出Unbaised Update下限是只增加了一个新节点,上限和Static方法相同,相对来说更高效。
5.实验部分
Skip-Gram Model
上文提到的转移概率如下。
-
目标节点和context共同出现的概率:
-
最小化损失函数:
实验设置
-
用了8个CPU和150GB内存。
-
代码和数据集:Github
-
对比算法:用于静态图的DeepWalk/node2vec;Naïve Update
数据集
由于这些数据集没有时间信息,因此是分多个时间片逐步加入边,构造动态图。比如:一开始选择40%的边构造初始图,然后每个时间片随机选择50条边加入,直至形成完整的图。由于加入边不一定保持整个图的连通性,因此在训练的时候只训练最大连通分量的节点。
Update Rate:每个时间片增加的边数
节点多分类任务
可以看出Unbaised Update可以达到和静态图更新接近的效果,而用时大大减少!
参数Update Rate的影响
当Update Rate越大时,受影响的序列比例就越大。
6.总结与思考
- 一种高效的增量式更新random walks的方法
接近新的snap shot重新游走得到的序列效果;计算时间缩短,适合在节点多的大图上使用。 - 论文中只讨论无向无权图的游走,如何利用边的方向或者权重?
- temporal random walks中是否可以结合affected vertex设计更好的游走策略?
- 以上文例子来看,如果 D 的 L 阶邻居们的游走序列都更新了,加上 D 自己的游走序列,那么就跟Static方法在最终图上游走是相同的效果,这样可能比Static更省时。那么在考虑这些L阶邻居的序列时,由于第L个节点游走回D的可能性较低,那么第L阶邻居就赋予比较小的权重?(给动态变化的部分赋予更大的权重)