【新智元(yuán)导(dǎo)读】图神经网络(luò)(Graph NN)是近来的一大研(yán)究热点(diǎn),尤其(qí)是DeepMind提出(chū)的“Graph Networks”,号称有望让深度学习实(shí)现因(yīn)果推理(lǐ)。但这篇论文晦(huì)涩难懂(dǒng),复星集团首席AI科(kē)学家、大数医达创始(shǐ)人邓(dèng)侃博(bó)士(shì),在(zài)清(qīng)华(huá)俞士纶(lún)教授(shòu)团队(duì)对GNN综述清晰分类的(de)基础上(shàng),解析DeepMind“图(tú)网(wǎng)络”的意(yì)义。
- 1 -
回顾(gù) 2018 年机器学习的进(jìn)展(zhǎn),2018年6月 DeepMind 团队(duì)发表的论(lùn)文
“Relational inductive biases, deep learning, and graph networks”
,是一篇重要的论文,引起业界热议。
随后,很多学者沿着(zhe)他们的思路(lù),继续研究,其(qí)中包括清华大学孙茂松团队。他们(men)于2018年(nián)12月(yuè),发表了一篇综述,题(tí)目是“Graph neural networks: A review of methods and applications”。
2019年(nián)1月,俞士(shì)纶教授团队,也写了一篇(piān)综述,这(zhè)篇综(zōng)述(shù)的覆盖面(miàn)更全面,题目是“A Comprehensive Survey on Graph Neural Networks”。
俞士纶教授团(tuán)队综述GNN,来源:arxiv
DeepMind 团队的这篇论文,引起业(yè)界(jiè)这(zhè)么热烈的关(guān)注(zhù),或许有三(sān)个原因:
声望:自从 AlphaGo 战胜李世乭以(yǐ)后(hòu),DeepMind 享誉业界(jiè),成(chéng)为机器(qì)学习业界(jiè)的领(lǐng)军团队,DeepMind 团队(duì)发表的论文(wén),受(shòu)到同行普遍关注;
开源:DeepMind 团队发表论文 [1] 以后不(bú)久,就在(zài) Github 上开(kāi)源了他们(men)开发的软件系统,项(xiàng)目(mù)名(míng)称叫(jiào) Graph Nets [4];
主(zhǔ)题:声望和开源,都(dōu)很(hěn)重要(yào),但是并(bìng)不是(shì)被业界热议(yì)的最(zuì)主要的(de)原因。最主要的原因是主题,DeepMind 团(tuán)队研究的(de)主(zhǔ)题(tí)是,如何用深度学(xué)习方法处理图谱。
- 2 -
图谱 (Graph) 由(yóu)点(diǎn) (Node) 和边 (Edge) 组成(chéng)。
图谱(pǔ)是(shì)一个重要的数学模(mó)型(xíng),可以(yǐ)用来解决(jué)很多问题(tí)。
譬如(rú)我们把城市地铁(tiě)线路图当成图谱,每个地铁站就是一(yī)个点,相邻的地铁站之间的连线就是(shì)边(biān),输入起点到终点,我们可以通过图谱的计算,计算(suàn)出从起点到终点(diǎn),时间(jiān)最短、换乘次数最少的行程路线。
又譬如(rú) Google 和百(bǎi)度的搜索引擎,搜索引擎(qíng)把世界上(shàng)每个网站的每个网(wǎng)页,都当成图谱(pǔ)中的一个(gè)点。每(měi)个网页里,经常会有链接(jiē),引(yǐn)用其它(tā)网站(zhàn)的网页(yè),每个链接都是图谱中的一条边。哪个(gè)网页被引(yǐn)用得越(yuè)多,就说明这个(gè)网(wǎng)页越靠(kào)谱,于是,在搜索结果的(de)排名也就越(yuè)靠前。
图谱的操作,仍然有许多(duō)问题有(yǒu)待解决。
譬如输入几亿条滴(dī)滴司机行进的路线,每(měi)条行进路线是按时间排列(liè)的一连串(时(shí)间、GPS经纬度)数(shù)组。如何把几亿条行(háng)进路线(xiàn),叠加在一起,构建城市(shì)地图?
不妨把地图也当(dāng)成(chéng)一(yī)个图谱,每个交(jiāo)叉路口,都是一个点,连接(jiē)相(xiàng)邻的两(liǎng)个交叉路口,是一条边(biān)。
貌似很简单,但(dàn)是细节很麻烦。
举个例子(zǐ),交叉路口有很多形式(shì),不仅有十字路口,还有(yǒu)五角尝六(liù)道(dào)口,还有(yǒu)环(huán)形道立(lì)交桥——如何从(cóng)多条路径中,确(què)定交叉路口的中心位置(zhì)?
日本大阪天(tiān)保(bǎo)山立交桥,你能确定这(zhè)座立交桥(qiáo)的(de)中心(xīn)位(wèi)置吗?
- 3 -
把深度学(xué)习,用来处理图谱,能够(gòu)扩大我们对图谱的处理能力。
深度学习在图像和文本的处理方面,已经取(qǔ)得了巨大的成功。如何(hé)扩大(dà)深度学(xué)习的成果(guǒ),使之应用于图谱处(chù)理(lǐ)?
图(tú)像由横(héng)平竖直的(de)像素(sù)矩阵组成。如(rú)果(guǒ)换一个角度,把每(měi)个像素视为图谱中的(de)一个点,每(měi)个像素(sù)点与它(tā)周(zhōu)边的(de) 8 个相邻(lín)像素(sù)之(zhī)间都(dōu)有边,而且每(měi)条边都等长。通过这个视角,重新审(shěn)视(shì)图(tú)像,图像(xiàng)是广义(yì)图谱的一个特例。
处理图(tú)像的诸多深度学习手(shǒu)段,都可以改头换面(miàn),应(yīng)用于(yú)广义的(de)图谱,譬如(rú) convolution、residual、dropout、pooling、attention、encoder-decoder 等等。这(zhè)就是深度学习图(tú)谱(pǔ)处理的(de)最初想法,很朴实很(hěn)简(jiǎn)单。
虽(suī)然最初想法(fǎ)很简单,但是深入到细节,各种挑战层出不穷。每种(zhǒng)挑战,都意味着更强(qiáng)大的技术能力,都孕(yùn)育着更有潜力(lì)的应用场景。
深度学习(xí)图谱处理这个(gè)研究方向,业(yè)界没有(yǒu)统一的称谓。
强调图谱的数学属性的(de)团队,把这个研究(jiū)方向命(mìng)名为(wéi) Geometric Deep Learning。孙茂松团队和俞士纶团队,强调神经网络(luò)在图谱处理中(zhōng)的(de)重要性,强调思(sī)想来源,他们(men)把这个方向(xiàng)命名为 Graph Neural Networks。DeepMind 团队却反对绑(bǎng)定特定技(jì)术手段(duàn),他们使用更抽象的名称(chēng),Graph Networks。
命名不那么重要,但是用哪种方(fāng)法去梳理这个领域的诸多进展,却很重要。把各个(gè)学派的目(mù)标(biāo)定位和技术方(fāng)法,梳理(lǐ)清楚,有利(lì)于(yú)加强同行之间的相互(hù)理解,有利于促进同(tóng)行之(zhī)间的未来合作(zuò)。
- 4 -
俞士纶团队把深度学习图谱处理(lǐ)的诸多进展(zhǎn),梳理成 5 个子方向,非常清晰(xī)好懂。
俞士纶团(tuán)队把深度(dù)学(xué)习图谱处理(lǐ)梳理成 5 个子方向,来源:论文 A Comprehensive Survey on Graph Neural Networks
Graph Convolution Networks
Graph Attention Networks
Graph Embedding
Graph Generative Networks
Graph Spatial-temporal Networks
先说 Graph Convolution Networks (GCNs)。
GCN 类别汇总,来(lái)源:论文 A Comprehensive Survey on Graph Neural Networks
GCN 把 CNN 诸般武器(qì),应用于广(guǎng)义图谱(pǔ)。CNN 主(zhǔ)要分为四个任务,
点与点(diǎn)之间的融(róng)合(hé)。在图像领域,点与点之(zhī)间(jiān)的(de)融合主要通过卷(juàn)积技(jì)术 (convolution) 来实现。在广义图谱里,点与点之间的关系,用边来表达。所(suǒ)以,在广义图谱里(lǐ),点点融(róng)合,有比卷积更强大的办法。Messsage passing [5] 就是一种更(gèng)强大的办法(fǎ)。
分层抽(chōu)象(xiàng)。CNN 使(shǐ)用 convolution 的(de)办法,从原始像素矩(jǔ)阵中,逐层提炼出更精炼更抽象的特征。更高层的点,不再是孤立的点,而是(shì)融(róng)合了相邻区域中其它点(diǎn)的属性(xìng)。融合(hé)邻(lín)点(diǎn)的办法,也(yě)可(kě)以应用于广(guǎng)义图谱中。
特征提炼。CNN 使用 pooling 等手段(duàn),从相邻原始像素中,提炼边缘。从相(xiàng)邻边缘(yuán)中,提炼实体轮廓。从相邻实体中,提炼更高层更抽象的实体(tǐ)。CNN 通常把 convolution 和 pooling 交(jiāo)替使用,构(gòu)建结构更复杂(zá),功能更强大(dà)的神经网络。对(duì)于广义(yì)图谱,也(yě)可(kě)以融汇 Messsage passing 和 Pooling,构建多层图谱。
输出层(céng)。CNN 通常使用 softmax 等手段,对整张图像进行分类,识别图谱(pǔ)的(de)语义内(nèi)涵。对于广(guǎng)义(yì)图谱来(lái)说,输出的结果更多样,不(bú)仅可以对于整个图谱,输出(chū)分类等等结(jié)果。而且也可以预测图谱中(zhōng)某个(gè)特定的点的值,也可以预测某条边的值。
GCN 和Graph Attention Networks 的区(qū)别来源:论(lùn)文 A Comprehensive Survey on Graph Neural Networks
Graph Attention Networks 要解决的(de)问题(tí),与 GCN 类似,区别在于点点融合、多层抽(chōu)象的方法。
Graph Convolution Networks 使用卷积方式(shì),实现(xiàn)点点融(róng)合和分(fèn)层抽象。Convolution 卷(juàn)积方式仅仅适用于融合相邻的点,而 attention 聚(jù)焦方式却不限(xiàn)于相邻的点(diǎn),每个点(diǎn)可以融合整(zhěng)个(gè)图谱中所有其它点,不管是否相邻,是否融(róng)合如(rú)何融合(hé),取决(jué)于点(diǎn)与点之间的关联(lián)强弱(ruò)。
Attention 能力更强大,但是对于算力的要求更高,因为需要计(jì)算整个图谱中任意两个点之间的关联强弱。所以 Graph Attention Networks 研究的重点,是(shì)如何(hé)降(jiàng)低计算成(chéng)本,或者通(tōng)过(guò)并行计算,提(tí)高计算效率。
- 5 -
Graph Embedding 要解决的问(wèn)题,是给(gěi)图谱(pǔ)中每个点每条(tiáo)边,赋予一个数值(zhí)张量。图像不存在这个问题,因为像素天生是数值张量。但是,文本由文字词汇语句段(duàn)落构成,需要把文(wén)字词汇(huì),转化(huà)成数值(zhí)张量,才能(néng)使用深度学习的诸多(duō)算法。
如果(guǒ)把文本中的(de)每个(gè)文(wén)字或(huò)词汇,当(dāng)成图谱(pǔ)中的一个点(diǎn),同时把词与词之间的(de)语法语义关系,当成图谱中的一条(tiáo)边,那(nà)么语句和段落,就等同于行(háng)走在文本图谱中(zhōng)的一条行进路径(jìng)。
如(rú)果能够给每个文字和词汇(huì),都赋予一个贴(tiē)切的(de)数值张量,那么语(yǔ)句和段落(luò)对(duì)应的行(háng)进(jìn)路径,多半是最短路径。
有多种实现(xiàn) Graph Embedding 的办(bàn)法(fǎ),其中效果比较好的办法是 Autoencoder。用 GCN 的办法,把图谱的点和边转(zhuǎn)换成数值张(zhāng)量,这个(gè)过程(chéng)称为编码 (encoding),然后通过计算(suàn)点与(yǔ)点之(zhī)间的(de)距离(lí),把数值(zhí)张量集合,反转为图谱,这个过(guò)程称为解码 (decoding)。通过不断地(dì)调参,让解(jiě)码得到的(de)图谱,越来(lái)越趋近于原始图谱,这个过程(chéng)称为训练。
Graph Embedding 给图谱中的每个点每条边,赋予贴切的(de)数值张量(liàng),但是它不解决图谱的结构问题。
如果输入大量的图谱(pǔ)行进路径,如(rú)何从这些行(háng)进路径中,识别哪些点与哪些点之间(jiān)有连(lián)边(biān)?难度更大的问(wèn)题是,如(rú)果没有(yǒu)行进路径,输入的训练数据是图谱的(de)局部,以及与之对应的(de)图谱的特性,如(rú)何把局部拼接成图谱全貌?这些问题是 Graph Generative Networks 要解决的问题。
Graph Generative Networks 比较有(yǒu)潜力的实现方法,是使用 Generative Adversarial Networks (GAN)。
GAN 由生成器(qì) (generator) 和辨别器(qì) (discriminator) 两部(bù)分构成:1. 从训练数据中,譬如海量行进路径,生成器(qì)猜测数据背(bèi)后(hòu)的图谱应该(gāi)长什么样;2. 用生成(chéng)出来的图谱,伪造一批行进(jìn)路径;3. 从大量伪造的路径和真实的路(lù)径中,挑选几(jǐ)条(tiáo)路径,让辨别器识别(bié)哪几条路径是伪造的。
如果辨别(bié)器傻傻分(fèn)不清谁是伪造路径(jìng),谁是真实路(lù)径,说明生成(chéng)器生成出的图谱,很接近于真实图谱。
GCN 以外的其他 4 种图谱神(shén)经网络,来源:论(lùn)文(wén) A Comprehensive Survey on Graph Neural Networks
- 6 -
以上(shàng)我们讨(tǎo)论了针对静态图(tú)谱的若干问(wèn)题(tí),但(dàn)是图(tú)谱有时候是动态的,譬如地图中表现的道路(lù)是静态(tài)的,但是路况是动态的(de)。
如何预测春节(jiē)期(qī)间,北京天安门附近(jìn)的交通(tōng)拥堵情况?解(jiě)决(jué)这(zhè)个问题,不仅要考虑空间 spatial 的(de)因素,譬如天(tiān)安门周边的道路结构,也要考虑(lǜ)时间 temporal 的因素,譬如(rú)往年春(chūn)节期间该地区交通拥堵情况。这就是(shì) Graph Spatial-temporal Networks 要解决的问题之一(yī)。
Graph Spatial-temporal Networks 还能解决其它问题,譬如(rú)输入一段踢球的视(shì)频,如何(hé)在(zài)每一(yī)帧图像中,识别足球的位置?这个问(wèn)题的难点在于,在(zài)视频(pín)的某些帧中,足(zú)球有(yǒu)可(kě)能是看不见的,譬如(rú)被球员的腿遮挡(dǎng)了(le)。
解决时间序(xù)列(liè)问题的(de)通常思路,是 RNN,包括 LSTM 和 GRU 等等。
DeepMind 团队在 RNN 基础上,又(yòu)添(tiān)加了编码和解码 (encoder-decoder) 机制。
- 7 -
在 DeepMind 团队的(de)这篇论(lùn)文(wén)里[1],他(tā)们(men)声称自己的工作,“part position paper, part review, and part unification”,既是提案,又是综(zōng)述(shù),又是融合。这(zhè)话怎么理解?
DeepMind联合谷歌大脑、MIT等机构27位(wèi)作(zuò)者发(fā)表重磅论文,提出“图(tú)网络(luò)”(Graph network),将端到端学(xué)习与(yǔ)归纳(nà)推理相结(jié)合,有望解决深度(dù)学习无法(fǎ)进行(háng)关系推理(lǐ)的问题。
前(qián)文(wén)说到,俞(yú)士纶(lún)团队把深度学(xué)习图谱处(chù)理的(de)诸多进展(zhǎn),梳理成 5 个子方向:1) Graph Convolution Networks、2) Graph Attention Networks、3) Graph Embedding、4) Graph Generative Networks、5) Graph Spatial-temporal Networks。
DeepMind 团队在 5 个子(zǐ)方(fāng)向(xiàng)中着(zhe)力解决后 4 个方向,分别是 Graph Attention Networks、Graph Embedding、Graph Generative Networks 和 Graph Spatial-temporal Networks。他(tā)们把这四个方向的成果,“融(róng)合(hé)”成统一的框架,命(mìng)名为 Graph Networks。
在他们的(de)论文中,对这个四个子方(fāng)向沿途的诸多(duō)成果,做了“综述(shù)”,但(dàn)是并没有综述 Graph Convolution Networks 方向的成(chéng)果。然后他们从这四个(gè)子方向的诸多成果中,挑选出了他们认为最有潜力的方法,形(xíng)成自己的(de)“提案”,这就是(shì)他们开源的代码 [4]。
DeepMind在2018年10月(yuè)开源的Graph Nets library,用(yòng)于在TensorFlow中构建简单而(ér)强大(dà)的关系推理网络。来源:github.com/deepmind/graph_nets
虽然论文中,他们声称他们的提(tí)案解(jiě)决了四个(gè)子方向的问题,但是查看他们开源(yuán)的代(dài)码,发现(xiàn)其实他们着力解决的是后两(liǎng)个子方向,Graph Attention Networks 和 Graph Spatial-temporal Networks。
DeepMind 的思(sī)路是这(zhè)样的(de):首先(xiān),把 [5] 的(de) message passing 点(diǎn)点融合(hé)的机制,与 [6] 图谱全局的聚焦机(jī)制相(xiàng)结合,构建通用(yòng)的 graph block 模块;其次,把 LSTM 要素融进(jìn) encoder-decoder 框架(jià),构建时间(jiān)序列机制;最(zuì)后(hòu),把 graph block 模块融进 encoder-decoder 框架,形成 Graph Spatial-temporal Networks 通用系统。
- 8 -
为(wéi)什么 DeepMind 的成果很重要?事关(guān)四件(jiàn)大事。
一、深度学习过程的解释
从(cóng)原理上(shàng)讲(jiǎng),深度学习譬如 CNN 的(de)成果,来自于对图像的不断抽象。也(yě)就(jiù)是,从原始的(de)像素矩阵中,抽(chōu)象出(chū)线段。从首(shǒu)尾相连的相邻线(xiàn)段中,抽象出实体的(de)轮廓。从轮(lún)廓抽(chōu)象(xiàng)出实(shí)体,从实体抽象出语义。
但是,如果窥探 CNN 每一层的中间结果,实际上很难明确,究竟是哪一层(céng)的哪些节点,抽象出(chū)了轮廓,也不知道哪(nǎ)一层的哪些(xiē)节点(diǎn),抽象出(chū)了实体。总而(ér)言之,CNN 的网络结(jié)构是个迷,无(wú)法(fǎ)明确地解(jiě)释网络结构隐藏(cáng)的(de)工作过(guò)程的细节。
无法解释工作过程的细节,也就(jiù)谈不上人(rén)为干预。如果 CNN 出了问题,只好(hǎo)重新训练。但重(chóng)新训练后(hòu)的结(jié)果,是否(fǒu)能达(dá)到期待的效果,无法事先语料。往往(wǎng)按(àn)下葫(hú)芦浮(fú)起瓢,解决了(le)这(zhè)个缺陷,却引发(fā)了其它缺陷。
反过来说,如果(guǒ)能明确(què)地搞清(qīng)楚 CNN 工(gōng)作过程的细节,就可(kě)以有(yǒu)针对(duì)性地调整个别层次的个别节点的参数,事先人(rén)为精准(zhǔn)干预(yù)。
二、小样本学(xué)习
深度学习依(yī)赖训练(liàn)数据,训练(liàn)数据的规模(mó)通(tōng)常很(hěn)大,少则几万,多大(dà)几百万(wàn)。从哪里收集这(zhè)么多训练数据,需要组织多少人力(lì)去对训练数据进(jìn)行标注,都是(shì)巨大(dà)挑战(zhàn)。
如果对(duì)深(shēn)度(dù)学(xué)习的过程(chéng)细节,有更(gèng)清晰的了解(jiě),我们就可以改善卷积这种蛮力的(de)做法,用更少的训练数据,训练(liàn)更轻巧(qiǎo)的(de)深度学习模型。
卷(juàn)积的过程,是(shì)蛮力(lì)的过(guò)程,它对相(xiàng)邻(lín)的点,无(wú)一(yī)遗漏(lòu)地不(bú)分青红皂白地进行卷积处理。
如果(guǒ)我们(men)对点与点之(zhī)间的关联关系,有(yǒu)更明确的了解,就不需要对相邻(lín)的点,无(wú)一遗漏地不分青红皂(zào)白地进行卷积(jī)处理。只需要对有关联的(de)点,进行卷(juàn)积或者其它处理。
根据(jù)点与点(diǎn)之间的关联关系,构建出来的网(wǎng)络,就是广义图谱。广(guǎng)义图谱的结构,通(tōng)常(cháng)比 CNN 网络更加(jiā)简单,所(suǒ)以,需要的训(xùn)练数据量(liàng)也(yě)更少。
三、迁移学习和推理
用当今的 CNN,可以从大量(liàng)图片中,识别某种实体,譬如猫。
但是,如果(guǒ)想(xiǎng)给识别(bié)猫的 CNN 扩大能力(lì),让它不仅能识别猫(māo),还能识别狗,就需要额外的识别狗的训(xùn)练数据。这是迁移(yí)学习的过程。
能不能不提(tí)供(gòng)额外(wài)的(de)识别狗的训(xùn)练数据,而只是用规则这样的方式,告(gào)诉电脑猫与狗的区别,然后让电(diàn)脑识别狗?这是推(tuī)理的(de)目标。
如果对深度学习过程有(yǒu)更精准的了解,就能把(bǎ)知识和规则(zé),融(róng)进深度学(xué)习。
从广义范围说,深(shēn)度学习和知识图谱,是(shì)机器学(xué)习阵(zhèn)营中诸多学(xué)派的两大主流学派。迄今为(wéi)止(zhǐ),这两大学派隔岸叫(jiào)阵,各(gè)有胜负(fù)。如何融合两(liǎng)大学派,取长补短,是困扰(rǎo)学界很久的难题。把(bǎ)深度学习延伸到(dào)图谱处理(lǐ),给两大(dà)学派的融合(hé),带来了希望。
四、空间和(hé)时间的融合,像素与语义的融合
视频处理,可以说是深度学习的最高(gāo)境界。
视频处理融合了图像(xiàng)的空间分割,图(tú)像中实体的识别,实体(tǐ)对应的语义理解。
多帧静态图像(xiàng)串(chuàn)连(lián)在一起形(xíng)成视频,实际上是时间序列。同一(yī)个(gè)实体,在不同帧中所处的位置,蕴含(hán)着实(shí)体的(de)运动。运动的背后,是(shì)物理定律和语义关(guān)联。
如何从一段视频,总结出文本标题。或者反过来(lái),如何根据一句文(wén)本标题,找到(dào)最贴(tiē)切的视(shì)频(pín)。这是(shì)视(shì)频处理的经典任(rèn)务,也(yě)是难度超大的任务。
参考(kǎo)文献(xiàn)
Relational inductive biases, deep learning, and graph networks,https://arxiv.org/abs/1806.01261
Graph neural networks: A review ofmethods and applications,https://arxiv.org/abs/1812.08434
A Comprehensive Survey on Graph Neural Networks,https://arxiv.org/abs/1901.00596
Graph nets,https://github.com/deepmind/graph_nets
Neural message passing for quantum chemistry,https://arxiv.org/abs/1704.01212
Non-local neural networks,https://arxiv.org/abs/1711.07971