图神经网络之GNN整体介绍
GNN
什么是图
常见图结构
- 点,边
图片如何表示为图结构
- 像素点为节点
- 像素之间的关系,为边
- 和周边的像素点联系
文本如何表示为图结构
- 字为节点
- 前后的联系,为边(关系)
分子
-
化学分子
- 分子性质预测
- 分子生成
- 化学反应
-
蛋白质网络
- 相互作用,药物-蛋白
社交网络
文章的引用结构
图数据的性质
- 节点的不均匀分布
- 边的额外属性
- 排列不变性
发展历史
目标
- 通过人工神经网络,将图和图上的几点映射到一个低维空间
谱域神经网络
-
为了解决空间邻域的不规则性,提出图上的谱网络
-
对图的拉普拉斯矩阵,进行谱分解
- 利用得到的特征值和特征向量进行卷积操作
-
利用切比雪夫网络将卷积核定义为多项式形式,计算近似卷积核,提高效率
- 只使用一阶近似的卷积核
- 实现快速局部化和低复杂度计算
-
缺点
-
计算复杂度高
- 需要计算拉普拉斯矩阵,得到特征值和特征向量
- 需要将全图存入,消耗内存较多
-
无法扩展到更多图
-
因为图卷积核依赖于每个图的拉普拉斯矩阵,没办法扩展到其他图
- 参数不能在不同图上分享
- 卷积计算的基底不一样
-
-
空域神经网络
-
GGNN(门控图神经网络)
-
MPNN(消息传递神经网络),2017
-
GraphSAGE, 2017
- GIN (图同构神经网络), 2019
- 定义:从直推式学习扩展到归纳式学习
-
GAT, 2018
- 利用注意力机制来定义图卷积
-
任务
Graph level
- 图的分类、生成和匹配等
- 图神经网络作为编码器的Graph2Seq
Node level
- 分类,回归及聚类
Edge Level
- 链接预测,边的分类
图上的信息
nodes
- 顶点的属性
edges
- 边的属性
global-context
- 全局信息
connectivity
GNN(Graph Neural Networks)
对属性做变换,不改变图的结构
- 用了3个全连接层
Passing messages between parts of the graph
- 先得到点的向量,再将邻居的向量加在一起(类似图片的卷积)
- 然后再放到MLP里
实验
-
可选参数
-
layers
- 2-4
-
aggregation的方法
- sum
- mean
- max
-
embedding方法
- 大小
-
如何做信息传递
-
评测指标
- AUC
-
-
消息传递的方法
增加全局信息
-
master node or context vector
- 和所有的顶点相连
GraphSAGE 归纳式图表示学习
主要思路
- 先把邻居节点的信息,用一个聚合函数aggregate,聚合到一起
- 再与节点本身,进行整合和状态更新
- 用得到的所有节点的嵌入向量,作为下游任务的输入
主要点
-
SAMPLE
-
方便批处理
-
先取出K阶邻居节点
- 一般取K=2
-
-
降低计算复杂度
- 再采样固定数量的邻居节点
-
-
AggreGATE
-
w参数在,concat后,与concat相乘
-
均值聚合
-
LSTM
- 比均值聚合有更强的表达力,但是部队称
- 随机打乱再聚合邻接点
-
池化聚合
- 让所有节点通过一个全连接层
- 然后做最大池化
-
aggregate
MPNN消息传递神经网络
定义
- 空域卷积的形式化框架
公式
-
信息传递
-
M
- 节点v的邻接节点的信息,边的信息,汇总在一起
-
-
状态更新
-
Update
- 收到每个邻居的信息后,结合该节点上一时间点的状态hv,更新自己的状态
-
特点
- 加入了边的信息
种类
- 图卷积网络
- Neural FPs
- 门控图神经网络
- SpectralGNN
图注意力网络
通过注意力机制计算顶点和邻接点间的自注意力
思路
-
把原来的节点特征,从F维转换为F’维
-
再通过函数attention,映射到一个注意力权重
- eij表明节点j相对于i的重要度
-
方法
-
拼接转换后的节点信息
-
乘以一个参数
-
-
通常选取一个单层的前馈神经网络和一个LeaklyRELU作为非线性激活函数来计算eij
-
softmax激活和归一化
- 得到注意力权重
-
基于注意力权重,开始更新节点
GCN作为子图函数的近似
GCN
MPNN
主要是矩阵的乘法
Graph explaination
图的评价
做优化比较难,稀疏的架构,也是动态的架构
- 如何做加速很难
对超参数很敏感
- 如何采样?
- 用哪些超参?
工业界的应用比较少
Distil
判断图是否同构
weisfeiler-Lehman子树
图的池化
聚类与池化
-
常规的池化思路
- 定义邻居,邻域内取最大值或者平均值等
-
根据图结构,进行聚类,选取一类节点进行池化
-
谱聚类
-
graclus多层聚类算法
- 选点,然后合并点,会后剩2个
-
DiffPool
- 可学习的池化,给以一定参数
TopK池化
-
将节点通过属性映射到节点*1维上,然后根据重要性排序,确定TOPK重要的节点
-
根据选择的节点,确定子图
-
再结合子图和属性,进行下游计算
-
缺点
- 比原图更稀疏,缺失很多信息
图嵌入方法
基于随机游走的图嵌入方法
-
DeepWalk
-
随机采样大量固定长度的路径
-
每个路径相当于一个句子
- 节点相当于一个词
-
-
用skip-gram模型最大化中心节点和它在这条路上的前后邻居节点的贡献概率
- 根据节点的嵌入表示获得
-
可以利用负采样提高训练效率
-
尽可能区分目标节点和其他噪声
- 噪声即所谓的负样本
-
-
-
node2vec
- 根据节点判断,被访问的概率等
图的无监督学习
图的自编码器
-
Encoder-Decoder
- 目标:最小化重构的误差
-
Graph AE
-
Graph VAE
-
用神经网络来参数化后验概率
- 然后通过蒙特卡洛采样的方法得到以上目标函数的近似解
-
q(z|A, X) 是一个编码器
- 用来得到隐变量的分部
- 通过图卷积网络,来参数化q(z|A, X)
- N为高斯分部,参数μ和*均由两侧图卷积网络得到
-
p(A | Z)是一个解码器
- 用来重构图结构A
-
最大互信息
- 利用互信息的最大化
图神经网络的预训练
节点级别的任务
-
上下文预测
-
得到节点的向量表示
-
找到该节点对周围的上下文图
- 大于等于r1, 小于等于r2的所有点构成的子图
-
判断一个邻接域和一个上下文图,是否属于同一个节点
-
-
属性遮蔽
- 随机遮蔽节点中的一些属性
- 训练,然后预测
图级别的任务
-
属性预测
-
相似度预测
-
训练过程
- 先做节点级别的自监督预训练任务
- 然后做图级别的有监督训练
大规模学习的问题
训练效率和可扩展性
原因
- 网络大,内存大,训练消耗大,时间长
- 图大,信息爆炸
点采样
-
PinSAGE
- 基于GraphSAGE,采样时候增加邻居节点的重要性,通过随机游走,根据频率判定
层采样
-
FastGCN
- 神经网络上的层采样
图采样
-
Cluster-GCN
-
采用图聚类算法,把图分割成一个个小块
-
每次训练随机选取一些小块组成子图
-
在子图上进行完整的图卷积网络计算
- 并直接得到损失函数
-
如何解决过平滑
增加随机游走模型,使得信息可以传播到无穷远
page rank思路
- 传播远,同时保留原信息
添加残差连接
-
原始的方法
- 参考resnet
-
改进的方法
-
节点对离得近的邻居,影响力更大
- 给前一层更多权重
-
跳跃知识网络(JK-Net)
-
将图卷积的每一层输出,最后聚合在一起
-
聚合方法
- sum
- mean
- max
- LSTM
DropEdge
- dropout在图神经网络上的扩展
- 随机删除一些邻接矩阵的边
图的无监督学习
参考链接
https://www.cnblogs.com/siviltaram/p/graph_neural_network_2.html
生化医疗相关应用
预测分子性质
化学反应预测
-
给定一些反应物分子图Gr,预测化学反应后的对应阐述Gp
- 包含许多不同的分子,组成共同的不连通图
-
用一个特定的图神经网络学习每个原子节点的嵌入表示
-
预测每两个原子形成的原子对可能产生的反应分数
-
挑出K个分数最高的原子,列举可能产生的符合规则的化合物
-
用另一个神经网络对这些候选产物进行预测,按照概率高低排序
图生成模型
子主题 3
数据集
-
MUTAG数据集
- 分类它们是否为芳香剂
-
TOX21数据集
- 分类不同的毒性
-
NCI-I数据集
- 分类对癌症的阻碍作用
- 点赞
- 收藏
- 关注作者
评论(0)