基于图像的卷积神经网络对输入的局部连接区域进行操作,但是这种局部区域是固定的,也就是通常说的 k × k k\times k k×k卷积核。对于图数据来说是没有办法直接利用CNN进行高效的处理的, 但是将图像看作一种特殊的图谱,就可以建立图数据与图像之间的联系,从而将CNN泛化到处理图数据。
原文:Attention-based Graph Neural Network for Semi-supervised Learning
【注:我没有看Graph Attention Networks和Attention-based Graph Neural Network for Semi-supervised Learning的实现,但是写完这篇文章之后,认为GAT是以一种宽泛的思想提出在图网络中加入attention机制,给出了一种很好的思路,没有指出具体地共享注意力机制,也就是相似性的计算方法,本文在GCN的基础上引入参数化的注意力引导机制,不仅利用每一层的特征输出以余弦相似性计算attention,并且每一层对attention有一个参数化处理(我还没弄清楚这个参数 β \beta β的作用),并且去除了GCN中的感知层】
图卷积神经网络(GCN)因此非常流行,GCN是一种用于图数据的神经网络结构,功能非常强大,即使随机初始化两层GCN也可以生成图网络节点有用的特征表示。例如:下图,摘自机器之心,表示一个两层的GCN根据左边图数据生成该图数据的二维特征表示,如右图,可以看到二维特征表示能够保存图数据节点的相对邻近性。本文根据图卷积网络到底怎么做,这是一份极简的Numpy实现以及基于attention的半监督GCN整理,以极简单的例子了解图卷积处理的过程。
以简单图结构分析GCN的传播层
基本形式
根据图神经网络综述指出,GCN有谱域图卷积和空域图卷积,本文基于空间GCN得到一份极简numpy实现,推导过程简单易懂。首先给出GCN 的基本过程
给定图 G=(V,E),GCN 的输入为:
- 特征矩阵 X X X【输入维度为 N × F 0 \mathrm{N} \times \mathrm{F}^{0} N×F0,其中N是图数据中的节点个数, F 0 \mathrm{F}^{0} F0表示每个节点的输入特征数。】
- 一个图结构的矩阵表征【维度为N*N】
例如,图的邻接矩阵A
这时GCN 的隐藏层为 H i = f ( H i − 1 , A ) H^{i}=f\left(H^{i-1}, A\right) Hi=f(Hi−1,A),其中 f f f表示一种传播规则, H 0 = X H^0 = X H0=X。每一个隐藏层 H i H^i Hi都对应一个维度为 N × F i \mathrm{N} \times \mathrm{F}^{\mathrm{i}} N×Fi的特征矩阵,该矩阵中的每一行都是某个节点的特征表征。在每一层中,GCN 会使用传播规则 f 将这些信息聚合起来,从而形成下一层的特征。这样一来,在每个连续的层中特征就会变得越来越抽象。在该框架下,GCN 的各种变体只不过是在传播规则 f f f 的选择上有所不同 【传播规则 f f f 范围比较广,包含特征传播,激活等】。
传播规则的简单示例,使用非线性激活函数σ
f ( H i , A ) = σ ( A H i W i ) \mathrm{f}\left(\mathrm{H}^{\mathrm{i}} ,\mathrm{A}\right)=\sigma\left(\mathrm{AH}^{\mathrm{i}} \mathrm{W}^{i}\right) f(Hi,A)=σ(AHiWi) 其中 W i W^i Wi是第 i i i层的权重矩阵,维度为 F i × F i + 1 F^{i} \times F^{i+1} Fi×Fi+1,即权重矩阵第二个维度的大小决定了下一层的特征数,由于这些权重在图中的节点间共享,该操作与卷积核滤波操作类似,σ 是非线性激活函数(如 ReLU 函数)。最后输出维度为 N × N × N × F i × F i + 1 N \times N \times N \times F^{i} \times F^{i+1} N×N×N×Fi×Fi+1—> N × F i + 1 N \times F^{i+1} N×Fi+1,也就是每个节点的特征由 F i F^i Fi变成 F i + 1 F^{i+1} Fi+1,更加抽象了。
在简单的层次上研究传播规则
上面给出GCN的基本传播过程就是 f ( H i , A ) = σ ( A H i W i ) \mathrm{f}\left(\mathrm{H}^{\mathrm{i}} ,\mathrm{A}\right)=\sigma\left(\mathrm{AH}^{\mathrm{i}} \mathrm{W}^{i}\right) f(Hi,A)=σ(AHiWi),为了用numpy模拟整个过程,理解传播规则,将在简单的层次上研究传播规则,这时令:
- i = 1,(约束条件 f f f 就是作用于输入特征矩阵的函数)
- σ 设置为恒等函数(也就是无任何作用的函数,即<