图神经网络入门
作者:刘才权
编辑: 晟 沚
前 言
深度学习的发展日新月异,从经典的深度网络(DNN、CNN、RNN)到GAN、强化学习。深度学习覆盖的应用场景越来越丰富。今天介绍的图神经网络是另一类深度学习方法。虽然,图神经网络也可以纳入深度学习的范畴,但它有着自己独特的应用场景和算法实现,对初学者并不算太友好。这里主要是对图神经网络做一个入门性质的介绍,梳理图神经网络中的一些核心点,方便后续的进一步深入研究。本文会从下面几个方面逐步展开。
图神经网络有什么优势?
图神经网络中的图是什么图?
图神经网络的基本框架是怎样的?
图嵌入、图神经网络、图卷积是什么关系?
图嵌入?
图神经网络?
图卷积网络?
谱域图卷积和空域图卷积有什么区别?
图神经网络是使用场景有哪些?
学习资料有哪些?
01
图神经网络优势
为什么要引入图神经网络呢?使用经典的深度学习方法不能解决吗?这里举一个引文网络的简单例子。
D1~D7是7篇文章,分为两个主题:生物和化学。其中,D1、D2、D6、D7的主题为生物,D3、D5的主题为化学。箭头被指向的文章,说明这篇文章被引用了,比如,D7引用了D3。现在,从上面的信息,推断下D4的主题是什么?很显然,D4大概率是生物主题。
我们的推断很大方面依赖于文档间的引用特征。进一步说,我们可以把文档看出节点,引用看出边,我们的推断主要来源于这个图的结构信息。对于深度模型如何有效使用这些图结构信息呢?经典的深度学习方法(比如DNN、RNN、CNN)能够有效的处理原始的输入,比如语音、图片、文本,但对于上面的图结构信息,就不是很有效了。这样就引入了本文的主角-图神经网络。图神经网络的应用场景非常广泛,比如,社交网络(用户节点,关系为边)、电子购物(用户为和商品为节点,用户与商品之间的联系为边)、化学分子(原子为节点,化学键为边)。
02
图神经网络中的图
提到图大家会想到两类图:
数据结构与算法中的图
概率图模型中的图
因为大家的重点是机器学习,第一感觉会觉得是概率图模型中的图,比如贝叶斯网络、马尔科夫随机场。实际上,图神经网络中使用的是经典数据结构与算法中的图。
图由顶点(Vertex)和连接顶点的边(Edge)构成。顶点和边之间的关系可以用邻接矩阵(A)表示,两个顶点间有边标识为1,否则为0。如上图所示,图G=(V,E)。其中,V={v1,v2,v3,v4,v5},E={(v1,v2),(v1,v3),(v2,v4),(v3,v4),(v4,v5)}。关于更多关于图的知识,可以参考《数据结构》、《离散数学》或者《图论》中的相关内容,但图本身的知识也是博大精深,不建议深入学习,只了解图相关的基本概念即可。这里可以参考《图神经网络介绍-Introduction to GNN》:https://www.bilibili.com/video/av62661713?from=search&seid=6134263793308325331
只看前面部分即可。
03
图神经网络的基本框架
神经网络的一个特点就是能将原始的输入变成稠密向量表示,比如将字/词转化为字/词向量(Word2Vec),将文章转化为篇章向量(Doc2Vec),将图片转化为图片向量然后进行分类等。很自然针对于图结构数据,神经网络的一个目标也是将其转化为向量。而具体来说就是:
把什么转化为向量?
怎么转化为向量?
图G=(V,E),很显然,图神经网络就是把整个图G、每个节点V、每条边E转化为稠密向量。当然没必要每次都把G、V、E都进行向量化,哪部分向量化取决于实际的应用场景。一般来说主要包含三类任务:
1.节点层面任务
比如文章最开始提到的引文网络中,节点论文的分类,社交网络中用户标签的分类等。此时,主要关注节点和边层面的特征。
2.边层面任务
比如社交网络中,将用户作为节点,用户之间的关注关系建模为边,通过边预测实现社交用户的推荐。此时,主要关注节点和边的特征。
3.图层面的任务
比如对药物分子的分类。此时,任务不依赖于某个节点或某条边的属性,而是,需要考虑整个图的信息。
04
图嵌入、图神经网络、图卷积的关系
查看图神经网络的资料,最常见图嵌入(Graph Embedding)、图神经网络(GNN)、图卷积(GCN)这三个词,同时,也很容易迷惑:到底这三个说的是三个东西还是一个东西?大家平时说的图网络指的是哪一个?这三个有什么联系?
图神经网络是一个很宽泛的概念,图神经网络=图+神经网络。我们通俗讲的图神经网络主要指GNN和GCN(类似于深度学习网络中的前馈全连接DNN和CNN)。图嵌入发展较早,在早期是一个相对独立的领域,关注的问题大致分为4类:
节点分类
链接预测
聚类
可视化
方法主要分为三类:
基于因子分解的方法
基于随机游走的方法
基于深度学习的方法
其中,基于深度学习的图嵌入可以划到图神经网络的范畴。
05
图嵌入
图嵌入发展较早,在早期是一个相对独立的领域。具体可以参考《图嵌入(Graph embedding)综述》:
https://zhuanlan.zhihu.com/p/62629465。
图嵌入比较经典的是DeepWalk,基本思想类似词向量训练,具体可以参考《【论文笔记】DeepWalk》:
https://zhuanlan.zhihu.com/p/45167021。
06
图神经网络
GNN比较经典的是这篇《The Graph Neural Network Model》:
https://repository.hkbu.edu.hk/cgi/viewcontent.cgi?article=1000&context=vprd_ja
核心思想:
07
图卷积网络
GCN分为谱域GCN(Spectral)和空域GCN(Spatial),其中,谱域GCN发展较早,但主要思想基于图的信号处理,理论方面较难理解,很多初学者觉得图网络对数学要求较高,多半是直接从谱域GCN切入的。实际上对于图网络的初学者,建议可以先跳过谱域GCN,等对图网络有较好的理解后,再回过头来看谱域的GCN。引用一段不错的学习思路:
许多 GNN 的介绍都用大篇幅去死磕 spectral based 的 GCN。但笔者认为这是本末倒置的行为,忽略了前沿工作里面的许多思想精华。Lecun 的 spectral GCN 是非常经典的工作,但是文章写得晦涩难懂,前置知识也太多,方法的实用性也不大。而且现在主流的方法都是以 spatial 为主的。所以建议初学者还是先学习 spatial 的 model,里面有很多做 DL 的人熟知的套路,接受起来也比较容易。等对整个领域建立起基本的 sense 之后,spectral GCN 以及其背后的 spectral graph theory 不失为一个继续深入的好选择。
来源-《GNN 简介和入门资料》:https://zhuanlan.zhihu.com/p/58792104
08
空域GCN
经典的空域GCN是这篇《Learning Convolutional Neural Networks for Graphs》:
http://proceedings.mlr.press/v48/niepert16.pdf
可以参考《论文笔记:Learning Convolutional Neural Networks for Graphs》:
https://zhuanlan.zhihu.com/p/27587371
特别是论文对应的PPT讲解,非常有参考价值《Learning Convolutional Neural Networks for Graphs-PPT》:
http://www.matlog.net/icml2016_slides.pdf
09
谱域GCN
经典的谱域GCN是这篇《Semi-Supervised Classification with Graph Convolutional Networks》:
https://arxiv.org/pdf/1609.02907.pdf
可以参考《Semi-Supervised Classification with Graph Convolutional Networks阅读笔记》:
https://zhuanlan.zhihu.com/p/31067515
谱域GCN的思想类似信号处理中的多级滤波器,核心点就是时域的卷积等于频域的乘积。EE方向的同学大多学习过《信号与系统》,对傅里叶时频变换,滤波器等概念要熟悉些。但对于计算机/软件的同学可能相对陌生。《信号与系统》是同样是一个独立的方向,涉及到的知识庞大又复杂。像图一样,只关心最核心的几点,比如:
时频傅里叶变换
时域卷积等于频域乘积
不建议完整的深入整个领域。
10
应用场景
图神经网络的应用场景非常丰富,在自然语言处理,图像/视频、推荐的很多方面都有落地场景。自己的工作方向是自然语言处理,这里放两个在NLP场景的应用例子(都是关于文本内容审核的):
阿里的:
《Spam Review Detection with Graph Convolutional Networks》:
https://arxiv.org/pdf/1908.10679.pdf
Facebook的:
《Abusive Language Detection with Graph Convolutional Networks》:https://arxiv.org/pdf/1904.04073.pdf
11
图网络关系梳理
前面的内容只是作为初学者,梳理了一些图网络中最为基础的内容,实际上图网络涉及的知识还是比较复杂的。
这张图来自2019年11月,唐杰老师在清华大学举行的图形图像前沿知识学习班的分享《图神经网络及认知推理》。
ppt 链接:https://pan.baidu.com/s/1Q3tX6wnQYcvBV3eSymbrKg 密码:8thm
哔哩哔哩上有视频,《唐杰-图神经网络及认知推理-图神经网络学习班》:https://www.bilibili.com/video/av77934956?from=search&seid=6134263793308325331
这里只想引用一下其中的一页PPT,来梳理不同图神经网络直接的关系,唐杰的这次分享的重点是自己研究方向,而不是介绍不同图神经网络的关系和历史,这个要注意下。
12
学习资料
目前图神经网络处于蓬勃发展阶段,适合初学者的系统课程,目前还没看到。比较合适的方式是,先通过论文综述的方式梳理清楚图神经网络的整体框架,然后,结合具体论文进行深入。同时,可以参考网上的博客和视频进行拓展。这里推荐一些学习资料:
论文综述
目前较推荐的有这三篇:
《Graph Neural Networks: A Review of Methods and Applications》:
https://arxiv.org/pdf/1812.08434.pdf
《Deep Learning on Graphs: A Survey》:
https://arxiv.org/pdf/1812.04202.pdf
《A Comprehensive Survey on Graph Neural Networks》:
https://arxiv.org/pdf/1812.08434.pdf
机器之心对这三篇综述还有专门的报道,《图神经网络概述第三弹:来自IEEE Fellow的GNN综述》:https://zhuanlan.zhihu.com/p/54241746
图书
《深入浅出图神经网络:GNN原理解析》
目前唯一的中文版图书,总体感觉,是非图网络部分写的不错(手动捂脸)。从谱域GCN开始切入,作为参考还是可以的。
视频
YouTube上图网络的视频不少,但自己看的不多,所以,先不做评论。国内哔哩哔哩上图网络的视频还是非常丰富的。特别推荐,
北师大的集智学园:https://space.bilibili.com/238664541?spm_id_from=333.788.b_765f7570696e666f.2
中科院的人工智能前沿讲习:https://space.bilibili.com/388690539?spm_id_from=333.788.b_765f7570696e666f.2
这两个主页上有不少图网络相关的视频,视频质量也不错。
13
参考文献
《图嵌入(Graph embedding)综述》:
https://zhuanlan.zhihu.com/p/62629465
《【论文笔记】DeepWalk》:https://zhuanlan.zhihu.com/p/45167021
《The Graph Neural Network Model》:
https://repository.hkbu.edu.hk/cgi/viewcontent.cgi?article=1000&context=vprd_ja
《GNN 简介和入门资料》:https://zhuanlan.zhihu.com/p/58792104
《Learning Convolutional Neural Networks for Graphs》:
http://proceedings.mlr.press/v48/niepert16.pdf
《Learning Convolutional Neural Networks for Graphs-PPT》:
http://www.matlog.net/icml2016_slides.pdf
《论文笔记:Learning Convolutional Neural Networks for Graphs》:
https://zhuanlan.zhihu.com/p/27587371
《Semi-Supervised Classification with Graph Convolutional Networks》:
https://arxiv.org/pdf/1609.02907.pdf
《Semi-Supervised Classification with Graph Convolutional Networks阅读笔记》:https://zhuanlan.zhihu.com/p/31067515
《Abusive Language Detection with Graph Convolutional Networks》:
https://arxiv.org/pdf/1904.04073.pdf
《Spam Review Detection with Graph Convolutional Networks》:
https://arxiv.org/pdf/1908.10679.pdf
《Graph Neural Networks: A Review of Methods and Applications》:
https://arxiv.org/pdf/1812.08434.pdf
《Deep Learning on Graphs: A Survey》:
https://arxiv.org/pdf/1812.04202.pdf
《A Comprehensive Survey on Graph Neural Networks》:
https://arxiv.org/pdf/1812.08434.pdf
图神经网络概述第三弹:来自IEEE Fellow的GNN综述》:
https://zhuanlan.zhihu.com/p/54241746
哔哩哔哩上有视频,《唐杰-图神经网络及认知推理-图神经网络学习班》:
https://www.bilibili.com/video/av77934956?from=search&seid=6134263793308325331
《图神经网络介绍-Introduction to GNN》:
https://www.bilibili.com/video/av62
本文从初学者的角度,描述了图神经网络的基本概念、经典模型、应用场景和学习思路。同时,提供了较为丰富的参考资料,希望能为准备入门图神经网络的同学带来帮助。
END
往期回顾之作者刘才权
机器学习算法工程师
一个用心的公众号
进群,学习,得帮助
你的关注,我们的热度,
我们一定给你学习最大的帮助