【斯坦福CS224W图机器学习】 07 节点嵌入的随机游走Ranndom Walk方法

07 节点嵌入的随机游走Ranndom Walk方法

注意Notation

向量 Z u Z_u Zu:

  • 节点的嵌入(我们的目标是找到)。

概率 P ( v ∣ Z u ) P(v|Z_u) P(vZu):我们的模型基于 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=(VE)

  • 我们的目标是学习一个映射 f : u → R d : f ( u ) = Z u f:u \rightarrow \mathbb{R}^d:f(u)=Z_u f:uRd: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} ZiL

    ​ 对于所有的 i i i,更新梯度方向: Z i ← Z i − η ∂ L ∂ Z i Z_i\leftarrow Z_i-\eta \frac{\partial L}{\partial Z_i} ZiZiηZiL,这里 η \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年调查)

随机行走方法通常更有效

一般情况下:必须选择与实际应用的问题匹配的节点相似度的定义!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值