图神经网络之图卷积网络——GCN
图卷积网络——GCN
一、前置基础知识回顾
详细前置基础知识请看:
图的基本概念

图是一种统一描述复杂事物的语言。
在实际生活中,很多事物都可以用图结构来表示,比如社交关系、化学分子结构、知识图谱、推荐系统等等。
构造图神经网络的目的

做图网络的目的,当然就是希望能够最终在图上做一些相关的任务。
-
假如我们希望做节点相关的任务,就可以通过 Graph Encoder,在图上学习到节点特征,再利用学习到的节点特征做一些相关的任务,比如节点分类、关系预测等等;
-
而同时,我们也可以在得到的节点特征的基础上,做 Graph Pooling 的操作,比如加权求和、取平均等等操作,从而得到整张图的特征,再利用得到的图特征做图相关的任务,比如图匹配、图分类等。
训练方式

图游走类算法主要的目的是在训练得到节点 embedding 之后,再利用其做下游任务,也就是说区分为了两个阶段。
对于图卷积网络而言,则可以进行一个端到端的训练,不需要对这个过程进行区分,那么这样其实可以更加针对性地根据具体任务来进行图上的学习和训练。
二、回顾卷积神经网络在图像及文本上的发展
图像上的卷积网络

在图像上的二维卷积,其实质就是卷积核在二维图像上平移,将卷积核的每个元素与被卷积图像对应位置相乘,再求和,得到一个新的结果。
其实它有点类似于将当前像素点和周围的像素点进行某种程度的转换,再得到当前像素点更新后的一个值。
文本上的卷积网络

它的本质是利用了一维卷积,因为文本是一维数据,在我们已知文本的词表示之后,就在词级别上做一维的卷积。
其本质其实和图像上的卷积没有什么差别。
(注:卷积核维度和红框维度相同,2 * 6就是2 * 6)
图卷积网络的必要性

文本和图像,它们都是排列整齐的数据,也就是规则性数据。这类规则数据可以直接用 CNN 算法进行一个学习。
但是对于不规则数据,比如树、图,我们应该使用图卷积网络。
三、图卷积网络
图卷积网络的全称为Graph Convolutional Network,即GCN

从图像卷积类比到图结构卷积
通过理解图像卷积,来对图结构卷积进行一个类比

图像卷积的本质其实非常简单,就是将一个像素点周围的像素,按照不同的权重叠加起来,当然这个权重就是我们通常说的卷积核。

其实可以把当前像素点类比做图的节点,而这个节点周围的像素则类比为节点的邻居,从而可以得到图结构卷积的简单的概念:
将一个节点周围的邻居按照不同的权重叠加起来
而图像上的卷积操作,与图结构上的卷积操作,最大的一个区别就在于:
- 对于图像的像素点来说,它的周围像素点数量其实是固定的;
- 但是对于图而言,节点的邻居数量是不固定的。
图像卷积
- 将一个像素点周围的像素按照不同的权重叠加起来。
图结构卷积
- 将一个节点周围的邻居按照不同的权重叠加起来。
图卷积网络的计算公式


其中,红框内是图卷积网络的核心公式,接下来看看具体这些字母代表的含义。
邻接矩阵
A表示的是邻接矩阵

邻接矩阵的对角线上都为1,这是因为添加了自环边,这也是这个公式中使用的定义,其他情况下邻接矩阵是可以不包含自环的。(包含了自环边的邻接矩阵)
度矩阵
D 其实是度矩阵
度矩阵就是将邻接矩阵上的每一行进行求和,作为对角线上的值。
而由于我们是要取其-1/2的度矩阵,因此还需要对对角线上求和后的值做一个求倒数和开根号的操作,因此最后可以得到右边的一个矩阵运算结果。
理解计算公式
为了方便理解,我们可以暂时性地把度矩阵在公式中去掉:

首先来理解,邻接矩阵和我们的节点表示相乘的物理意义是什么。
为了得到 H ( l + 1 ) H^{(l+1)} H(l+1)的第0行,我们需要拿出A的第0行与 H ( l ) H^{(l)} H(l)相乘,这是矩阵乘法的概念。
接下来就是把计算结果相乘再相加的过程。
这个过程其实就是消息传递的过程:

对于0号节点来说,将邻居节点的信息传给自身。
用消息传递的方式实现图卷积网络
这里有2个概念需要了解:
- Send: 源节点发送消息
- Recv: 目标节点接受消息
消息传递的步骤
1. 边上的源节点,往目标节点发送特征——Send

2. 目标节点对收到的特征进行聚合——Recv

一个例子理解消息传递的作用
假设你收到了4个人的评价,左边2位是你的好朋友,右边两位是与你关系不大的明星:
右边2位明星可能说了受众很广的评价,而你的好朋友比较了解你,对你说的都是客观的评价,那么,右边2位明星的评价对你来说就显得不那么重要了:
深入理解 A H ( l ) AH^{(l)} AH(l)

实际情况中,每个节点发送的信息所带的信息量应该是不同的。
图卷积网络将邻接矩阵的两边分别乘上了度矩阵,相当于给这个边加了权重。其实就是利用节点度的不同来调整信息量的大小。
这个公式其实体现了:
一个节点的度越大,那么它所包含的信息量就越小,从而对应的权值也就越小。
怎么理解这样的一句话呢,我们可以设想这样的一个场景。假如说在一个社交网络里,一个人认识了几乎所有的人,那么这个人能够给我们的信息量是比较小的。
也就是说,每个节点通过边对外发送相同量的信息, 边越多的节点,每条边发送出去的信息量就越小。
图卷积网络在 PGL 的实现
PGL把整个消息传递的过程同样区分为了 send 和 recv 过程,也就是发送消息,接收消息的过程。

用多层图网络完成节点分类任务
GCN算法全流程




最后,将最终获得的表示来作为我们最终的一个节点表示,进而利用分类器来做节点分类。
更多推荐
所有评论(0)