机器学习第九周周报
摘要
图神经网络是指使用神经网络来学习图结构数据,提取和发掘图结构数据中的特征和模式,满足聚类、分类、预测、分割、生成等图学习任务需求的算法总称。将一个图输入到网络中,会得到一个输输出图,输出的图和输入的图相比,顶点、边、以及全局信息会发生一些改变。类似于一般的神经网络一样,会对输入的数据进行改变得到输出数据,不同的是GNN的输入是一个图,输出也是一个图。
Abstract
Graph neural network refers to the algorithm that uses neural network to learn graph structure data, extract and discover features and patterns in graph structure data, and meet the needs of graph learning tasks such as clustering, classification, prediction, segmentation, generation and so on.
If you input a graph into the network, you will get an output graph. Compared with the input graph, the vertex, edge, and global information in the output graph will change. Similar to the general neural network, the input data will be changed to get the output data, except that the input of GNN is a graph, and the output is also a graph.
一、GNN
1.简介
GNN简单来说就是Graph + Nerual Networks,关键问题就是将图的结构和图中每个节点和边的特征转化为一般的神经网络的输入。
2.功能
可以做的事情主要为分类和生成。
对化学分子结构特征进行分类,判断其特征是否属于会导致突变的那类
学习若干个分子结构特征后,能够去生成类似结构的分子
3.实现方法
模拟卷积神经网络
将图结构中各节点和边的特征信息代入到特征矩阵中,之后选择相应大小的过滤器进行卷积神经网络操作。卷积有两种方式:基于空间的卷积(Spatial-based convolution)和基于频域的卷积(Spectral-based convolution)
4.Spatial-based Convolution
Aggregate:模仿卷积神经网络工作(每一次操作考虑的是某个点的所有联通邻居的特征信息,因此在 GNN 当中也是通过这样的方式下更新下一层,当然会包括这个节点本身的特征feature
Readout:整个图所有结点的feature集合起来,用一个特征值代表整个graph的信息
5.NN4G(Neural Network for Graph)
input layer 首先经过基本的 embedding 之后到 hidden layer 0。然后更新的话是将其相邻的节点相加然后乘以权重再加上之前 input layer 的原始输入。
Aggregate 更新方法:
每个隐藏层都是一个图,图中每个结点的权值 = 一个待学习的参数 w × 上一层这个结点所有相邻结点的权值和 + 原本在第一层 input layer 这个结点输入的值
全连接神经网络的神经元是固定的,因此对于每个图输入后,最后进入全连接层的 vector 维度应该是一样的。因此 NN4G 使用的方法特点是:对于每个图都固定隐藏层数量,然后取每层的均值送入全连接神经网络,这样可以避免图大小的影响
Readout 方法:
通过求出整个图中的每个顶点间的特征均值,然后各自乘以相应的权重再把每个结点得到的结果相加。
6.DCNN(Diffusion-Convolution Neural Network)
对每一层进行更新时,第 n 层看离当前节点距离 n 的节点信息。
例如在第一层,更新结点 3 首先找到与它距离为 1 的节点,然后用这三个与节点距离为 1 的 结点的原始的输入相加取平均值再乘以权重
在第二层,更新节点 3 首先找到与它距离为2的节点,然后用这几个符合条件的结点的原始的输入相加取平均值再乘以权重。
这样就可以将每一层的节点特征组成一个矩阵,然后叠在一起。
当我们需要每个节点的feature 信息的时候,采用以下的方式来表示图中每个节点的特征:
7.MoNET(Mixture Model Networks)
与之前只是将相关联结点信息相加求和相比,MoNET 考虑到一个节点的邻居跟之间的区别
- deg(x) 表示x的出入度数
- u(x,y) 自定义的距离计算方式
8.GAT(Graph Attention Network)
与 MoNET 相比,GAT 在定义距离公式时所用的权重 weighted sum 需要学习而得,相当于对邻居结点做 attention,不同的邻居结点给出不同的 weight,而不是事先规定好的
9.GIN (Graph Isomorphism Network)
首先把邻居结点都求加相见 + 结点自己本身信息 × 系数,不用 maxpooling 和 meanpooling(例如在下图中,a 中 每个结点的特征值都一样,若选择 maxpooling 和 meanpooling,都无法确定最后选择的到底是 v 的哪个邻居结点 )