图神经网络(PGL)7日打卡营学习心得

百度图神经网络学习地址:https://aistudio.baidu.com/aistudio/education/group/info/1956

PGL算法地址:https://github.com/PaddlePaddle/PGL

一、图学习应用有哪些:

图神经网络(PGL)7日打卡营学习心得_第1张图片

二、图游走类型模型有哪些

图神经网络(PGL)7日打卡营学习心得_第2张图片

1、Deepwalk 采样

对于给定的节点,DeepWalk会等概率的选取下一个相邻节点加入路径,直至达到最大路径长度,或者没有下一个节点可选。

图神经网络(PGL)7日打卡营学习心得_第3张图片

因此, 假如我们想要得到一条walk, 我们需要输入一个graph, 起始节点ID, 游走的深度walk_len。

2、GCN采样

3、GAT采样

首先回顾下注意力机制的定义,注意力机制实质上可以理解成一个加权求和的过程:对于一个给定的 query,有一系列的 value 和与之一一对应的 key,怎样计算 query 的结果呢?

很简单,对 query 和所有的 key 求相似度,然后根据相似度对所有的 value 加权求和就行了。这个相似度就是 attention coefficients,在文章中计算如下:

其中  是前馈神经网络的权重系数,|| 代表拼接操作。

利用注意力机制对图中结点特征进行更新:

既然得到了上式,那么多头注意力的更新就不言而明了,用 k 个权重系数分别得到新的结点特征之后再拼接就可以了:

3、GraphSAGE

GraphSAGE 由 Inductive Representation Learning on Large Graphs 提出,该方法提供了一种通用的归纳式框架,使用结点信息特征为未出现过的(unseen)结点生成结点向量,这一方法为后来的 PinSage(GCN 在商业推荐系统首次成功应用)提供了基础。

论文标题:Inductive Representation Learning on Large Graphs

论文链接:https://arxiv.org/abs/1706.02216

但 GraphSAGE 的思想却非常简单,也可以用一张图表示。 

算法的详细过程如下:

1. 对图上的每个结点 v,设置它的初始 embedding  为它的输入特征 

2. 之后进行 K次迭代,在每次迭代中,对每个结点 v,聚合它的邻居结点(采样后)的在上一轮迭代中生成的结点表示  生成当前结点的邻居结点表示 ,之后连接  输入一个前馈神经网络得到结点的当前表示  ;           

3. 最后得到每个结点的表示 

这个算法有两个关键点:一是邻居结点采样,二是聚合邻居结点信息的聚合函数。 

邻居结点采样方面,论文中在 K 轮迭代中,每轮采样不同的样本,采样数量为 。在聚合函数方面,论文提出了三种聚合函数:

Mean aggregator:

LSTM aggregator:使用 LSTM 对邻居结点信息进行聚合。值得注意地是,因为 LSTM 的序列性,这个聚合函数不具备对称性。文章中使用对邻居结点随机排列的方法来将其应用于无序集合。 

Pooling aggregator:

论文在三个数据集上取得了对于 baseline 的 SOTA。

既然为工程应用提出的方法,对于实验部分就不能一笔带过了,这里给出论文中两个有意思的结论:

对于邻居结点的采样,设置 K=2 和  得到比较好的表现;

对于聚合函数的比较上,LSTM aggregator 和 Pooling aggregator 表现最好,但是前者比后者慢大约两倍。

4、ERNIESage

ERNIESage可以很轻松地在PGL中的消息传递范式中进行实现,目前PGL在github上提供了3个版本的ERNIESage模型:

  • ERNIESage v1: ERNIE 作用于text graph节点上;
  • ERNIESage v2: ERNIE 作用在text graph的边上;
  • ERNIESage v3: ERNIE 作用于一阶邻居及起边上;

ERNIESage V1 模型核心流程

  • ERNIE提取节点语义 -> GNN聚合

图神经网络(PGL)7日打卡营学习心得_第4张图片

ERNIESage V2 核心代码

  • GNN send 文本id -> ERNIE提取边语义 -> GNN recv 聚合邻居语义 -> ERNIE提取中心节点语义并concat

图神经网络(PGL)7日打卡营学习心得_第5张图片

为了使得大家对下面有关ERNIE模型的部分能够有所了解,这里先贴出ERNIE的主模型框架图。

图神经网络(PGL)7日打卡营学习心得_第6张图片

ERNIESage V3 核心过程

  • GNN send 文本id序列 -> GNN recv 拼接文本id序列 -> ERNIE同时提取中心和多个邻居语义表达
  •  图神经网络(PGL)7日打卡营学习心得_第7张图片

 

总结

通过以上三个版本的模型代码简单的讲解,我们可以知道他们的不同点,其实主要就是在消息传递机制的部分有所不同。ERNIESageV1版本只作用在text graph的节点上,在传递消息(Send阶段)时只考虑了邻居本身的文本信息;而ERNIESageV2版本则作用在了边上,在Send阶段同时考虑了当前节点和其邻居节点的文本信息,达到更好的交互效果, ERNIESageV3则作用在中心和全部邻居上,使节点之间能够互相attention。

希望通过这一运行实例,可以帮助同学们对ERNIESage有更好的了解和认识,大家快快用起来吧!

 

 

你可能感兴趣的:(图神经网络(PGL)7日打卡营学习心得)