GCN-Graph Convolutional Networks

背景

CNN:

  • 图像识别的对象是图像,二维的结构 => 使用CNN模型提取图片特征
  • CNN处理的图像或者视频中像素点(pixel)是排列成成很整齐的矩阵
  • CNN的核心在于它的kernel,也就是一个个小窗口,在图片上平移,通过卷积的方式来提取特征
  • 关键在于图片结构上的平移不变性,即一个小窗口无论移动到图片的哪一个位置,其内部的结构都是一模一样的,因此CNN可以实现参数共享
    在这里插入图片描述

CNN一般作用于欧式空间,无法作用于非欧式空间,具有以下几个特点:

  • 权重共享:同一个卷积核可以作用于不同的位置
  • 局部性:欧式空间可以简洁的支持卷积核(直接根据卷积公式计算卷积结果即可),卷积核的大小一般远小于输入信号的大小
  • 多尺度:CNN往往包含下采样,可以减少参数,并获得更大的感受野(receptive field)

GCN背景:

  • 自然语言处理操作对象是序列信息,一维的结构 => 使用RNN模型针对序列结构进行操作,使得序列前后的信息互相影响,很好地捕捉序列的特征
  • 图片或者自然语言,都属于欧式空间的数据 => 有维度的概念,数据的特点是结构规则
  • 现实生活中,很多是不规则的数据结构,典型的就是图结构,或称拓扑结构,如社交网络、化学分子结构、知识图谱等等
  • 即使是语言,实际上其内部也是复杂的树形结构,也是一种图结构
  • 针对图片,在做目标识别的时候,我们关注的实际上只是二维图片上的部分关键点,这些点组成的也是一个图的结构
GCN:
  • Graph Convolutional Networks,图卷积神经网络,实际上跟CNN的作用一样,就是一个特征提取器,只不过它的对象是图数据
  • GCN精妙地设计了一种从图数据中提取特征的方法,从而让我们可以使用这些特征去对图数据进行处理:
  • 节点分类(node classification)
  • 图分类(graph classification)
  • 边预测(link prediction)
  • 图嵌入表示(graph embedding)
  • GCN应用已经渗透在CV,NLP,RS中

在这里插入图片描述
相关:https://arxiv.org/abs/1609.02907

特点:
  • 具有可扩展的优点,能够适应网络的变化
  • 相较于起传统的深度学习,图神经网络由于在关系数据挖掘方面有巨大的潜力,正成为学术界和工业界投入研发的热点,比如商品推荐,金融风控,聊天机器人中的语义分析及意图识别
GCN算法:

对于一个图网络G=(V,E),有N个节点,每个节点都有自己的特征,目标是要学习图上的信号或特征的一个映射
在这里插入图片描述

邻接矩阵-A

保存的是Node之间的连接的性:
在这里插入图片描述

度矩阵-D

保存每个Node的边的数量,对角矩阵
在这里插入图片描述

拉普拉斯矩阵:L

L=D-A,之所以用D - A,是为了规范化,每一行每一列的和为0
在这里插入图片描述

常用的拉普拉斯矩阵有3种:
  • Combinatorial Laplacian
    在这里插入图片描述
  • Symmetric normalized Laplacian,GCN采用
    在这里插入图片描述
  • Random walk normalized Laplacian
    在这里插入图片描述
使用拉普拉斯矩阵的好处:
  • 拉普拉斯是对称矩阵,可以进行特征分解(谱分解)
  • 只在中心顶点和一阶相连的顶点上(1-hop neighbor)有非0元素,其余之处均为0
  • 通过拉普拉斯算子与拉普拉斯矩阵进行类比

GCN算法使用:

对于一个图网络G=(V,E),有N个节点,每个节点都有自己的特征,目标是要学习图上的信号或特征的一个映射

GCN模型的输入为矩阵X和A:

  • 矩阵X,表示这些节点特征,N×D维矩阵
  • 矩阵A,表示各个节点之间的关系,N×N维矩阵,也称为邻接矩阵(adjacency matrix)

GCN是一个神经网络层,层与层之间的传播方式
在这里插入图片描述

  • A ~ = A + I \widetilde {A}=A+I A =A+I, I是单位矩阵
  • D ~ \widetilde {D} D A ~ \widetilde {A} A 的度矩阵(degree matrix),公式为 : D i i ~ = ∑ A ~ i j \widetilde {D_{ii}}=\sum\widetilde {A}_{ij} Dii =A ij
  • H是每一层的特征,对于输入层的话,H就是X
  • σ是非线性激活函数
  • D ~ − 1 2 A ~ D ~ − 1 2 \widetilde {D}^{ -\frac{1}{2}}\widetilde {A}\widetilde {D}^{ -\frac{1}{2}} D 21A D 21可以提前算好,固定不变
  • 公式解释:http://tkipf.github.io/graph-convolutional-networks/
  • 每一层GCN的输入都是邻接矩阵A和node的特征H,如果我们直接做一个内积,乘一个参数矩阵W,再激活一下,就相当于一个简单的神经网络层
    在这里插入图片描述

实验证明,使用这个简单的神经网络层,就已经很强大了
不过这个简单模型有2个局限性:

局限1,只使用A的话,由于A的对角线上都是0,所以在和特征矩阵H相乘的时候,只会计算一个node的所有邻居的特征的加权和,该node本身的特征却被忽略了
优化方法:可以做一个小改动,即给A加上一个单位矩阵I,这样就让对角线元素变成1了

局限2,A是没有经过归一化的矩阵,如果A与特征矩阵H相乘会改变特征原本的分布,产生一些不可预测的问题

  • 对A做一个标准化处理,首先让A的每一行加起来为1,然后对A乘以 D − 1 D^{-1} D1 ,D为度矩阵,可以解决局限2
  • 进一步把 D − 1 D^{-1} D1 拆开与A相乘,得到一个对称且归一化的矩阵: D ~ − 1 2 A ~ D ~ − 1 2 \widetilde {D}^{ -\frac{1}{2}}\widetilde {A}\widetilde {D}^{ -\frac{1}{2}} D 21A D 21
  • 结合这两种改进的方式,得到:
    在这里插入图片描述
    这里 A ~ = A + I \widetilde {A}=A+I A =A+I, I是单位矩阵, D ~ \widetilde {D} D A ~ \widetilde {A} A 的度矩阵(degree matrix)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值