GCN

GCN介绍

来自https://www.chainnews.com/articles/216961050590.htm

每个节点有自己的特征,假如$N$个节点,每个节点特征维度为$D$,特征矩阵($X$)的形状就是$N\times D$。同时有一个邻接矩阵$A$,形状是$N\times N$。

层之间的传播方式是:$H^{(l+1)}=\sigma\left(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)}\right)$

  • $\tilde{A}=A+I$
  • $\tilde{D}{i, i}=\sum\limits_j \tilde{A}{i, j}$
  • 第一层的话,$H$就是$X$

GCN里面的$\tilde{A}$的处理是为了能够处理节点自己本身的特征,$A$里面本身对角线是0就导致用$A$无法捕获节点本身的特征。

GCN的基本思路

来自 https://www.zhihu.com/question/54504471/answer/332657604

CNN无法处理Non Euclidean Structure的数据,无法在图上用一个相同尺寸的卷积核进行卷积;但是又想要提取空间特征进行机器学习。

提取空间特征可能用:

  • Vertex domain(spatial空间的 domain):找neighbors,neighbors的attributes就是channels
  • Spectral domain(谱的)借助于图的拉普拉斯矩阵的特征值和特征向量来研究图的性质
    • 可能是$L=D-A$,$L^{sys}=D^{-\frac{1}{2}}LD^{-\frac{1}{2}}$,$L^{rw}=D^{-1}L$
    • 拉普拉斯矩阵是对称矩阵,可以进行特征分解(谱分解);拉普拉斯矩阵只在中心顶点和一阶相连的顶点上(1-hop neighbor)有非0元素,其余之处均为0;与拉普拉斯算子可以进行类比(https://zhuanlan.zhihu.com/p/85287578
      • 拉普拉斯算子可以从传播的角度考虑。节点$i$受到的影响其实是 所有邻居与它的差 的综合,所以是$\Delta f_{i}=\sum_{j \in N_{i}} W_{i j}\left(f_{i}-f_{j}\right)$,进而写成$d_if_i-w_i\cdot f$。 拉普拉斯矩阵中的第$i$行实际上反应了第$i$个节点在对其他所有节点产生扰动时所产生的增益累积

理解GCN

如何理解 Graph Convolutional Network(GCN)? - superbrother的回答 - 知乎
https://www.zhihu.com/question/54504471/answer/332657604

离散卷积本质上就是加权求和。

Spectral graph theory:借助于图的拉普拉斯矩阵的特征值和特征向量来研究图的性质

常用的拉普拉斯矩阵实际有三种

(1)拉普拉斯矩阵是对称矩阵,可以进行特征分解(谱分解),这就和GCN的spectral domain对应上了

(2)拉普拉斯矩阵只在中心顶点和一阶相连的顶点上(1-hop neighbor)有非0元素,其余之处均为0

(3)通过拉普拉斯算子与拉普拉斯矩阵进行类比(详见第6节)

系列文章GNN-algorithms

https://github.com/wangyouze/GNN-algorithms

斯坦福Machine Learning with Graphs学习笔记

Pytorch实现

https://github.com/FighterLYL/GraphNeuralNetwork/tree/master/chapter5