本文是根据我最近学习图卷积神经网络学习的内容进行记录,总结了来自知乎、以及集智学园等多个平台,整理分析并加个人思考得来的。如果有不正确的地方大家批评指正。
最早的图神经网络经典论文,可以追溯到2017年Thomas N. Kipf发表在ICLR题为Semi-Supervised Classification with Graph Convolutional Networks,代码在Github链接.
以往的进展
- Spectral Graph theory,即将傅里叶变换扩展到图的谱域
- Deep learning on Graphs:
2.1 Laplacian regurlarization in loss function
2.2 Graph Embedding: Node2Vec, LINE
2.3 Graph Autoencoders: SDNE
2.4 Graph Spectral,即图上进行谱分析,进行卷积
解决的科学问题是什么
难以通过CNN在图上定义与图像上始终全局可以使用的局部卷积核。
解决问题的思路是什么?GCN给出了直观的解释
H ( l + 1 ) = σ ( D ^ − 1 2 A ^ D ^ − 1 2 H ( l ) W ( l ) ) H^{(l+1)}=σ(\hat{D}^{-\frac{1}{2}}\hat{A}\hat{D}^{{-\frac{1}{2}}}H^{(l)}W^{(l)}) H(l+1)=σ(D^−21A^D^−21H(l)W(l))
- 对邻居节点的信息进行聚合: H ( l + 1 ) = A H l H^{(l+1)}=AH^{l} H(l+1)=AHl,但是由于自身向量为0,未能将自己的权重进行相加
- 对邻居和自己加权求和: H ( l + 1 ) = A ^ H l H^{(l+1)}=\hat{A}H^{l} H(l+1)=A^Hl、 A ^ = A + I \hat{A}=A+I A^=A+I因此通过添加单位矩阵将自己的元素特征也进行计算
- 加完之后做平均: H ( l + 1 ) = D ^ − 1 A ^ H ( l ) H^{(l+1)}=\hat{D}^{-1}\hat{A}H^{(l)} H(l+1)=D^−1A^H(l)
- 感觉太简单,加个track: H ( l + 1 ) = D ^ − 1 2 A ^ D ^ − 1 2 H ( l ) H^{(l+1)}=\hat{D}^{-\frac{1}{2}}\hat{A}\hat{D}^{{-\frac{1}{2}}}H^{(l)} H(l+1)=D^−21A^D^−21H(l)
- DNN的权重矩阵也要: H ( l + 1 ) = D ^ − 1 2 A ^ D ^ − 1 2 H ( l ) W ( l ) H^{(l+1)}=\hat{D}^{-\frac{1}{2}}\hat{A}\hat{D}^{{-\frac{1}{2}}}H^{(l)}W^{(l)} H(l+1)=D^−21A^D^−21H(l)W(l)
- 还得再来个激活函数:
H
(
l
+
1
)
=
σ
(
D
^
−
1
2
A
^
D
^
−
1
2
H
(
l
)
W
(
l
)
)
H^{(l+1)}=σ(\hat{D}^{-\frac{1}{2}}\hat{A}\hat{D}^{{-\frac{1}{2}}}H^{(l)}W^{(l)})
H(l+1)=σ(D^−21A^D^−21H(l)W(l))
注: D D D表示,每个节点的度(Degree), D D D是对角度矩阵。 D − 1 D^{-1} D−1表示将对角线的值取倒数, D − 1 2 D^{-\frac{1}{2}} D−21表示在 D − 1 D^{-1} D−1开根号。
GCN卷积公式的数学推导
卷积与傅里叶变换的关系:两个函数的卷积可以用他们的傅里叶逆变换表示:
(
f
∗
h
)
(
x
)
=
1
2
π
∫
f
^
(
λ
)
h
^
(
λ
)
e
i
λ
x
d
λ
(f*h)(x)=\frac{1}{2\pi}\int\hat{f}(λ)\hat{h}(λ)e^{iλx}dλ
(f∗h)(x)=2π1∫f^(λ)h^(λ)eiλxdλ 改变定义域:时间轴
→
→
→二维网格,那么图片可以看作是网格上的信号。一张图片:
f
f
f,一个卷积核:
h
h
h。CNN中的卷积操作==
f
f
f与
h
h
h的傅里叶变换操作
*计算卷积时,可以不用显式定义卷积核!
Graph上的傅里叶变换:如何确定变换的基(base)函数,通过时域上的傅里叶变换
e
−
i
λ
t
e^{-iλt}
e−iλt
在GCN中的拉普拉斯算子是拉普拉斯矩阵L,以图的特征向量作为基,类比傅里叶变换中的基函数
e
−
i
λ
t
e^{-iλt}
e−iλt
U
U
U特征向量组成的矩阵
实验
模型公式
Z = f ( X , A ) = s o f t m a x ( A ^ ⋅ R e L u ( A ^ X W ( 0 ) ) W ( 1 ) ) Z=f(X,A)=softmax(\hat{A}·ReLu(\hat{A}XW^{(0)})W^{(1)}) Z=f(X,A)=softmax(A^⋅ReLu(A^XW(0))W(1))
W 权 重 矩 阵 、 A 邻 接 矩 阵 、 X 输 入 特 征 矩 阵 W权重矩阵、A邻接矩阵、X输入特征矩阵 W权重矩阵、A邻接矩阵、X输入特征矩阵
模型框架
模型数据集
前三个数据集Citeseer、Cora、Pubmed都是论文引用的数据集,为了体现半监督,前三个数据集每个类只选用20个labels,通过loss只在Cora优化超参数;NELL中每类一个节点为label。