概述
我在本文将回答那些不熟悉图或图神经网络的AI/ML/CV的用户通常会问的问题。我提供了Pytorch的例子来澄清这种相对新颖和令人兴奋的模型背后的思路。
![](https://i-blog.csdnimg.cn/blog_migrate/eae6ee553389d2170f529f80e2ab1b54.png)
问题
我在本部分教程中提出的问题是:
为什么图这种数据结构有用?
为什么在图上定义卷积是困难的?
什么使神经网络成为图神经网络?
为了回答这些问题,我将提供激励性的示例、论文和python代码,使其成为图神经网络(GNNs)的教程。读者需要一些基本的机器学习和计算机视觉知识,但是,我随着我的讲述我也会提供一些背景和直观的解释。
首先,让我们简单回顾一下什么是图?图是由有向/无向边连接的一组节点(顶点)。节点和边通常来自于关于问题的一些专家知识或直觉。因此,它可以是分子中的原子、社交网络中的用户、交通系统中的城市、团队运动中的运动员、大脑中的神经元、动态物理系统中的相互作用对象、图像中的像素、边界框或分割遮罩。换言之,在许多实际情况下,实际上是您决定了什么是图中的节点和边。
在许多实际情况下,实际上是你来决定图中的节点和边是什么。
这是一个非常灵活的数据结构,它概括了许多其他的数据结构。例如,如果没有边,那么它就成为一个集合;如果只有“垂直”边,并且任何两个节点正好由一条路径连接,那么我们就有一棵树。这种灵活性是好的和坏的,我将在本教程中讨论。
![](https://i-blog.csdnimg.cn/blog_migrate/b4183198b754f7e08a434d54e3c8a271.png)
1. 为什么图这种数据结构有用?
在计算机视觉(cv)和机器学习(ml)的背景下,研究图形和从中学习的模型至少可以给我们带来四个好处:
1.1 我们可以更接近解决以前太具挑战性的重要问题,例如:癌症的药物发现(Veselkov等人,Nature,2019);更好地理解人脑连接体(Diez&Sepulcre,Nature Communications,2019);能源和环境挑战的材料发现(Xie等人,自然通讯,2019)。
1.2 在大多数cv/ml应用程序中,数据实际上可以看作是图,即使您曾经将它们表示为另一个数据结构。将你的数据表示为图形可以给你带来很多灵活性,并且可以给你一个非常不同和有趣的视角来看待你的问题。例如,您可以从“超级像素”学习,而不是从图像像素学习,如(Liang等人,ECCV2016)和我们即将发表的BMVC论文中所述。图还允许您在数据中施加一种关系归纳偏差-一些关于该问题的先验知识。例如,如果你想对人体姿势进行推理,你的关系偏差可以是人体骨骼关节的图(Yan等人,AAAI,2018);或者如果你想对视频进行推理,你的关系偏差可以是移动边界框的图(Wang&Gupta,ECCV2018)。另一个例子是将面部地标表示为图(Antonakos等人,CVPR,2015),以对面部属性和身份进行推理。
1.3 您最喜欢的神经网络本身可以看作是一个图,其中节点是神经元,边是权重,或者节点是层,边表示向前/向后传递的流(在这种情况下,我们讨论的是在tensorflow、pytorch和其他dl框架中使用的计算图)。应用程序可以是计算图的优化、神经结构搜索、分析训练行为等。
1.4 最后,您可以更有效地解决许多问题,其中数据可以更自然地表示为图形。这包括但不限于分子和社会网络分类(Knyazev et al.,Neurips-W,2018)和生成(Simonovsky&Komodakis,ICANN,2018)、三维网格分类和对应(Fey et al.,CVPR,2018)和生成(Wang et al.,ECCVV,2018)、动态交互对象的建模行为(Kipf et al.,ICML,2018),视觉场景图建模(见即将召开的ICcv研讨会)和问答(Narasimhan,Neurips,2018),程序合成(Allamanis等人,ICLR,2018),不同的强化学习任务(Bapst等人,ICML,2019)和许多其他令人兴奋的问题。
由于我之前的研究是关于识别和分析面部和情绪的,所以我特别喜欢下面这个图。
![](https://i-blog.csdnimg.cn/blog_migrate/0eeed3c5e92bf7a90125669b6256ea8e.png)
2. 为什么在图上定义卷积是困难的?
为了回答这个问题,我首先给出了一般使用卷积的一些动机,然后用图的术语来描述“图像上的卷积”,这应该使向“图上的卷积”的过渡更加平滑。