查看原文
其他

图神经网络入门

刘才权 机器学习算法工程师 2021-12-31

   作者:刘才权          

编辑: 晟  沚           


前  言


深度学习的发展日新月异,从经典的深度网络(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



往期回顾之作者刘才权

【1】《机器学习》笔记-半监督学习(13)

【2】《机器学习》笔记-计算学习理论(12)

【3】《机器学习》笔记-特征选择与稀疏学习(11)

【4】《机器学习》笔记-降维与度量学习(10)

【5】《机器学习》笔记-聚类(9)

【6】《机器学习》笔记-集成学习(8)

【7】《机器学习》笔记-贝叶斯分类器(7)





机器学习算法工程师


                            一个用心的公众号

长按,识别,加关注

进群,学习,得帮助

你的关注,我们的热度,

我们一定给你学习最大的帮助





: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存