开发者社区> 云栖号资讯小哥> 正文

图神经网络到底是什么?终于有人讲明白了

简介: 刚接触GNN,其实我是拒绝的。深度学习是近几年人工智能领域的爆款,知识内容很多,去书店看看,敢叫“深度学习”的书很多都是厚厚的一本,而且深度学习还在不断发展,每年都有成吨的论文在生产。
+关注继续查看

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

DEDDD287_BA27_46c3_8989_E1294A6A8A11

刚接触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机、服务器和路由器等等,而所谓的边,就是连接这些网络节点的线。

所以图的应用非常广,网络拓扑图就是一种非常典型的图结构。

B1CEA656_E46A_4620_BD89_A38824C23C1B

真就这么简单?真就这么简单。教材上是怎么定义图的呢?就一条公式,三个字母:

G=(V,E)

这里的G,就是GNN的G,意思是Graph(图)。V就是前面的Vertex(顶点),E就是前面的Edge(边)。这是一种集合论的定义方法,表达的意思就是:图是顶点和边的集合。图论也好,图神经网络也罢,来来回回就是研究顶点和边这两个对象折腾出来的各种问题。

是不是挺简单的,有没有感觉干劲满满,准备花一点时间精通图神经网络——一个下午够不够?

图确实挺简单的,真的就两个研究对象,不过,这两个对象,还真的就折腾出了一个庞大的理论体系,正是我们前面所说的图论(Graph Theory)。

图论是数学中很重要的一条分支,三言两语肯定是讲不清楚的,如果你好奇数学家的脑洞能开多大,不妨看看图论是怎样把顶点和边这两个怎么看怎么简单的对象玩出各种花样。这里,我想对图神经网络多说几句。

首先,为什么要有图神经网络?

一款新技术的兴起,大家也许更在意的是它的技术原理,而我则通常会首先思考上面这个问题:为什么要推出这款新技术。推出一款新技术,潜台词就是说原有技术存在不足,那我们的CNN和RNN看起来都要包打天下了,会在什么地方还存在不足呢?

答案四个字:数据结构。

模型是要喂数据的,这我们都知道。但现有的深度学习模型,无论是CNN,还是RNN,或者叫其他什么的,都对数据的数据结构有一个要求,必须都是欧几里得结构(Euclidean Structure)。

这个词听起来好像很难,不少论文都爱举图像数据这个例子来说明,我是感觉不太直观,不过也许大家都比我悟性高吧,这里姑且也放一张:

3DEF5B54_0281_4892_9066_2916D7331FE5

那什么是欧几里得结构呢?其实特别简单。长得方方正正的就是欧几里得结构,军训的阅兵方阵,横向纵向都是一个人紧挨着一个人,这就是典型的欧几里得结构。也许你在心里想了想,说:难道还有什么结构不是这样的吗?

有,总得来说有两大类,一类就是图,另一类叫流型,统称为非欧几里得结构。就说这个图吧,想象一下图的样子,它肯定不是方阵,更像是军训时忽然听到开饭了,一下四散而去。这就是非欧几里得结构。

这样的非欧几里得结构,是没有办法用传统的深度模型处理的。因此,研究人员开发了图神经网络。

图神经网络是一个大类,具体当然又包括有很多模型,不过打响头一炮的叫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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
14278 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
19800 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29133 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22537 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20693 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
16428 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23579 0
+关注
云栖号资讯小哥
云栖号小编在此 ^o^
1401
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载