近期图卷积阅读相关整理

一、综述类文章

A Comprehensive Survey on Graph Neural Networks(2019)
论文翻译:https://blog.csdn.net/yyl424525/article/details/100057958

该文章主要介绍了GNN简史、GNN的主要发展方向、GNN的分类等。再结合相关文章总结如下:

GCN(graph convolutional network)的远古祖先可以往GNN(graph neural network)上靠。GCN主要针对的数据结构是图(graph),比如社交关系、化学分子等等,可以用点(node)和边(edge)描述的数据。在CNN大火以后,人们自然地试图将卷积的思想迁移到图结构上,于是逐渐有了图卷积。

图卷积可以分为空域(spatial domain/vertex domain)和谱域(spectral domain)两大类。其中,空域的主要思想是从空间的角度出发,将相邻点的特征聚合处理,从而推理得到预测。而谱域以邻接矩阵形式描述整张图的邻接关系,再将邻接矩阵A与特征X同时输入网络提供信息。
在graph中,一个节点的相邻节点数目是不确定的,空域算法的策略比较难以确定。因此早期基于谱域的图卷积发展较好。但是基于谱域的弊端也逐渐显露,它不能够处理有向图,并且当节点数目较多时,邻接矩阵A的尺寸爆炸,容易造成内存不足,使得它的应用受限。因此,后续发展中,基于空域的方法又被人重视起来。

基于空域和谱域的经典网络分别为graphsage和gcn。

下图描述GNN的发展历史来自网络:https://zhuanlan.zhihu.com/p/94689360
在这里插入图片描述

二、经典网络
2.1 GCN(Semi-Supervised Classification With Graph Convolutional Networks 2017)
2.1.1 简介

我们通常所说的GCN是在《Semi-Supervised Classification With Graph Convolutional Networks 》这篇论文中被提出,与之后在此之上改造得到的变体网络相比,它是初代GCN。但从图卷积的数学发展角度来讲,它应该是三代GCN,前面两代分别为:

Spectral networks 《Semi-Supervised Classification With Graph Convolutional Networks》 2014

ChebyNets  《Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering》 2016

有关三代GCN对图卷积的数学定义的演变,可以参考这篇文章https://www.zhihu.com/question/54504471/answer/332657604

2.1.2 GCN 对图卷积的定义

其实图卷积简单说就是 F(A,X) = AXW。这里,A是邻接矩阵,但不是我们常用的那种简单邻接矩阵。X是输入的特征。W是参数weight,是可学习参数。AXW之间做的乘法是矩阵乘法。

如果图有n个节点,那么A∈R(n x n)。如果每个节点的特征是f维向量,那么X∈R(n x f)。如果输出的out_channel维度是2(以二分类任务为例),那么W∈R(f x 2)。

在GCN原文中对于图卷积的定义如下(符号不同,对照着看吧):
在这里插入图片描述
在这里插入图片描述
它的拉普拉斯邻接矩阵(这块可以自己了解一下)计算稍微麻烦一点点。

另外,基于矩阵乘法结合律,实践中可能这样计算A(XW)来节约计算成本。

2.1.3 参考资料

这篇解读很行!
这篇翻译就那样
矩阵二分之一次方

2.2 GraphSage(Inductive Representation Learning on Large Graphs 2017)
2.2.1 算法简介

这篇文章提出的方法是基于空域的图卷积。主要策略可以描述如下:
1,聚集相邻点的特征
2,将聚集得到的特征和自身特征concatenate后与W矩乘
3,重复上述过程,知道达到预设轮数
假设我们设置了超参数K代表一共进行K轮计算,那么网络会有对应的参数W1~Wk。
并且,每次聚集时,聚集的相邻点数目是固定的,由超参数n决定。如果一个点的相邻点数目不足n,那么重复采样其相邻点;如果相邻点数目超过n,则随机抽选n个。

原文中算法如下:
在这里插入图片描述

2.2.2 聚集策略

1,mean aggregator
v代表节点自身,N(v)表示相邻点集合,u是某个相邻点
在这里插入图片描述

2,pooling aggregator
在这里插入图片描述

3,LSTM aggregator
就是把LSTM用在这上。。

2.2.3 loss

graphsage原本是个无监督方法,它的loss也比较有意思,据说来自word2vector。如果细推的话,有点像是一个softmax外面套上一个log:
在这里插入图片描述
Zu是点u的预测结果,Zv是u的相邻点v的预测结果。
Q是上文中所说的相邻点采样数目超参,也就是我写的n。
Pn(v)是基于点v做负采样所得结果的分布。所谓负采样也就是不相邻的点。
E是Pn分布的期望。
Zvn也就是负采样(与u不相邻)的点的预测值。

2.2.4 相关阅读

这个解读好像还行
负采样
这个公众号的还挺全的

三、图卷积与图像相关深度学习方法
3.1 GAT(graph attention network(2018))

主要贡献就是定义了一种attention算法,能够使用它来代替AXW中的A。
假设输入特征为(N为节点数):
在这里插入图片描述
输出特征为:
在这里插入图片描述
定义weight matrix ,被所有节点共享
在这里插入图片描述

定义映射 a:
在这里插入图片描述
就可以计算attention coefficients
在这里插入图片描述
e经过softmax得到α:
在这里插入图片描述
论文的实验中,实际是这样描述这个过程的:
在这里插入图片描述
leakyrelu参数是0.2。||是concatenate操作。
预测时,用α代替A。
在这里插入图片描述
为了提高性能,还搞个多头注意力策略,就是独立计算K次,再拼接起来,因为有不同的W,所以能够提高稳定性。
在这里插入图片描述
最后一层更加特殊,用取平均计算代替了concatenate:
在这里插入图片描述
以上描述建议配合原文阅读。

翻译
一篇解读

3.2 GCU(Beyond Grids: Learning Graph Representations for Visual Recognition(2018 NIPS))

这篇文章试图将图卷积融入到图像处理方法中,主要步骤如下:
1,构建图
2,图卷积
3,图结构还原
在这里插入图片描述

这种先映射为图结构,预测后再反映射的策略后面还会见到。

GCN是一个镶嵌再网络中的模块,其输入是网络中间结果feature map。
在这里插入图片描述
graph projection:
一个GCU模块的输入是一个 feature map X ∈R(d x H x W) ,这里d是我们平常说的c。
图构建过程首先将特征向量X分派给一个节点集合,也就是把每个xij向量分配给某个超像素。这里用到参数W∈R(d x |V|) 和Σ∈R(d x |V|)。|V|是预设超参。
于是有 xij ∈ R(d), Wk ∈ R(d), Σk∈R(d)。按照如下公式计算出Q矩阵:
在这里插入图片描述
公式内容是,先做一步标准化,然后计算L2范数,再求平方,再乘以-1/2。最后做softmax。
不难看出,q(k,ij) ∈R(1)。q(ij) ∈R(|V|)。Q∈R(|V| x H x W)。

可以认为Q是对原feature map中每个xij节点向量求了该节点属于某个超像素的概率。

然后我们计算Z矩阵:
在这里插入图片描述
这一步把Q矩阵做了加权平均,然后又做了一不L2范式正则化。
得到Z矩阵 Z∈R(d x |V|)。

接着计算 A = Z^T Z。 得到A ∈R(|V| X |V|)
就得到了AXW中的A。

这个方法的厉害之处在于能够利用网路中间层的feature map做图卷积,这样可以轻易的将现有深度学习方法和图卷积结合。

graph convolution:
这步就比较简单了,直接算就行了:
在这里插入图片描述
Wg ∈R(d x d)。

graph reprojection:
这里作者为了节约资源,直接用Q矩阵做reprojection运算:
在这里插入图片描述
这就是一个GCU模块的完整工作过程。

3.3 GlobeRe unit(Graph-Based Global Reasoning Networks (cvpr 2019))

这篇思想和上一个有点类似,也是想要把图像从坐标空间(coordinate space)转到关系空间(interaction space),也就是从张量变成图,用GCN处理后再转回来。
在这里插入图片描述
为了办这个事,他们搞了一个模块:
在这里插入图片描述
1,坐标空间到关系空间
输入X ∈R(L x C)。希望得到输出V=f(X)∈R(N x C)。
N是特征数,也就是节点(node)数。
定义如下运算:
在这里插入图片描述
其实琢磨一下,也就是 V = BX,做矩乘。
不过实践中,对B和X都先进行了一步处理。用1x1卷积做特征降维并且提高构建函数的能力,也就是图中所示。

2,图卷积推理
在这里插入图片描述
简单来说就是用两个一维卷积实现了类似于GCN的公式。对照GCN的AXW可以大致理解GVWg的含义。

3,还原到坐标空间
在这里插入图片描述
计算方式定义如上,其实就是Y=DZ求矩乘。Z∈R(N x C)。D∈R(L x N)。这样就得到Y∈R(L x C)。
为什么D∈R(L x N)?因为实践中他们用D=B^T。也没说图啥,就是减小计算量。实验发现没影响准确率,所以就这么干了。

说实话,感觉这个方法看上去也不是特别强。基本就是用卷积照着GCN的玩法整,黑箱感很强。但是性能就是好,这也没啥说的、、

3.4 ML-GCN (Multi-Label Image Recognition with Graph Convolutional Networks(cvpr 2019))

把图卷积加入到多分类任务中。
主要方法是人为地对所有标签类别建立关系图。
比如说,当ski类出现,往往意味着person类也要出现。
直接捕获标签间关系,从外部为网络增加一份信息,理应能够对多分类结果产生积极影响。
在这里插入图片描述
网络主干如图,上方分支其实就是普通的特征提取网络。
下面的图卷积也是普通的GCN。这篇文章的方法特殊之处在于GCN的AXW的A的制作算法上。

首先,全部类别两两组合且同时出现的概率矩阵M∈R(C x C)。
然后,统计单个类别的总频次N∈R©。
计算P矩阵,对角线(其实就是1):
在这里插入图片描述
非对角线,也就是类间条件概率:
在这里插入图片描述
得到P矩阵后,设置一个阈值,将连续的概率值,离散二值化,得到一个二值相关性矩阵A:
在这里插入图片描述
到这里其实A就已经出来了,但是作者还提到一个over-smoothing的问题。
over-smoothing是指在图卷积中,同一个连同分量的预测结果趋同的问题。它是一个有点类似于over-fitting的问题,但不完全一样。
于是作者为了解决它,做了如下操作:
在这里插入图片描述
p是一个超参,它决定某个节点和其自身,以及该节点和其他节点间关系的权重。当P->1时,节点自身将被忽略。
这个公式翻译过来就是说,如果一个节点和很多节点都有关系,那么它和那些节点中的任意一个节点的必要联系可能就会相对减弱。
比方说,当汽车出现,那轮子很可能同时出现。但是当轮子出现,同时出现的不一定是汽车,可能是火车,自行车,三轮车,过山车等等。
这篇大概就这样。

3.5 SIGN: Scalable Inception Graph Neural Networks(2020)

这篇的主要贡献是提出下图形式的框架:
在这里插入图片描述
在这里插入图片描述
可以看出就是把若干个图卷积的输出concatenate在一起。
其中Ai表示原graph的i跳拉普拉斯邻接矩阵,Ai可以提前计算,AiX也可以提前计算。看上去还能节约一下开销。
不过这篇和图像的关系不太大,属于GCN的再开发,了解一下这种模块思想就好。

3.6 dropedge: towards deep graph convolutional networks on node classification(2020)

dropedge有点类似于dropout。
它的主要工作方式是随机将AXW中,A的非0项置0,以此提高模型泛化能力,避免过拟合…
算是一个图卷积独有的trick。

近期的阅读到这就完了。后面再做笔记的话,会再开一篇。所以这个帖子就算是写死了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值