图神经网络之Node2Vec详解

目录

  • 背景
    • 传统算法存在的问题
    • 算法背景
    • 动机
  • 算法
    • 随机序列的生成
    • Node2Vec算法
      • 算法的具体流程:
  • 总结
  • 相关资料

背景

传统算法存在的问题

  1. 一些方法中所提出的特征需要依赖人手工定义,这需要特定领域内专业人士来完成,而且依靠人手工定义特征的有效性无法保证。
  2. 利用一些非监督学习中的降维方法计算效率低,准确度也不够,而且还不能反应出网络的结构特征。

算法背景

  1. Node2Vec继承于随机游走模型DeepWalk算法模型,也是属于图神经网络种随机游走模型一类。
  2. 作者提出网络结构中存在以下两种现象:
    1)同质性:社区关系结构,即同一社区节点表示相似。其中,社区指节点内部结构信息远大于节点外部结构信息的多个节点组成的网络结构,如图中S1、S2、S3、S4、S5、u组成一个社区。
    2)结构相似性:拥有类似结构特征的节点表示相似。如下图中u和S6两个节点存在结构相似性。
    图神经网络之Node2Vec详解_第1张图片

动机

设计一个既能保持节点邻居信息而且又容易训练的模型。

算法

随机序列的生成

  1. 为了使得损失函数更加方便计算,引入skip-gram模型的两个假设:
    ①条件独立:即采样的每个邻居都是相互独立的;
    ②特征空间的对称性:两个节点之间的连边表示两者互相之间的影响是等价的。
  2. 节点转移概率计算:如图所示,作者定义了一个概率分布,对于一个随机游走,如果已经采样了,也就是说现在停留在节点v上,且u的上一序列节点为t;
    图神经网络之Node2Vec详解_第2张图片
  3. 那么下一个要采样的节点的转移概率计算方式为:
    图神经网络之Node2Vec详解_第3张图片
  4. 其中,参数p、q分别代表了不同含义:
    ① 返回概率p:如果 p>max(q,1) ,那么采样会尽量不往回走,对应上图的情况,就是下一个节点不太可能是上一个访问的节点t。如果 p>max(q,1),那么采样会更倾向于返回上一个节点,这样就会一直在起始点周围某些节点来回转来转去。
    ② 出入参数q:如果 q >1 ,那么游走会倾向于在起始点周围的节点之间跑,可以反映出一个节点的BFS特性。如果 q<1 ,那么游走会倾向于往远处跑,反映出DFS特性。
    ③ 特殊的,当 p=1,q=1时,游走方式就等同于DeepWalk中的随机游走。

Node2Vec算法

图神经网络之Node2Vec详解_第4张图片

算法的具体流程:

1. 根据p、q和之前的公式计算一个节点到它的邻居的转移概率;
2. 将这个转移概率加到图G中形成G';
3. walks用来存储随机游走,先初始化为空;
4. 外循环r次表示每个节点作为初始节点要生成r个随机游走;
5. 其中,对图中每个节点生成一条随机游走walk的流程:
	a. 将初始节点u添加进去;
	b. walk的长度为l,因此还要再循环添加l-1个节点;
	c. 当前节点设为walk最后添加的节点;
	d. 找出当前节点的所有邻居节点;
	e. 根据转移概率采样选择某个邻居s;
	f. 将该邻居添加到walk中;
6. 将walk添加到walks中保存;
7. 然后用SGD的方法对walks进行训练。

总结

Node2Vec的思想跟DeepWalk类似,不过改进了DeepWalk中随机游走的生成方式,使得生成的随机游走可以反映深度优先和广度优先两种采样的特性,从而增加单词嵌入的准确性,提高网络嵌入的效果。

相关资料

论文:node2vec: Scalable Feature Learning for Networks

你可能感兴趣的:(笔记,机器学习,算法,python,自然语言处理,神经网络)