目录

  • 卷积神经网络
  • 图卷积神经网络
    • GNN数据集
    • 图的表示
    • GCN
    • GNN的基准化:Benchmarking Graph Neural Networks

卷积神经网络

在计算机视觉中,卷积网络是一种高效的局部特征提取工具,一个卷积层包含多个filter,每个filter的kernel数量等于输入张量的通道数,输出张量的通道数量就是filter的个数,一个filter中的各个kernel是不同的;
可以理解为不同的filter提取不同的局部特征,filter内的kernel不同是为了获取输入张量上不同通道的局部信息,最后加和得到该filter对应的局部特征相似度;

上图的输入张量有3个通道,设置了一个filter,容易理解这个filter应当有3个kernel,通过在输入张量上滑动加和得到输出张量,输出张量为1个通道;通过以上计算可见,卷积神经网络其实相当于不同的全连接网络组成一组滤波器(全连接网络不附带激活函数),作用在输入张量的局部特征上,这些局部特征计算得到的张量再组合成为新的张量;

计算机视觉任务中,Pooling layer 用于对局部特征求最大或者求平均,比如这是一个MaxPool2d:

补充一个部分,MaxPooling其实相当于一个特殊的注意力机制,只不过注意力完全赋给了局部最大的那个值;

2015年出现了ResNet,后继2017年出现DenseNet(以上内容回顾Pytorch笔记本第八课),ResNet的特征融合是特征的元素相加,残差结构减轻了梯度消失vanishing-gradient问题,同时加强了特征的传递,DenseNet的每层卷积输出都会沿着通道拼接前面所有卷积层的输出特征,进一步减轻梯度消失和加强特征传递,更有效地利用了特征;

现在补充2019年提出的思想CSPNet:Cross Stage Partial Net,CSP的思想是沿着张量的通道维度将部分特征留下,剩余特征用于卷积,在最后把之前留下的那一部分特征(partial)拼接到输出上;

上图(a)是标准的DenseNet,可看到每层卷积输出都拼接了前面卷积的输出张量,最后将输出张量传递到Transition Layer调整通道数,Transition Layer就是一个简单的 kernelsize=1×1kernelsize=1\times 1kernelsize=1×1 卷积层;图(b)是融入了CSP思想的DenseNet,可看出保留了一部分特征在最后拼接到DenseBlock的输出张量上,然后进行Transition操作;
CSP保留部分特征在最后进行拼接,这样做可以适当减少学习负担,让模型更易于在嵌入式设备上部署,另外,原始特征的融合加强了CNN的表达能力;

如果将CNN用于图像分类,对比一下,图神经网络GNN可以进行图分类,比如:人脑的各个区域可以由节点表示,节点之间不同的关系反映大脑的意识传递,不同时刻下,对人脑的图结构进行图分类,就可以获知该大脑想要执行什么动作(action);

图卷积神经网络

GNN数据集

在了解图卷积神经网络(GCN,Graph Convolution Networks)前,先认识GNN常用的数据集:

  • KarateClub:数据为无向图,来源于论文An Information Flow Model for Conflict and Fission in Small Groups
  • TUDataset:包括58个基础的分类数据集集合,数据都为无向图,如“IMDB-BINARY”,“PROTEINS”等,来源于TU Dortmund University
  • Planetoid:引文网络数据集,包括“Cora”, “CiteSeer” and “PubMed”,数据都为无向图,来源于论文Revisiting Semi-Supervised Learning with Graph Embeddings,节点代表文档,边代表引用关系
  • CoraFull:完整的“Cora”引文网络数据集,数据为无向图,来源于论文Deep Gaussian Embedding of Graphs: Unsupervised Inductive Learning via Ranking,节点代表文档,边代表引用关系
  • Coauthor:共同作者网络数据集,包括“CS”和“Physics”,数据都为无向图,来源于论文Pitfalls of Graph Neural Network Evaluation。节点代表作者,若是共同作者则被边相连。学习任务是将作者映射到各自的研究领域中
  • Amazon:亚马逊网络数据集,包括“Computers”和“Photo”,数据都为无向图,来源于论文Pitfalls of Graph Neural Network Evaluation。节点代表货物,边代表两种货物经常被同时购买。学习任务是将货物映射到各自的种类里
  • PPI:蛋白质-蛋白质反应网络,数据为无向图,来源于论文Predicting multicellular function through multilayer tissue networks
  • Entities:关系实体网络,包括“AIFB”, “MUTAG”, “BGS” 和“AM”,数据都为无向图,来源于论文Modeling Relational Data with Graph Convolutional Networks
  • BitcoinOTC:数据为有向图,包括138个“who-trusts-whom”网络,来源于论文EvolveGCN: Evolving Graph Convolutional Networks for Dynamic Graphs

GNN是一个广泛的概念,GCN是将卷积思想(邻域聚合)引入GNN,GCN常用于在图数据中解决节点分类问题;例如引文网络,只有部分节点具有已知标签,每个节点都有其属性(特征):

CNN的邻域聚合对象是规则的张量,GCN的处理对象是当前节点以及其周围直接相连的节点,对比卷积网络,一个节点及其周围相连的节点就是整个图中的一个局部特征:

上图(b)中看出,GCN正在处理一个红色节点,先获取到其邻居,然后将这些局部节点的特征融合,进行全连接网络一样的变换(与张量WWW点积),得到当前节点的另一种特征表达,这种表达中包含了该节点的高层语义信息,从而完成节点的分类;

和卷积神经网络一样,GCN也有感受野,比如从一阶邻居节点逐步扩大至二阶邻居节点范围,下图(a)是CNN的感受野变化示意图,图(b)是GCN的感受野变化示意图:

图的表示

图数据不同于图像张量的规则性,每个节点的邻居节点数量是不固定的,所以需要先用固定的数据形态表达图,首先了解邻接列表Adjacency List:

如上图所示,存在一个有向图(无向图也是特殊的有向图),现在记录每个节点指向的邻居节点,从而获得该图的邻接列表,虽然邻接列表可以描述图,但依然不利于使用机器进行计算,所以考虑邻接矩阵Adjacency Matrix;

现存在一个图GGG,共nnn个节点,从v1v_{1}v1vnv_{n}vn,定义AAA为该图的邻接矩阵,AAA的形状为(n,n)(n,n)(n,n),其元素为ai,ja_{i,j}ai,j,如果存在节点viv_{i}vi指向vjv_{j}vj,则记录:ai,j=1a_{i,j}=1ai,j=1;否则ai,j=0a_{i,j}=0ai,j=0;回顾第一课,无向图的边是无向边,即两个节点是互相指向,因此无向图的邻接矩阵应该关于对角线对称;比如以下两个图,一个是无向图,一个是有向图,其对应的邻接矩阵为:

另外补充度矩阵Degree Matrix,度矩阵是对角阵,对角线上的元素为各个顶点的度,节点viv_{i}vi的度表示和该节点相关联的边的数量,对于有向图,节点viv_{i}vi的度分为节点viv_{i}vi的出度和入度,即从节点viv_{i}vi出去的有向边的数量和进入节点viv_{i}vi的有向边的数量;

对于无向图,节点的度直接记录其关联的边数量,如果一个节点存在自己关联自己情况,关联边数量应该为2,则度为2:

度矩阵记为DDD,形状同样是(n,n)(n,n)(n,n),其对角线才有值di,i=deg(vi)d_{i,i}=deg(v_{i})di,i=deg(vi),其他位置值为0;比如以下无向图和其对应的度矩阵:

GCN

为了在图数据上进行类似卷积一样的局部信息聚合,最简单的方式是:
Z=σ(AXW+b)Z=\sigma (AXW+b)Z=σ(AXW+b)
GGGnnn个节点,XXX是所有节点特征组成的张量(n,cn,cn,c),ccc是每个节点的特征维数,AAA是图的邻接矩阵(n,nn,nn,n),W,bW,bW,b是待学习的参数,参数WWW的形状为(c,h)(c,h)(c,h)hhh代表变换后输出特征的维数,经过σ\sigmaσ非线性变换得到各个节点组合的输出张量ZZZZZZ的形状为(n,h)(n,h)(n,h),通常ZZZ具有高层语义信息;

考虑以下图数据:

直接使用邻接矩阵AAA与特征张量XXX表达为AXAXAX,其形状为(n,c)=(5,3)(n,c)=(5,3)(n,c)=(5,3)AXAXAX代表了融合图结构后的特征信息,第1行第1列的值由邻接矩阵第1行与特征矩阵第1列点积得到,同理,第1行第2列的值由邻接矩阵第1行与特征矩阵第2列点积得到,可见AXAXAX的第1行为节点A的邻居(节点E)的特征信息,AXAXAX的第2行为节点B的邻居(节点E和节点D融合)的特征信息,后面的数据同理;

使用张量WWWAXAXAX进行线性变换,由于AXAXAX的每一行已经存储了节点的邻域信息,所以AXWAXWAXW相当于在对局部信息进行操作,即实现了卷积的思想;

但当前的表达AXAXAX存在问题,对于无自关联的节点,邻接矩阵的对角线值为0,于是AXAXAX会丢失当前节点自身的特征信息,只剩下其邻居节点的特征信息;为了解决这个问题,对邻接矩阵进行操作:
A~=A+λI\widetilde{A}=A+\lambda IA

=A+λI
通常令λ=1\lambda=1λ=1,由于单位矩阵对角线值为1,其余值为0,与邻接矩阵相加后正好弥补了节点自身信息丢失的问题,系数λ\lambdaλ决定了节点自身信息的重要程度;

当使用A~\widetilde{A}A

时,改变了图间节点的关系,所以根据新的图更新度矩阵DDD,此处虽然节点自关联,度的增量可以是2,也可以是1,更新后的度矩阵记为D~\widetilde{D}D



使用到度矩阵是为了对数据的尺度进行缩放,可以表达为:
D~−1A~X\widetilde{D}^{-1}\widetilde{A}XD

1
A

X

A~\widetilde{A}A

的第 iii 行将会被D~−1\widetilde{D}^{-1}D

1
的元素d−1~i,i\widetilde{d^{-1}}_{i,i}d1

i,i
缩放,度矩阵体现了节点被其他节点的关联程度,一个节点与其他节点的关联程度越强,度数越大,信息融合的值越大,通过值大小与之成反比的D~−1\widetilde{D}^{-1}D

1
,计算D~−1A~X\widetilde{D}^{-1}\widetilde{A}XD

1
A

X
时,可以平衡节点之间的特征尺度,从而得到数据尺度相差不大的特征矩阵,更有利于神经网络学习;

上面的形式D~−1A~X\widetilde{D}^{-1}\widetilde{A}XD

1A

X中,D~−1\widetilde{D}^{-1}D

1
只缩放了A~\widetilde{A}A

的行,忽略了缩放A~\widetilde{A}A

的列,直观地,可以改成:
D~−1A~D~−1X\widetilde{D}^{-1}\widetilde{A}\widetilde{D}^{-1}XD

1
A

D

1
X

这样之后,低度的节点将会对邻居产生相对更多的影响,高度的节点在众多邻居上分散影响,降低了对某个具体邻居的影响;以上过程相当于对A~\widetilde{A}A

进行了两次缩放,一次对行进行,一次对列进行,为了将其缩放至一个合适的程度,改成:
D~−12A~D~−12X\widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}}XD

21
A

D

21
X

A^=D~−12A~D~−12\widehat{A}=\widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}}A

=
D

21
A

D

21
,由此可以得到一层图卷积神经网络:
Z=σ(A^XW+b)=σ(D~−12A~D~−12XW+b)Z=\sigma (\widehat{A}XW+b)=\sigma (\widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}}XW+b)Z=σ(A

XW+
b)=σ(D

21
A

D

21
XW+
b)

  • 其中,D~−12\widetilde{D}^{-\frac{1}{2}}D

    21
    A~\widetilde{A}A

    的形状均为(n,n)(n,n)(n,n)
  • XXX是所有节点特征组成的张量,形状为(n,c)(n,c)(n,c)ccc是每个节点的特征维数;
  • 参数WWW的形状为(c,h)(c,h)(c,h)hhh代表变换后输出特征的维数;
  • 经过σ\sigmaσ非线性变换得到各个节点组合的输出张量ZZZZZZ的形状为(n,h)(n,h)(n,h)ZZZ具有高层语义信息;

直观地,图卷积神经网络的层数也可以加深,比如加深至两层,令W(1)W^{(1)}W(1)形状为(c,h)(c,h)(c,h)W(2)W^{(2)}W(2)形状为(h,f)(h,f)(h,f),假设节点的类别数为fff
Z=softmax(A^[ReLU(A^XW(1)+b(1))]W(2)+b(2))Z=softmax(\widehat{A}[ReLU (\widehat{A}XW^{(1)}+b^{(1)})]W^{(2)}+b^{(2)})Z=softmax(A

[ReLU(A

XW(1)+b(1))]W(2)+b(2))
节点的分类可以使用交叉熵计算损失:
loss=−∑l∈YL∑i=1ftargetl,ilog(Zl,i)loss=-\sum_{l\in Y_{L}}\sum_{i=1}^{f}target_{l,i}log(Z_{l,i})loss=lYLi=1ftargetl,ilog(Zl,i)

  • 其中,YLY_{L}YL代表所有具有已知类别(标签)的节点,图数据的节点共有fff类;
  • targetl,itarget_{l,i}targetl,i即代表YLY_{L}YL中第lll个节点,其类别为第iii类;
  • Zl,iZ_{l,i}Zl,i即图神经网络的输出,反映了预测YLY_{L}YL中第lll个节点,并且其类别为第iii类的概率

GNN的基准化:Benchmarking Graph Neural Networks

GNN模型广泛,但缺乏一个标准的基准,以及在大型数据集上开展的一致性实验,Benchmarking Graph Neural Networks 一文在GNN的基准化上做出了贡献,作者提出了可重现的GNN基准框架,并为研究人员提供了方法以便利地添加新的数据集和模型,地址:Benchmarking Graph Neural Networks

基准框架可以应用于数学中的新型中等规模图形数据集建模,可在计算机视觉,化学,组合优化等问题上设计有效的图神经网络;实现了图卷积,各向异性扩散,残差连接和归一化等层,这些层是开发健壮且可扩展的GNN通用构建模块

第二课.图卷积神经网络相关推荐

  1. 《DeepLearning.ai》第十课:卷积神经网络(Convolutional Neural Networks)

    第十课:卷积神经网络(Convolutional Neural Networks) 1.1 计算机视觉(Computer vision) 通常如果处理大图用传统的神经网络需要特别大的输入,因此需要大量 ...

  2. 图卷积神经网络(GCN)入门

    GCN是从CNN来的 CNN成功在欧式数据上:图像,文本,音频,视频 图像分类,对象检测,机器翻译 CNN基本能力:能学到一些局部的.稳定的结构,通过局部化的卷积核,再通过层级堆叠,将这些局部的结构变 ...

  3. 举个例子,如何用GCN图卷积神经网络实现摔倒监测?

    作者 | 李秋键 责编 | 寇雪芹 头图 | 下载于视觉中国 引言 近几年来深度学习的发展越来越火热,其中最为典型的就是半监督学习的新研究进展GCN.由Kipf和Welling提出的GCN被证明是一种 ...

  4. 基因疾病关联的图卷积神经网络

    基因疾病关联的图卷积神经网络 本文要介绍的是沙特阿卜杜拉国家科技大学高兴副教授课题组发表的一篇关于图卷积神经网络的基因疾病关联预测的论文.对候选基因排序对于遗传疾病基于基因的诊断是至关重要的.然而,由 ...

  5. 0.0 目录-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

  6. 0.0 目录-深度学习第二课《改善神经网络》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

  7. 从文本分类来看图卷积神经网络

        " 图神经网络火了这么久,是时候掌握它了." 本文包括以下内容,阅读时间10min 图神经网络是什么意思 文本如何构建图 图卷积神经网络 源代码实现 图卷积神经网络最新进展 ...

  8. 标题:浅析图卷积神经网络

    今天想和大家分享的是图卷积神经网络.随着人工智能发展,很多人都听说过机器学习.深度学习.卷积神经网络这些概念.但图卷积神经网络,却不多人提起.那什么是图卷积神经网络呢?简单的来说就是其研究的对象是图数 ...

  9. 图神经网络(一)图信号处理与图卷积神经网络(3)图傅里叶变换

    图神经网络(一)图信号处理与图卷积神经网络(3)图傅里叶变换 傅里叶变换是数字信号处理的基石,傅里叶变换将信号从时域空间转换到频域空间,而频域视角给信号的处理带来了极大的遍历.围绕傅里叶变换,信号的滤 ...

最新文章

  1. VS2010 重命名文件:源文件名和目标文件名相同 的解决方案
  2. 截图 从图片中取一部分
  3. 一般编译器错误_Java程序员最容易犯的10个错误
  4. 透视惠普“返修机事件”
  5. Angular应用初始化APP_INITIALIZER
  6. python接口测试实战_Python接口测试实战01:七种武器
  7. Ubuntu关于apt-get remove与apt-get purge
  8. CentOS6.7安装Open***服务端
  9. 编译nginx源码包
  10. SaaS商城是什么,赢利点在哪儿?
  11. Remote使用出现的问题及解决办法
  12. python遇到错误跳过_python 如何跳过异常继续执行
  13. 张俊林:ChatGPT 会成为下一代搜索引擎吗
  14. 使用Vscode调试vue代码
  15. Oracle exp导出
  16. 【美团】职级、薪酬、绩效全认知
  17. java中接口可不可以继承一般类,为什么?
  18. 3999美元掀价格战,Velodyne宣布16线激光雷达降价50%
  19. dede 获取当前栏目的上一级栏目名称,和链接
  20. 安卓系统双屏异显_Android 双屏异显

热门文章

  1. git push VS git fetch
  2. 碾压ES和MongoDB,RedisJson横空出世!
  3. 6000字详解数据仓库建设
  4. 妥~阿里程序员常用的 15 款开发者工具
  5. 为什么面试官都爱问源码?这几个公众号告诉你!
  6. 从 LRU Cache 带你看面试的本质
  7. 强势推荐10款windows端的实用软件,鲜为人知却非常强大!
  8. js 动态校验开始结束时间
  9. Docker对AUFS的使用
  10. 15 Java面试之JDBC