云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
刚接触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)。
这个词听起来好像很难,不少论文都爱举图像数据这个例子来说明,我是感觉不太直观,不过也许大家都比我悟性高吧,这里姑且也放一张:
那什么是欧几里得结构呢?其实特别简单。长得方方正正的就是欧几里得结构,军训的阅兵方阵,横向纵向都是一个人紧挨着一个人,这就是典型的欧几里得结构。也许你在心里想了想,说:难道还有什么结构不是这样的吗?
有,总得来说有两大类,一类就是图,另一类叫流型,统称为非欧几里得结构。就说这个图吧,想象一下图的样子,它肯定不是方阵,更像是军训时忽然听到开饭了,一下四散而去。这就是非欧几里得结构。
这样的非欧几里得结构,是没有办法用传统的深度模型处理的。因此,研究人员开发了图神经网络。
图神经网络是一个大类,具体当然又包括有很多模型,不过打响头一炮的叫GCN,大家研究图神经网络,一般都会选择从GCN开始。说起来很有意思,打响深度学习头一炮的是CNN,而这个GCN和CNN还有很深的渊源。
GCN全称Graph Convolutional Network,意思是图卷积网络。看到“卷积”二字,想必大家都会会心一笑,这不正是CNN压箱底的宝贝嘛!不过疑问同时也就来了,怎样用卷积处理非欧几里得结构的数据呢?
老的方法肯定是不行的,所以图神经网络需要用到一些新的概念,比如拉普拉斯矩阵和图傅里叶变换等等。
新技术带来的新知识点自然比较多,想要系统地了解这方面内容,我推荐一本书,书名叫《深入浅出图神经网络:GNN原理解析》,应该是目前市面上唯一一本专门介绍图神经网络的书。
这本书从图的基本知识讲起,重点介绍了GCN模型的原因,特别是讲清楚了怎样在非欧几里得数据上进行卷积操作,最后介绍了图神经网络的最新发展,读完应该就能对图神经网络有比较全面的了解了。
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
原文发布时间:2020-04-20
本文作者:木羊同学
本文来自:“大数据DT 微信公众号”,了解相关信息可以关注“大数据DT”