| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> [论文阅读] (22)图神经网络及认知推理总结和普及-清华唐杰老师 -> 正文阅读 |
|
[人工智能][论文阅读] (22)图神经网络及认知推理总结和普及-清华唐杰老师 |
《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期待与您前行,加油。 前一篇从个人角度介绍S&P21的离地攻击(Living-Off-The-Land)系统分析,这是一篇非常经典的论文。这篇文章将带来清华唐杰老师的分享“图神经网络及认知推理总结和普及”或“Graph Neural Networks and Applications—A Review”。唐老师也是学术界大牛,真心值得我们学习。同时文章融合了自己十年NLP的理解及相关资料补充,只希望帮助更多初学者,且看且珍惜,写得不好的地方请海涵。这些大佬是真的值得我们去学习,献上小弟的膝盖~fighting! 在此感谢B站的“感谢吕同学”老师的视频,同时文章中插入了很多原文链接,感谢哪些大牛和老师们。
文章目录前文赏析:
一.Networked World1.背景知识主要分享我们在图神经网络相关的研究以及分享一些思考和发展。 从整个相关的研究往前看上20年,会发现整个大的背景是由许多网络化的数据组成,比如阿里巴巴、facebook、微博、头条、微信等都会产生海量的网络数据。现在数据隐私保护越来越好,但这些公司会有大量的比赛,提供数据供我们做科学研究。 这里面有大量的工作可以做,除了社交媒体数据,我们放大看,还会看到各种各样的网络数据,比如:经济方面的数据、生命科学和医学方面的数据,即研究不同药物成分和基因间的关系,有时候这些与人类生活息息相关的数据反而影响更大;还有底层的Internet,我们现在的互联网太关注上层,但事实上整个互联网发展,如可信验证或其他底层机理也非常重要;当然还有神经本身的网络,很多人可能觉得我们已经将DNN、CNN研究透了,会觉得直接这么使用就好了,但我们不应该单纯研究DNN,是不是还应该研究生物神经网络,从中学习新的知识。
2.相关工作机器学习中的网络分类如下: Machine Learning with Networks
所以,网络化的学习做了大量的研究。图神经网络的发展历程如下图所示: (1) Hinton早期(1986年) (2) 扩展(Bengio到Word2Vec)
但是,当时做出来后由于其计算复杂度比较高,很多人无法fellow。直到谷歌2013年提出
(3) 网络化数据时期(Deepwalk) 通过 随机游走 从一个节点随机到另一个节点,此时就变成了了一个序列Sequence,并且和NLP问题很像,接下来就能处理了。 随后又有了LINE(2015)、Node2Vec(2016)、NetMF(2018)、NetSMF(2019)等工作,它们扩展到社交网络领域。我们的工作也给了证明,这些网络本质上是一个Model。 (4) 图卷积神经网络(GCN)时期
Data Mining over Networks
第一部分花费大量时间介绍了研究背景,接下来我们讲讲为什么网络化数据或社交网络中要做这样的工作呢? 二.start with an exampleLet us start with an example — Social influence and prediction
因此,需要做很多相关的研究。节点之间可能会相互影响,也可能节点邻居都做Negative,也许我也会做Negative,这就是Conformity(一致性),它也是社交网络或现实社会中的现象。还有就是Structural influence,很多时候不是简单地重做,有时候有逆反心理。
以《王者荣耀》为例,v1和v2周围都有6个节点,这6个节点都在玩王者荣耀,这两个图的区别是什么?主要是边不同,对v1和v2虽然都有6个用户在玩,但v1形成了三个小的子图(C、AD、BEF)。 假设现在v1和v2都不玩了,现在要发条信息给v1和v2,告诉他们还有6个朋友在玩?大家觉得v1回来的概率高,还是v2? 其结果显示:在社交网络中,人被影响的恰恰是你的潜意识。v2的潜意识是这些人都不相关,我的不同的朋友都还在玩,觉得大家都在玩,就跟着玩;v1觉得他们都认识,比如就高中朋友在玩。 回到本质,你在机器学习中要把它转换成features,你需要去定义,但过程很麻烦。刚才只是几个节点,尤其是需要泛化到更多节点时,就非常麻烦。
原来的机器学习方法会通过以下工作实现。
但是,特征定义是非常乏味和低效的。 所以,最近可以通过表示学习、Embedding、图神经实现,它们都在做一件事,即:
所以接下来唐老师将给大家介绍表示学习进展和GNN的知识,包括一些应用。
三.表示学习:Representation Learning on Networks1.表示学习(1) 首先,我们看看网络中的表示学习,我们应该做什么事情。 (2) 为什么这个问题很难呢?
(3) 大家可能看的第一篇引起关注的就是Word2Vec,早期主要应用在自然语言处理中。
Word2Vec:给定一个单词,提取其上下文单词,然后组成一个向量。基于这样的向量做一个表示学习,学习的本质和原来的NLP思路一样。如下图所示,如果两个单词一样或很相似,则组成的向量也很相似(上下文相似),如“stars”。 (4) 然而,向量模型必须要用严格的单词组成,缺乏语义信息,比如有个单词和某个植物单词很相似,但是无法描述。那怎么办呢? (5) 那么,如果给定一个图,又该如何表示呢? 此时遇到一个新的问题:网络跟上下文不一样,因为网络很难说有2度、3度纳入图,如果设置成6会将全世界都纳入进来。Facebook之前发过Nature,世界是由3点多度组成,所以很难直接引用这种思路。 为了解决这个问题,随机游走的思路被提出并被大量引用。 2.DeepWalk2014年,Bryan做了DeepWalk工作。既然直接计算节点的邻居无法做,那能不能通过游走实现。DeepWalk和graphSAGE的思路都是随机,之后再网络化数据中有大量的使用。此外,网络化数据中有大量的冗余,只要捕获其中一个信息,也许就能影响到其它信息。
DeepWalk怎么做的呢? (1) Random walk (2) Representation Mapping 向量表征过程如下: (3) SkipGram with Hierarchical softmax (4) 参数学习 实验结果如下图所示,比如给BlogCatalog数据打标签,一定程度提高聚类效果。 同时也在YouTube数据集进行测试。 贡献:这篇文章给了一个初始的案例,通过随机游走的方式对网络化数据先做一个表示学习,用表示学习的结果再去做预测,更多是提供新的思路。 后续的用法越来越多,同时研究DeepWalk存在什么问题。
对应的优化工作如下:
接下来我们将详细介绍。 3.Node2vecNode2vec定义了两种Random walk不一样,从程序角度变成了BFS和DFS两种遍历方式。
具体定义如下所示:
Biased Random Walk计算如下: 具体示例如下: 4.LINE:Information Network EmbeddingLINE实现过程如下:
(1) Line: First-order Proximity (2) LINE: Second-order Proximity 表征如下: 接下来将两个函数combine。
(3) Combining first-order and second-order proximities
模型优化如下: LINE采用C++实现,其速度很快,很多人fellow,而且效果比DeepWalk更好。 5.我们的工作:Unifying DeepWalk, LINE, PTE, and node2vec into Matrix Forms后来我们的研究中,考虑了两个问题。即:
我们就做了一些很有意思的工作,通过一些数据分析发现这些不同的方法在做什么。
(1) DeepWalk 实现算法如下,每个节点Random Walk后,中间节点构建它的context。 Skip-gram with Negative Sampling如下:两个节点有无边的Objective function不同。 在我们的场景下,从a到e的Random Walk问题更复杂。因为它里面有方向性,比如c节点有左边的context和右边的context,并且windows是1或2的结果不一样。 扩展后的函数如下,简写为: P = D ? 1 A P=D^{-1}A P=D?1A 进一步扩展后得到如下两个式子。 最终得到如下的矩阵式子。
(2) LINE
(3) PTE
PTE是三个不同的邻接矩阵,本质是LINE的特例。 (4) Node2vec 贡献:最终我们得到一个结论,所有这些方法都是DeepWalk矩阵分解的特例。 同时,它给我们另一个启示,既然这些方法都是在做矩阵分解,那么我们能不能就用矩阵分解来做。 6.我们的工作:NetMFNetMF: explicitly factorizing the DW matrix
具体工作如下: A unified algorithm NetMF to explicitly factorizes the derived matrix 构造矩阵分解,过程中使用了 Arnoldi算法,其做矩阵分解速度较快。它会将一些低质的节点消除,从而提升实验结果。 代码地址: 实验结果如下: 接下来是Sparsify S。 7.我们的工作:NetSMFNetSMF增加了Sparse(稀疏),提出了大规模网络嵌入算法作为稀疏矩阵分解(NetSMF)。NetSMF利用spectral sparsification理论有效地稀疏密集矩阵,从而提高嵌入学习的效率。
具体过程如下图所示: 代码下载地址如下:
然而,多项式随机游走重构稀疏矩阵也非常花时间,内存开销很大,只是解决了问题。因此我们有了后续的工作。 8.我们的工作:ProNE: Fast and Scalable Network EmbeddingProNE:给定一个网络,首先构建一个超级稀疏的矩阵,然后进行矩阵分析(tSVD),再增加一个Spectral Propagation操作。相当于每个节点分解完后,应该有对应的向量,然后在图上或分解结果上增加一个Propagation,类似于卷积网络中的卷积操作,线性算法的向量相加,从而防止高阶信息丢失(如边)。 因此,ProNE通过在频谱调制空间(spectrally modulated space)中传播嵌入增强了Embedding,它是一个快速、可伸缩和有效的模型。
NE as Sparse Matrix Factorization如下: Propagation原理解释:Higher-order Cheeger’s inequality
贡献:原来的SVD稀疏矩阵分解是一个线性算法,增加Spectral Propagation也是线性算法,所以整个算法非常快。 实验结果如下,我们只用单线程,其它算法用20个线程,我们的效果比其它最快的也快一个数量级。 上亿的图速度也非常快,性能也好。 Spectral Propagation在其他算法上均有提高,包括ProDeepWalk、ProLINE、ProNode2vec、ProGraRap和ProHOPE。 NetMF vs. ProNE 贡献&总结:我们的工作可以用下图显示,包括NetMF S=f(A)、NetSMF Sparsify S和ProNE Fast RLN。其输入是邻接矩阵,输出是向量。 四.图神经网络:Revisiting Graph Neural Networks1.总体概述刚才介绍的很多模型其实还是Shallow Model,Shallow层面做表示和矩阵分解。 但在神经网络中会更深的模型,尤其是图神经网络。例如,encoder是一个依赖图结构的复杂函数。 那么,我们怎么把它变成一个更深层呢? GCN的基本思路:给定一个网络,这个网络中有很多属性,可以构造一个矩阵(如相似矩阵或邻接矩阵),再进行卷积操作,并做全连接和label分类。 下图展示了GCN的相关研究,包括GCN、GraphSAGE、GAT、FastGCN和GraphSGAN等,后续我们将详细介绍。 2.GCN图卷积网络的架构如下图所示:
GCN核心是:每个节点都有一个隐向量,这里有个卷积函数,使得所有的隐向量就映射到中间节点v上,再对v学习一个新的向量。 卷积操作如下图所示,可以参考作者之前CNN博客。 GNN的基本思路是把邻居节点的相关信息都接入(Neighborhood Aggregation)到当前节点。
其计算公式如下所示: 它既可以捕获当前节点的信息,也可以捕获邻居节点的信息,因此公式展开如下。
同时可以增加两个权重。 有趣的是,邻接矩阵也可以写成一个矩阵分解式。 注意,Shallow是一个矩阵分解,现在的卷积还是一个矩阵分解,就可以将公式写在一起。 GCN模型架构的推导过程如下: 性能比较如下: 下面是一些传统GCN的扩展,第一个扩展是GraphSage。 3.GraphSageGraphSage又是Jure Leskovec他们提出来的。 GraphSAGE 使用多层聚合(aggregate)函数,每一层聚合函数会将节点及其邻居的信息聚合在一起得到下一层的特征向量,GraphSAGE 采用了节点的邻域信息,不依赖于全局的图结构。
其计算过程如下,比如将当前节点v的邻居节点的信息聚合在一起。
其性能如下图所示: 然而,事实上邻居节点会有不同的影响或重要性不一样。那怎么办解决呢? 4.Graph Attention NetworksGAN被提出,它是在刚才模型的基础上,每两个节点之间增加一个权重,编程了Attention Model。
此时的性能又会有提升。 此外,不同模型背后的基本原理是什么呢? 5.我们的工作:NRGCN(Node Ranking-aware GCN)那么,我们能不能在矩阵操作的基础上做一些事情呢? 通过这种方式(简单的矩阵相乘),我们就可以将很多不一样的Attention机制增加进来。 贡献:整个模型变成了如下图所示的样子,将不同的Attention机制增加到式子中,实现了一个统一(unify)。
6.我们的工作:NSGCN(Network Sampling GCN)第二个工作是图形结构化数据中的结构依赖性和信息冗余性分析,通过采样(Sampling)来帮助探索网络信息。 给定一个矩阵,我们实现砍掉一半的信息再做Predict。我们发现学出来的结果与先前的结果比较接近,因此我们思考,如何优美地将信息利用起来,说不定结果还更好。 因此,我们构造了这个模型,利用Sampling思想,我们将图看成两个图,各学各的,然后将它们加到一起;继续二分,就可以构造多个图,即NSGCN(dp)。 第二种,我们想能不能互相让两部分相互学习,并且让两部分的loss更小,就构造了NSGCN(dm),即Disagreement Minimization。 整个模型如下所示: 实验结果如下图所示,效果更好。 同时支持inductive的实验。 五.Applications最近,大家可能非常关心GNN的实际应用。我们也探讨了一些应用。 App1: Social Prediction我们探讨了《王者荣耀》的信息探测。 J. Qiu, J. Tang, H. Ma, Y. Dong, K. Wang, and J. Tang. DeepInf: Social Influence Prediction with Deep Learning. KDD’18. 我们构建了 End-2-End Behavior Prediction Framework,通过该模型预测节点本身的信息。原来只通过拓扑结构学习一个表示,但是它在真实场景是很难用的,因为真实场景往往会添加很多属性,比如性别、职位、位置等。所以,我们的模型中允许它添加很多属性,最终来预测它的行为。 实验结果如下图所示: App2: Recommendation in E-commerce接着我们做了推荐系统:用户和商品的关系。
分析结果如下图所示:
数据分析和代码如下: 分析的结果如下图所示: 同时在真实场景做了A/B测试,推荐系统上提高了点击率。 六.总结及感受这次分享主要从背景知识、表示学习、图神经网络和真实场景应用四个方面介绍,下图是经典工作的总结和我们的相关工作。本来还想讲一些推理的事情,即ACL19的Cognitive Graph,根据兴趣来推理转换为决策过程,并且可以回溯和可解释;但看到另一位老师也在,他后续会补充。
同时,推荐大家关注唐老师和B站的UP老师。 个人感受简单总结下:
这篇文章就写到这里,希望对您有所帮助。由于作者英语实在太差,论文的水平也很低,写得不好的地方还请海涵和批评。同时,也欢迎大家讨论,继续加油!感恩遇见,且看且珍惜。 (By:Eastmount 2022-05-28 周六夜于武汉 http://blog.csdn.net/eastmount/ ) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:25:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |