前言

这是对斯坦福公开课CS224w 图神经网络的自学笔记。
参考了来自@同济子豪兄的视频讲解
p.s.生啃英文总有一种听懂了但没完全听懂的感觉:(

什么是图(Graph)

一言以蔽之:图是关系的结构。
我们用图来表示数据之间的关系,这个数据可以是任何有联系的事物。自然世界很多耳熟能详的东西都可以抽象成由节点、节点之间的连接形成的图/网络。
图由节点(Node)和边(Edge)组成。一整个图(全图)可以表示成$G(N,E)$

怎样设计一个图?

设计一个图首先要得到其本体(Ontology)。

图的本体相当于一个程序的源代码,其中声明了节点和边对应的现实当中的事物(属性/类别/标签/行为/…)以及各个节点之间所有可能发生的联系

这就好比我们在设计一个类的时候一般需要规定好各个成员的类型/属性,以及所有可能被执行的成员函数

如何设计图的本体取决于你想要用这个图解决什么问题。一般来说,本体图要做到表达上唯一、无歧义,比如表示一个社区内部的社交关系。但有时也许无须明确。

图论基础(略)

图的种类、图的表示、图的连通性、权重、入度/出度(Degree)、邻接表与邻接矩阵、最短路径算法…
以上基本被计算机科学基础课《离散数学》包括。推荐自行寻找网课视频,或者阅读这本Kenneth H.Rosen的Discrete mathematics

图机器学习/数据挖掘的任务

一般地,我们根据图的组成把研究任务分为如下4层:

level 中文 例子
Node 节点层面 寻找诈骗嫌疑人
Edge 边层面 推荐可能喜欢的歌(预测两个节点之间是否可能有联系)
Community/Subgraph 社群层面、子图层面 用户聚类(俗称划成分)
Graph 全图层面 药物毒性检测(预测整个图的特征)、寻找新蛋白质结构

特征工程(Feature Engineering)

图的成员具有属性(Attribute)特征和连接特征。节点、连接(边)、子图、全图都具有特征。从信息角度看,就是所谓自身属性信息和结构信息两方面。
传统机器学习需要人工设计特征(hands-designed feature),再从训练数据上面搜集所有特征用于训练,此时特征设计的好坏取决于研究者的先验知识。
深度学习时代最常见的一句话就是:“这也能学?”我们完全可以把特征提取这部分工作交给人工智能去学习!
imgGNN1.png

为什么是图?

复杂网络等领域研究的问题大多包含“充满关系的结构”,通过图的方式建立关系模型,我们能够作出更优秀的预测/生成任务。
常规的深度学习/神经网络往往是序列化的设计思路,用来分析像语音、音频这类线性结构的事物,又或者是分析一个固定大小,结构关系明显的事物,如2D/3D图像这类“网格”。
然而图具有任意的大小和拓扑关系,不像网格那样具有空间局部性(spacial locality)。更可怕的是,现实世界的图还可能打出 “多模态” + “动态” 的组合拳。因此两方面的结合研究是一个非常好的方向。近年来新的网络结构/模型正在不断涌现。