【Graph Embedding】Node2Vec

Node2Vec原理

node2vec 跟deepwalk类似,同样是通过随机游走产生序列,再将序列通过skip gram得到节点的embedding。
但与deepwalk不同的是,node2vec是有偏的随机游走。node2vec通过调整随机游走权重的方法使graph embedding的结果在网络的同质性(homophily)和结构性(structural equivalence)中进行权衡。


【Graph Embedding】Node2Vec_第1张图片

如上图所示,既可以认为u跟s1,s2,s3,s4它们是相似的,它们是网络中直接的邻居,这时称 homophily;也可以认为u应该跟s6更相似,这种称为结构相似,structural equivalence。

跳转概率

在node2vec算法中,是怎样控制BFS和DFS的倾向性的呢?主要是通过节点间的跳转概率。下图显示了node2vec算法从节点t跳转到节点v后,下一步从节点v跳转到周围各点的跳转概率。


【Graph Embedding】Node2Vec_第2张图片

跳转概率为:



其中wvx是边vx的权重,αpq的定义如下:
【Graph Embedding】Node2Vec_第3张图片

其中,dtx指的是节点t到节点x的距离,超参数p和q共同控制着随机游走的倾向性。参数p被称为返回参数(return parameter),p越小,随机游走回节点t的可能性越大,node2vec就更注重表达网络的同质性,参数q被称为进出参数(in-out parameter),q越小,则随机游走到远方节点的可能性越大,node2vec更注重表达网络的结构性,反之,当前节点更可能在附近节点游走。

别名采样

得到跳转概率后,node2vec不再通过概率随机采样,而是通过Alias算法进行顶点采样。具体算法描述见https://blog.csdn.net/haolexiao/article/details/65157026。

由于采样时需要考虑前面2步访问过的顶点,所以当访问序列中只有1个顶点时,直接使用当前顶点和邻居顶点之间的边权作为采样依据。 当序列多余2个顶点时,使用有偏采样。

目标函数

node2vec的优化目标是在给定每个顶点的条件下,令其近邻顶点出现的概率最大。



其中,f就是把节点u映射为embedding向量的映射函数,N(u)是通过采样策略s采样出的顶点u的近邻节点集合,相当于词向量训练中的上下文。
为了使目标函数可解,文章又提出了两个假设。

  1. 条件独立性假设
    假设给定顶点下,其近邻节点出现的概率与近邻集合中其他的邻点无关。


  2. 特征空间对称性假设
    一个顶点作为源顶点和近邻顶点共享一套embedding向量。


基于以上两个假设条件,最终的目标函数表示为



由于归一化因子zu计算代价较高,采用了负采样技术进行优化。

你可能感兴趣的:(【Graph Embedding】Node2Vec)