07 节点嵌入的随机游走Ranndom Walk方法
注意Notation
向量 Z u Z_u Zu:
- 节点的嵌入(我们的目标是找到)。
概率 P ( v ∣ Z u ) P(v|Z_u) P(v∣Zu):我们的模型基于 Z u Z_u Zu的预测. (与给定节点u的相似程度?)
- 从节点 u u u开始的随机漫步中访问节点 v v v的(预测)概率。
用于产生预测概率的非线性函数:
- Softmax函数:
- Sigmoid函数:
Random Walk随机游走
给定一个图和一个起点,我们随机选择它的一个邻居,并向这个邻居移动;然后我们随机选择这个点的一个邻居,并移动到它,等等。以这种方式访问的点的(随机)序列是图上的随机行走
Random-Walk Embedding
Z u T Z v ≈ Z_u^TZ_v\approx ZuTZv≈ u和v在图上随机游走时共同出现的概率
1.使用随机游走策略 R R R,从节点 u u u开始,估计访问节点 v v v随机漫步的概率
2.优化嵌入以编码这些随机游走统计数据:
嵌入空间中的相似性(这里:点积=cos( θ \theta θ))编码随机游走的“相似性”
∝ \propto ∝表示正比于
为什么选择随机游走的策略?
可表达性:节点相似性的灵活随机定义,包括局部和高阶邻域信息
。
想法:如果从节点 u u u开始随机游走访问 v v v具有高的概率, u u u和 v v v相似(高阶多跳信息)
效率:训练时不需要考虑所有节点对;只需要考虑随机漫步中的节点对
。
Unsupervised Feature Learning – 无监督特征学习
直观上:在保持相似性的多维空间中找到节点的嵌入
想法:学习节点嵌入,使网络中邻近的节点靠得很近
给定一个节点 u u u,我们如何定义附近的节点?
N R ( u ) N_R(u) NR(u)是通过某种随机行走策略 R R R获得的 u u u的"邻域"
Feature Learning as Optimization – 优化问题
-
给定图 G = ( V , E ) G=(V,E) G=(V,E)
-
我们的目标是学习一个映射 f : u → R d : f ( u ) = Z u f:u \rightarrow \mathbb{R}^d:f(u)=Z_u f:u→Rd:f(u)=Zu.
-
对数似然log-likehood目标函数:找到使下式最大的函数 f f f。
N R ( u ) N_R(u) NR(u)是通过某种随机行走策略 R R R获得的 u u u的"邻域"
- 给定节点 u u u,我们希望学习预测其随机行走邻域 N R ( u ) N_R(u) NR(u)中节点的特征表示。
如何求解呢?
Random Walk Optimization
1.使用某种随机漫步策略 R R R,从图中的每个节点 u u u开始进行短的固定长度随机漫步
2.对于每个节点 u u u 收集其邻域节点 N R ( u ) N_R(u) NR(u) , N R ( u ) N_R(u) NR(u)它是从 u u u开始随机漫步访问的节点的多点集合。 N R ( u ) N_R(u) NR(u)可以有重复的元素,因为节点可以在随机漫步中多次访问。
3.根据以下条件优化嵌入:给定节点 u u u,预测其邻居 N R ( u ) N_R(u) NR(u).
等价于:
直观上:优化嵌入 Z u Z_u Zu以最大化随机行走共同出现的可能性
为了求解上面的问题,概率 P P P及其定义方式需要用到上文中讲到的 s o f t m a x softmax softmax函数
把他们放在一块:
优化随机行走嵌入 = 找到嵌入 Z u Z_u Zu该嵌入能使 L L L最小化。
如何在实践中做到这一点呢?问题是这是非常耗时expensive!!!(But doing this naively is too expensive!)
来自softmax的归一化项是罪魁祸首…我们能近似它吗?
解决方案:负采样Negative sampling
负采样Negative Sampling
想法:不归一化所有节点,只是针对k哥随机“负样本” n i n_i ni归一化。
如何选择负样本呢?
答案:我们选择k个负样本节点的概率和它的度成正比!(Sample / negative nodes each with prob.
proportional to its degree)
选择k个负样本节点的两个注意事项:
1.k值越大给出更可靠的估计
2.k值越大对应于对负面事件的较高bias
实践中,通常k取5-10
随机梯度下降Stochastic Gradient Descent
在我们得到了目标函数之后,如何对其进行优化(最小化)?
梯度下降Gradient Descent是一种方法
-
初始化 Z i Z_i Zi用某个随机值下
-
迭代下面的步骤直到收敛:
对于所有的 i i i,计算梯度 ∂ L ∂ Z i \frac{\partial L}{\partial Z_i} ∂Zi∂L
对于所有的 i i i,更新梯度方向: Z i ← Z i − η ∂ L ∂ Z i Z_i\leftarrow Z_i-\eta \frac{\partial L}{\partial Z_i} Zi←Zi−η∂Zi∂L,这里 η \eta η是学习率。
随机梯度下降Stochastic Gradient Descent
随机游走总结Summary
1.从图上的每个节点开始进行短的固定长度随机漫步
2.对于每个节点 u u u 收集其邻域节点 N R ( u ) N_R(u) NR(u) , N R ( u ) N_R(u) NR(u)它是从 u u u开始随机漫步访问的节点的多点集合。
3.使用随机梯度下降优化嵌入:
我们可以使用负采样来有效地近似这一点!(计算效率更高)
到目前为止,我们已经描述了如何在给定随机游走策略 R R R的情况下优化嵌入。现在的问题是,我们应该怎样做这个随机游走?即我们应该使用什么策略 R R R来运行这些随机漫步?
- 最简单的想法:从每个节点开始运行固定长度、无偏的随机漫步(例如2013年Perozzi 等提出的DeepWalk)
- 但存在问题,对于相似性的issue可能存在局限性
所以问题是:我们可以使用更加随机的、更加丰富的、可以随机游走更多富有表现力的方法,以便我们可以更好的优化嵌入吗?答案就是我们接下来讲的方法node2vec
node2vec
node2vec概述
目标:将具有相似网络邻域的节点嵌入特征空间。
我们将这个目标设定为最大似然优化问题,独立于下游预测任务
Key observation:我们有一个灵活的节点 u u u网络邻域 N R ( u ) N_R(u) NR(u)概念,这能带丰富的节点嵌入
拓展:开发了有偏的2阶随机游走策略 R R R去生成节点 u u u的邻域节点序列 N R ( u ) N_R(u) NR(u). 因此深度漫游DeepWalk和node2vec之间的唯一区别就是邻域节点集的定义以及如何定义随机游走。
node2vec:有偏见的游走
有偏见值得是不再随机,而是有方向性的选择邻域节点。
idea:使用灵活的、有偏差的随机漫步,可以在网络的**局部(local)和全局(global)**视图之间进行权衡Grover and Leskovec, 2016.
-
局部视图:如果采用广度优先BFS的策略,我们得到的邻域节点将会尽可能的集中在某个节点附近。
-
全局视图:如果采用深度优先DFS的策略,我们得到的邻域节点将会尽可能的延申到整个图或者网络。
我们有两种经典的策略去定义被给定节点 u u u的邻域节点集合 N R ( u ) N_R(u) NR(u),即BFS和DFS.
其中BFS提高局部视图,DFS提供全局视图。宏观与微观。
BFS和DFS补充:
有偏的定步长随机游走策略 R R R去生成节点 u u u的邻域节点序列 N R ( u ) N_R(u) NR(u).
两个超参数:
返回参数p
:返回到上一个节点,回退至上一个节点的可能性
输入输出参数q
:向外移动(DFS)与向内移动(BFS),直觉上,
q
q
q是BFS与DFS的“比率”
有偏的随机游走 Biased Random Walk
有偏的2阶随机游走探索网络的邻域:
-
2阶游走刚刚穿过边 ( s 1 , w ) (s_1,w) (s1,w),现在在节点 w w w.
-
直观上, w w w的邻域节点可以是以下三种情况:
①回退到原来的节点 s 1 s_1 s1
②跳到距离 s 1 s_1 s1一样的节点 s 2 s_2 s2(处于同一水平)
③跳到距离 s 1 s_1 s1更远的节点 s 3 s_3 s3
idea:记得步行从哪里来
游走者现在在节点 w w w,下一步他会去哪?
1 / p 1/p 1/p, 1 / q 1/q 1/q是非标准化概率
p p p是返回的参数, q q q是走开的参数(walk away)
node2vec 算法
1)计算随机游走概率
2)模拟长度为 l l l的 r r r个随机游走,从每个节点开始。
3)利用随机梯度下降优化目标
线性时间复杂性
所有3个步骤都是可单独并行的
其他的随机游走算法
Different kinds of biased random walks:
Based on node attributes (Dong et al., 2017).
Based on learned weights (Abu-El-Haija et al., 2017)
Alternative optimization schemes:
Directly optimize based on 1-hop and 2-hop random walk probabilities (as in LINE from Tang et al. 2015).
Network preprocessing techniques:
Run random walks on modified versions of the original network (e.g., Ribeiro et al. 2017’s struct2vec, Chen et al. 2016’s HARP)
总结
核心思想:嵌入节点,使嵌入空间的距离反映原始网络中节点相似性。
节点相似性的不同概念:
朴素:如果连接了2个节点,则相似
邻域重叠(如第2节所述)
随机随机方法(今天所讲述的)
那么我应该用什么方法呢?
没有一种方法在所有情况下都能获胜。
例如,node2vec在节点分类上表现更好,而替代方法在链接预测上表现更好(Goyal和Ferrara,2017年调查)
随机行走方法通常更有效
一般情况下:必须选择与实际应用的问题匹配的节点相似度的定义!