【知识图谱系列】自适应深度和广度图神经网络模型
作者:互联网
作者:CHEONG
公众号:AI机器学习与知识图谱
研究方向:自然语言处理与知识图谱
本文介绍一篇自适应深度和广度图神经网络表征学习模型Geniepath,介绍Geniepath模型核心出发点和模型思路,完整汇报ppt获取请关注公众号回复关键字:Geniepath
一、Motivation
Point1: 在自然语言处理邻域中,一句话中词的上下文是很显然的,便可利用上下文对中心节点进行预测和表征。但在图数据中,节点node没有明确的上下文概念,因此在进行图表征学习时定义合适的上下文概念便至关重要。
Point2: 最初解决图表征学习时,如Deepwalk、LINE等算法,会先在图数据上进行随机游走得到序列,节点序列便相当于NLP中的文本数据,然后用NLP领域的算法例如Word2vec进行节点表征学习。但细想其实并不合理,这样强行从图中拆分出序列会把很多存在依赖关系的节点拆分开。
Point3: GCN算法的出现又重新给出了节点上下文的概念,即把节点的One-hop邻居节点看成当前节点的上下文,然后图卷积神经网络用One-hop邻居节点对中心节点进行表征学习。而GAT模型则在GCN模型基础上考虑One-hop邻居对中心节点的影响权重,引入了Attention机制,进行有权Aggregation。但这里大家有可能会很自然想到,如果One-hop作为上下文,那么Two-hop, Three-hop等呢?
Point4: Geniepath模型为了解决Point3中提到的困惑。定义了一个自适应Breadth和Depth的模型。广度Breadth指的节点的One-hop邻居节点,而深度Depth指的便是节点的Multi-hop邻居节点。文中提出的Geniepath模型自适应的学习广度和深度信息来进行节点表征学习。
Point5: Geniepath模型中的Adaptive Breadth Function可自适应的有区别的选择One-hop邻居节点进行汇聚,而Adaptive Depth Function则可提取和过滤Multi-hop范围内有用和噪音信息。通过自适应广度和深度函数可以学习到每个节点不同的合适的感受野。
二、Example
Example 1: 如下图,图中红色节点代表恶意账户,绿色节点代表未知账户,而蓝色节点代表使用设备。
绿色节点即便是连接了红色的恶意账户也不能说明绿色节点一定是恶意的,因为图网络中会存在很多噪声,且节点各自扮演的角色也不同。因此如果要判别绿色节点需要获取其更广更深的信息,综合其行为模式,节点属性等信息进行判断。
Example 2: 如下图,当对Target Node进行表征学习时,不是随机的将二跳内所有邻居信息直接汇聚进行表征,因为会存在很多噪音信息。如图中所示,需要学习合适的多跳内信息Adaptive Receptive paths来对Target Node进行表征,Geniepath模型便为了学习Adaptive receptive paths。
三、Method
1、自适应Breadth函数:在One-hop邻居汇聚时加入了Attention机制,学习邻居节点的重要度
2、自适应Depth函数:使用LSTM模型将自适应Breadth函数学习到的Multi-hop信息串起来,学习多跳之间的依赖性,过滤噪音,保留有效信息。
3、根据自适应Breadth和Depth函数不同的结合方式,文中给出了两种模型:Geniepath、Geniepath-Lazy。
4、Geniepath模型: Geniepath模型可以理解为将Breadth和Depth串联在一起。如下图模型所示:初始节点特征X先经过一层MLP,再使用Breadth模块过Attention操作,然后传入Depth模块过LSTM,之后便交替重复多个Breadth模块和Depth模块,最终过一层NLP得到结果。
5、Geniepath-Lazy模型: 区别于Geniepath模型将Breadth和Depth模块串联起来,Geniepath-Lazy模型是先过多个Breadth模块,并将每层的结果保存下来,然后再将Breath模块的结果用LSTM给串起来。实现逻辑上是并行的,即先计算多层Breadth模块,再用Depth模块学习。如下图所示,可以较为清晰看出Breadth模块和Depth模块并行表征学习。
四、Code
代码实现较为简单,Breadth模块,Depth模块。Geniepath模型串联,Geniepath-Lazy模型并联。完整代码可参考Github的一个非官网实现版本:
https://github.com/shawnwang-tech/GeniePath-pytorch
五、Conclusion
1、如下表所示,本文在Transductive和Inductive任务上都进行了实验,都拿到了不错的效果
2、并且文中给出在Geniepath-Lazy模型中加入残差连接后效果也有明显提升。注:尝试复现但并不能达到这么好的效果,有兴趣的可以实验验证一下。
六、往期精彩
【知识图谱系列】知识图谱表示学习综述 | 近30篇优秀论文串讲
【知识图谱系列】探索DeepGNN中Over-Smoothing问题
Transformer模型细节理解及Tensorflow实现
GPT,GPT2,Bert,Transformer-XL,XLNet论文阅读速递
Word2vec, Fasttext, Glove, Elmo, Bert, Flair训练词向量教程+数据+源码
汇报完整版ppt可通过关注公众号后回复关键词:Geniepath 来获得,有用就点个再看呗
标签:Breadth,图谱,模型,Depth,神经网络,hop,Geniepath,广度,节点 来源: https://blog.csdn.net/feilong_csdn/article/details/117121532