GCN理解

340 阅读3分钟

论文题目:Semi-Supervised Classification with Graph Convolutional Networks
时间:2017
来源:ICLR
论文链接:arxiv.org/abs/1609.02…
代码链接(TensorFlow):github.com/tkipf/gcn
代码复现(Pytorch):github.com/tkipf/pygcn

目录

1. 相关工作

1.1 GNN

GNN 的作用

提取图结构的数据的特征

GNN的局限性

  • 对于固定节点,原始GNN迭代更新节点的隐藏状态是低效的。如果放宽了固定点的假设,我们可以设计一个多层的GNN来得到节点及其邻域的稳定表示。
  • GNN在迭代中使用相同的参数,而大多数流行的神经网络在不同的层中使用不同的参数,这是一种分层特征提取方法。此外,节点隐藏状态的更新是一个顺序过程,可以从RNN内核(如GRU 和 LSTM)中获益。
  • 在边上也有一些无法在原始GNN中建模的信息特征。此外,如何学习边的隐藏状态也是一个重要的问题。
  • 如果我们把焦点放在节点的表示上而不是图形上,就不适合使用固定点,因为在固定点上的表示的分布在数值上是平滑的,区分每个节点的信息量也比较少。

1.2 本文的创新点

  • 对直接操作于图结构数据的网络模型根据频谱图卷积使用一阶近似简化计算的方法,提出了一种简单有效的层式传播方法
  • 图结构神经网络模型可用于快速可扩展式的处理图数据中节点半监督分类问题
    大白话解释:GNN没有考虑到每个节点对于邻居的影响力大小不同,GCN邻居取平均之后再相加

1.3 相关论文指路

GCN的前期工作GNN:The graph neural network model
GCN的改进工作GAT(加入Attention):Graph Attention Networks

1.4 课程指路

CS224W:图机器学习( 中英字幕 | 2019秋)

2. GCN 网络

2.1 相关数学基础

  1. 邻接矩阵
  2. 正定矩阵: λ i \lambda_i λi​ 全为正

2.2 整体思路

在这里插入图片描述
加上单位矩阵是你周围的节点的特征加上你的特征(人的工资加上啊你的工资)
GCN 就是在邻居加入的时候除以 D i i D j j \sqrt {D_{ii}D_{jj}} Dii​Djj​ ​,来减少类似于马云这种拥有大的关系网的人对周边人的影响

2.3 公式推导

主要就是提出了一个下分层传播的公式

H ( l + 1 ) = σ ( D − 1 2 A D − 1 2 H ( l ) W ( l ) ) H ^ {(l+1)} = \sigma( D^{-\frac{1}{2}}AD^{-\frac{1}{2}}H^{(l)}W^{(l)} ) H(l+1)=σ(D−21​AD−21​H(l)W(l))

σ \sigma σ:激活函数
A = A + I N A=A+I_N A=A+IN​:A 是无线图 G的邻接矩阵 I N I_N IN​,加 I N I_N IN​是需要加入自己的信息
D i i = ∑ j A i j D_{ii} = \sum_jA_{ij} Dii​=∑j​Aij​:数组只在ii有正数,所以是正定矩阵