图神经网络的一般介绍
什么数据最适合用图表示
图跟别的数据有什么不一样,为什么使用图神经网络
构建一个GNN
提供一个playground
什么是图
distill的图非常出色,文字大多是在解释图
分为顶点,边,全局信息一共三种embedding
图片变成图,像素点和节点一一映射
文本作图:相邻的文字之间有一条有向边
分子图?
社交网络
wiki的知识图
cora的引用图
结构图数据上有哪种问题
三种:图层面,顶点层面,边层面
将图片语义分割,不同部分的联系用边表示,通过图神经网络预测实体之间的关系
神经网络遇到的挑战
怎么样表示图?
稀疏矩阵?不太行,存储困难
邻接矩阵交换行,列都不会影响表示边的结果
所以最优解是:用一个列表存储边,比如[[1,0],[2,3]]
,每个顶点每条边用标量表示
Nodes: [0, 0, 1, 0, 0, 0, 1, 1]
Edges: [1, 1, 1, 2, 2, 1, 2]
Adjacency List:
[
[1, 0],
[2, 0],
[4, 3],
[6, 2],
[7, 3],
[7, 4],
[7, 5]
]
图神经网络
一个GNN是对图上所有属性(节点,边,全局信息)的最优变换,保留了图的对称信息(将点的顺序变换后结果不变)
最简单的GNN
对于顶点,边,全局都构造一个MLP,输出是被更新属性后的图,但是没有改变连接性
GNN预测
顶点分类:在最后一层用一个全连接层,输出每个顶点的概率(softmax)
属性缺失,用聚合操作弥补:
如果有顶点并没有被赋予向量呢?可以看顶点和哪些边相连,相加连接的点的向量与全局向量
同理如果只有节点的特征,那边的特征可以由连接的两个顶点的向量得到
只有顶点想预测全局,那全部加起来就行
所以尽管我们只知道节点向量但是可以通过汇聚的操作预测所有信息
信息传递
层N向层N+1传递消息
顶点i汇聚跟其相连所有顶点的信息和他自己,经过线性变换的得到层N+1
GNN的感受野?
类似于CNN感受野,卷积层深度加大时,深层的像素能看到浅层更大的范围。GNN深层的顶点能看到邻居的邻居等更多人的信息。
怎么样把顶点的信息传递给边?
顶点到边之前已经讲过了,边到顶点也可以将边的向量加起来给顶点
加入全局表征
master node或者context vector
MN是一个虚拟的点,假设和所有点相连,那汇聚到边时候也要用到边的信息
MN的信息也要用到所有顶点和边的信息
实验
对超参数的解释:
莫型的参数增加那AUC也在增加的
嵌入向量的维度
统计学常用图,上下是25%和75%分位数,重点横线是中值
bar特别长意味着模型很敏感,中值越大越好
对层数的解释:层数上升带来参数量增加,效果会变好
对聚合操作的解释:取最大,求和没什么区别
消息传递:顶点,边,全局相互传递信息是最优的
其他图
两点之间有很多边,三维图
batching:批量放点进去训练,但是每个点的邻居不同边不一样,所以这是一个很有的挑战性的问题
假设性
假设GNN的保证图对称性
聚合有不同方法
GCN:
图卷积神经网络。
每个点都在看以自己为中心往前走k步那个子图的信息的汇聚
点和边做对偶
图卷积等效于矩阵乘法,高效实现图神经网络
图注意力网络
生成图,拓扑结构怎么表示
总结
图是强大的工具,但是带来了很大的挑战。他的结构是动态的,架构是稀疏的,如何在GPU上计算很难。对超参数敏感。