GNN(Graph Neural Network)
GNN是为了解决图(Graph)结构的数据,比如社交网络、分子结构、树
比如预测一个分子结构会不会发生突变
更形象的例子:
预测一个人是不是凶手,当然可以使用各种特征做分类。比如实验2 classification。但是还可以考虑的一个特征是人与人之间的联系
所以如何在预测一个人的类别时同时考虑和其他人关系,这就构成了图,GNN处理的就是这种结构,一种图结构
首先提出3个挑战:
- 如何利用结构和关系来帮助模型?
- 怎么处理大型图,比如有20k节点?
- 如果图很大,有可能不能所有的节点都有label,怎么处理?
首先第3个问题,可以找最近节点近似
我们知道卷积可以作用在以矩阵形式分布的存储结构上,典型的例子就是图片,那么如何作用在图上?
有2种解决方法:
- 将卷积(相关性)的概念推广到图>>基于空间的卷积(Spatial-based Convolution)
- 回到信号处理中卷积的定义>>频谱卷积(类似图像处理中的频域滤波?)
Spatial-based Convolution
Aggregate: 用 neighbor feature update 下一層的 hidden state(当然包括自己的feature)
Readout: 把所有 nodes 的 feature 集合起來代表整個 graph
NN4G (Neural Networks for Graph)
输入:
以求顶点v3为例,转成hidden layer,首先有个w
然后做Aggregate:
注意:还要加原本的x
Readout:
每层的节点加起来(求均值?),然后每层加起来
DCNN (Diffusion-Convolution Neural Network )
DCNN原理类似图像金字塔,叠加不同视野尺度,这里是叠加不同距离的邻居,个人理解
h
3
0
=
w
3
0
M
E
A
N
(
d
(
3
,
⋅
)
=
1
)
h_{3}^{0} \quad=w_{3}^{0} M E A N(d(3, \cdot)=1)
h30=w30MEAN(d(3,⋅)=1):
h
3
1
=
w
3
1
M
E
A
N
(
d
(
3
,
⋅
)
=
2
)
h_{3}^{1}=w_{3}^{1} M E A N(d(3, \cdot)=2)
h31=w31MEAN(d(3,⋅)=2)
节点的特征表示:
类似的还有DGC (Diffusion Graph Convolution),是直接加起来就结束了
MoNET (Mixture Model Networks)
节点之间相加是可以加权重的,每个邻居的重要性是不一样。
比如:
h
3
1
=
w
(
u
^
3
,
0
)
×
h
0
0
+
w
(
u
^
3
,
2
)
×
h
2
0
+
w
(
u
^
3
,
2
)
×
h
4
0
h_{3}^{1}=w\left(\hat{u}_{3,0}\right) \times h_{0}^{0}+w\left(\hat{u}_{3,2}\right) \times h_{2}^{0}+w\left(\hat{u}_{3,2}\right) \times h_{4}^{0}
h31=w(u^3,0)×h00+w(u^3,2)×h20+w(u^3,2)×h40
GAT (Graph Attention Networks)
类似MoNET,但是这里权重也是学到的:
GIN (Graph Isomorphism Network)
结论:
h
v
(
k
)
=
MLP
(
k
)
(
(
1
+
ϵ
(
k
)
)
⋅
h
v
(
k
−
1
)
+
∑
u
∈
N
(
v
)
∣
h
u
(
k
−
1
)
)
h_{v}^{(k)}={\operatorname{MLP}^{(k)}}\left(\left(1+\epsilon^{(k)}\right) \cdot h_{v}^{(k-1)}+\sum_{u \in \mathcal{N}(v)} \mid h_{u}^{(k-1)}\right)
hv(k)=MLP(k)((1+ϵ(k))⋅hv(k−1)+∑u∈N(v)∣hu(k−1))
∑
u
∈
N
(
v
)
\sum_{u \in \mathcal{N}(v)}
∑u∈N(v)说明节点直接应该相加,而不是均值或者求最大。因为:
以上参考李宏毅老师视频和ppt,仅作为学习笔记交流使用
助教还补充了第二节课,内容涉及比较多数学理论,暂时记到这