导语:刚接触GNN,其实我是拒绝的。
作者:木羊同学
来源:华章计算机(hzbook_jsj)
今天聊GNN。
刚接触GNN,其实我是拒绝的。深度学习是近几年人工智能领域的爆款,知识内容很多,去书店看看,敢叫“深度学习”的书很多都是厚厚的一本,而且深度学习还在不断发展,每年都有成吨的论文在生产。不过,如果把深度学习看作一部要素过多的大片,那么,它有两条主线,跟着这两条主线走就不会跑偏。一条主线叫卷积神经网络,简称CNN,主要用于图像类数据的处理。另一条主线叫循环神经网络,简称RNN,主要用于时序类数据的处理。“时序类数据”这种叫法大家也许很陌生,不过肯定都见过,主要就是指文本类数据和音频类数据。CNN和RNN共同搭建起深度学习的稳固框架,新的研究成果不过只是添砖加瓦。
当然了,这些年学术前沿风起云涌,深度学习领域也并不太平,先是图像领域跑出来了GAN,图像生成的风头一下盖过了图像识别。接着自然语言处理领域干脆打出了革命的旗号,说什么“Attention Is All You Need”,声势浩大,让人一度以为LSTM都要统统下岗了。不过,在我看来,都只是老游戏的新玩法,就像无论是兽皮独木舟还是喷射飞翼船,都只是水上交通工具,内心没有丝毫波澜,直到看到了GNN。
刚开始,我以为GNN不过是又一种新玩法,只不过想要来蹭CNN和RNN两位大佬的热度,故意起了这么个名字。不过,抽空翻了翻GNN的论文之后,我马上发现,这是深度学习以前没有挽过的船新版本。深度学习座下,看来是要再多一位NN。
先说“GNN”这个名字,后面的“NN”不必说了,和CNN、RNN一样,就是神经网络(Nerual Network)的意思,毕竟机器学习的神经网络算法正是深度学习发家的根本。关键在于GNN打首的G。GNN全名图神经网络,这里的G是是图(Graph)的意思,GNN之所以重要,是因为图很重要。
图是计算机科学里的一种非常重要的数据结构,计算机科学有一门必修的基础课叫“离散数学”,听名字像是某一条数学分支,不过究竟“离散数学”的边界在哪里,不同版本的《离散数学》教材的看法略有不同,但有一个知识点,所有版本的《离散数学》教材都不会错过,那就是“图论”,讨论一种叫“图”的数据结构。GNN里的“图”,正是指图论的“图”。
应该说,图神经网络并不是图与机器学习的第一次结合,机器学习在此之前已经大量使用了这个重要的数据结构。机器学习众多的模型中,有一个重要的大类,叫“概率图模型(PGM)”,名字叫得很形象,这类模型就是用图来表示变量与变量之间转移的概率关系。不过,虽然名字都有“图”字,但概率图模型和这里要介绍的图神经网络,有着本质的不同。
有人说,2019年是GNN的元年,我觉得这个说法谦虚了。深度学习的每一款经典模型,背后都有一篇经典的论文,GNN的那篇经典论文名为《Semi-Supervised Classification with Graph Convolutional Networks》,已经发表了三年,到了2019年,GNN已经开始在各大顶会上刷榜,有一点开谈不讲GNN就落伍的意思。
铺垫了这么多,加上“图论”这个名字本身自带的神秘感,特别是我还看到有的教程非要不经意地提一下图与拓扑学的关系,这些也许都会让你产生一个感觉:图非常高深难学。其实,图非常简单,真的是用三言两语就能讲清楚。
什么是图呢?就两样,顶点(Vertex)和边(Edge),没有其它了。这么说好像很简单,但实际上比这更简单,网络拓扑结构图肯定都见过吧,星形、环形、总线形,无论哪种,所谓的顶点,就是网络拓扑图里面的节点,譬如网络拓扑图里的PC机、服务器和路由器等等,而所谓的边,就是连接这些网络节点的线。所以图的应用非常广,网络拓扑图就是一种非常典型的图结构。
真就这么简单?真就这么简单。教材上是怎么定义图的呢?就一条公式,三个字母:
G=(V,E)
这里的G,就是GNN的G,意思是Graph(图)。V就是前面的Vertex(顶点),E就是前面的Edge(边)。这是一种集合论的定义方法,表达的意思就是:图是顶点和边的集合。图论也好,图神经网络也罢,来来回回就是研究顶点和边这两个对象折腾出来的各种问题。
是不是挺简单的,有没有感觉干劲满满,准备花一点时间精通图神经网络——一个下午够不够?
图确实挺简单的,真的就两个研究对象,不过,这两个对象,还真的就折腾出了一个庞大的理论体系,正是我们前面所说的图论(Graph Theory)。图论是数学中很重要的一条分支,三言两语肯定是讲不清楚的,如果你好奇数学家的脑洞能开多大,不妨看看图论是怎样把顶点和边这两个怎么看怎么简单的对象玩出各种花样。这里,我想对图神经网络多说几句。
首先,为什么要有图神经网络?
一款新技术的兴起,大家也许更在意的是它的技术原理,而我则通常会首先思考上面这个问题:为什么要推出这款新技术。推出一款新技术,潜台词就是说原有技术存在不足,那我们的CNN和RNN看起来都要包打天下了,会在什么地方还存在不足呢?
答案四个字:数据结构。
模型是要喂数据的,这我们都知道。但现有的深度学习模型,无论是CNN,还是RNN,或者叫其他什么的,都对数据的数据结构有一个要求,必须都是欧几里得结构(Euclidean Structure)。这个词听起来好像很难,不少论文都爱举图像数据这个例子来说明,我是感觉不太直观,不过也许大家都比我悟性高吧,这里姑且也放一张:
引自《Graph Neural Networks:A Review of Methods and Applications》
那什么是欧几里得结构呢?其实特别简单。长得方方正正的就是欧几里得结构,军训的阅兵方阵,横向纵向都是一个人紧挨着一个人,这就是典型的欧几里得结构。也许你在心里想了想,说:难道还有什么结构不是这样的吗?有,总得来说有两大类,一类就是图,另一类叫流型,统称为非欧几里得结构。就说这个图吧,想象一下图的样子,它肯定不是方阵,更像是军训时忽然听到开饭了,一下四散而去。这就是非欧几里得结构。
这样的非欧几里得结构,是没有办法用传统的深度模型处理的。因此,研究人员开发了图神经网络。图神经网络是一个大类,具体当然又包括有很多模型,不过打响头一炮的叫GCN,大家研究图神经网络,一般都会选择从GCN开始。说起来很有意思,打响深度学习头一炮的是CNN,而这个GCN和CNN还有很深的渊源。GCN全称Graph Convolutional Network,意思是图卷积网络。看到“卷积”二字,想必大家都会会心一笑,这不正是CNN压箱底的宝贝嘛!不过疑问同时也就来了,怎样用卷积处理非欧几里得结构的数据呢?老的方法肯定是不行的,所以图神经网络需要用到一些新的概念,比如拉普拉斯矩阵和图傅里叶变换等等。
新技术带来的新知识点自然比较多,想要系统地了解这方面内容,我推荐一本书,书名叫《深入浅出图神经网络:GNN原理解析》,应该是目前市面上唯一一本专门介绍图神经网络的书,不得不夸一句,这次华章对技术热点的跟进特别很快,都抢到了欧美前面了。这本书从图的基本知识讲起,重点介绍了GCN模型的原因,特别是讲清楚了怎样在非欧几里得数据上进行卷积操作,最后介绍了图神经网络的最新发展,读完应该就能对图神经网络有比较全面的了解了。
RECOMMEND
推荐阅读
- 01 -
推荐语:极验AI&图项目团队倾力之作!从原理、算法、实现、应用4个维度详细讲解图神经网络,理论与实践相结合。白翔、俞栋等学术界和企业界领军人物强烈推荐。
- 02 -
推荐语:全面介绍了图论的基本概念、基本定理和算法,帮助读者理解并掌握图的结构和解决图论问题的技巧。另外,书中包含很多图论的新研究成果,并介绍了一些悬而未决的图论问题,证明与应用并举是该书的一个重要特点,书中对所有定理和命题给出了完整的证明,同时讨论了大量的实例和应用,并提供了1200多道习题。
木羊同学,原名莫凡,新技术深度爱好者,曾经从事信息安全前沿技术跟踪研究和数据分析工作,在各类信息安全类技术期刊杂志发表文章五十余篇,现转为投身高端知识“白菜化”项目,希望能让将更多听起来高大上的名词沾一沾人间烟火,成为日常中生活真正用得上的知识,著有《机器学习算法的数学解析与Python实现》。个人公众号“睡前机器学习”,个人知乎号“木羊”。
欢迎扫码加入读者群与作者直接交流
本群适合:想要学习机器学习的学生、程序员、研究人员或者爱好者,以及想要知道机器学习是什么、为什么和怎么用的所有读者。
宠粉福利
华章图书,专注高端IT出版。感谢大家对华章图书的信任与支持。以上两本畅销好书,你最想要哪本,留言谈谈你最想要那本书的原因。留言点赞最多的前2名,小编会包邮分别送出1本正版书籍。留言截至4月12日。锦鲤就是你呦!
点击阅读原文,了解更多AI前言好书!