CS224W摘要06.07.GNN
Posted oldmao_2000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CS224W摘要06.07.GNN相关的知识,希望对你有一定的参考价值。
文章目录
CS224W: Machine Learning with Graphs
公式输入请参考: 在线Latex公式
复习
之前的知识点就不说了,这里把之前的Shallow Encoder的缺点列一下:
-
𝑶
(
∣
𝑽
∣
)
𝑶(|𝑽|)
O(∣V∣) parameters are needed:
No sharing of parameters between nodes参数个数与节点个数成正比,无法共享参数
Every node has its own unique embedding - Inherently “transductive”:
Cannot generate embeddings for nodes that are not seen during training - Do not incorporate node features:
Many graphs have features that we can and should leverage
以上是之前学习的Shallow Encoder缺点,因此要克服这些缺点,就要引入深度学习:GNN
这里还复习了一把DL的基础知识,不写了
Basic of Deep Learning(略)
Deep Learning for Graphs
Setup
Assume we have a graph
𝑮
𝑮
G:
§
𝑉
𝑉
V is the vertex set
§
𝑨
𝑨
A is the adjacency matrix (assume binary)
§
𝑿
∈
R
m
×
∣
V
∣
𝑿 ∈ ℝ^{m\\times |V|}
X∈Rm×∣V∣ is a matrix of node features
§
𝑣
𝑣
v: a node in
𝑉
𝑉
V;
𝑁
(
𝑣
)
𝑁(𝑣)
N(v) : the set of neighbors of
𝑣
𝑣
v.
Node features:
§ Social networks: User profile, User image
§ Biological networks: Gene expression profiles, gene functional information
§ When there is no node feature in the graph dataset:
Indicator vectors (one-hot encoding of a node)
Vector of constant 1: [1, 1, …, 1]
在进入正题之前,先看下直接用邻居矩阵拼接节点特征,然后直接丢DNN里面是什么情况:
缺点:
1.参数量大,和节点数量+特征维度成正比
2.DNN结构训练好后如果图结构变化,邻接矩阵大小也会变化,此时无法适配原DNN
3.DNN对输入顺序是敏感的,而图是无序的,相同图不同的顺序图的邻接矩阵不一样,DNN无法处理无序的结构
因此,借用CNN的思想,将邻居节点信息汇聚到当前节点,但是在CNN中,卷积核大小是固定的,而图的邻居无法用固定大小的卷积核来处理,因此用的是aggregation 思想。
Describe aggregation strategies
Key idea: Generate node embeddings based on local network neighborhoods
分解后每个节点都有自己计算图:
当然可以有深度的形式:
节点在每一层都有不同embedding
第0层的embedding就是节点的输入feature
第k层的embedding可以汇聚第k跳的邻居信息
Aggregation的基本方式:
上面的Aggregation是用的平均的方式(我感觉是求和后归一化,因为分母可以放到求和号前面),其中
B
l
,
W
l
B_l,W_l
Bl,Wl是用于线性变换的参数,每层参数不一样,但是每层是share的,也是模型需要训练的参数
可以写成矩阵的形式。
Let
H
(
l
)
=
[
h
1
(
l
)
⋯
h
∣
V
∣
(
l
)
]
T
H^{(l)}=[h_1^{(l)}\\cdots h_{|V|}^{(l)}]^T
H(l)=[h1(l)⋯h∣V∣(l)]T,节点embedding的矩阵形式
邻居消息汇聚:
∑
u
∈
N
v
h
u
(
l
)
=
A
v
H
(
l
)
\\sum_{u\\in N_v}h_u^{(l)}=A_vH^{(l)}
∑u∈Nvhu(l)=AvH(l)邻接矩阵里面v节点这行
D是度矩阵,是一个对角矩阵:
D
v
,
v
=
D
e
g
(
v
)
=
∣
N
(
v
)
∣
D_{v,v}=Deg(v)=|N(v)|
Dv,v=Deg(v)=∣N(v)∣
则归一化可以表示为:
D
v
,
v
−
1
=
1
∣
N
(
v
)
∣
D_{v,v}^{-1}=\\cfrac{1}{|N(v)|}
Dv,v−1=∣N(v)∣1
因此上图中的邻居节点的汇聚的矩阵形式可以写为:
∑
u
∈
N
(
v
)
h
u
l
∣
N
(
v
)
∣
→
H
(
l
+
1
)
=
D
−
1
A
H
(
l
)
\\sum_{u\\in N(v)}\\cfrac{h_u^l}{|N(v)|}\\rightarrow H^{(l+1)}=D^{-1}AH^{(l)}
u∈N(v)∑∣N(v)∣hul→H(l+1)=D−1AH(l)
整个式子可以写成:
H
(
l
+
1
)
=
σ
(
A
~
H
(
l
)
W
l
T
+
H
(
l
)
B
l
T
)
,
A
~
=
D
−
1
A
H^{(l+1)}=\\sigma({\\color{Red}\\tilde AH^{(l)}W_l^T}+{\\color{Blue}H^{(l)}B_l^T}),\\tilde A=D^{-1}A
H(l+1)=σ(A~H(l)WlT+H(l)BlT),A~=D−1A
Red: neighborhood aggregation
Blue: self transformation
如何训练
有监督直接硬train,用交叉熵:
无监督学习直接使用图的结构信息(参考随机游走的损失函数)作为的损失函数的目标:
L
=
∑
z
u
,
z
v
C
E
(
y
u
,
v
,
D
E
C
(
z
u
,
z
v
)
)
\\mathcal{L}=\\sum_{z_u,z_v}CE(y_{u,v},DEC(z_u,z_v))
L=zu,zv∑CE(yu,v,DEC(zu,zv))
Where
y
u
,
v
=
1
y_{u,v}= 1
yu,v=1 when node 𝑢 and 𝑣 are similar
CE is the cross entropy
DEC is the decoder such as inner product
单层GNN
GNN Layer = Message + Aggregation
注意事项:
通常是用
h
v
l
−
1
h_v^{l-1}
hvl−1来计算
h
v
l
h_v^{l}
hvl
生成消息要生成节点本身的消息,而且本身的消息和邻居的消息使用不同的参数,例如:
邻居的消息计算完毕后进行aggregation,然后再把邻居汇聚的结果(黄色虚线框)和节点本身的消息(红色虚线框)进行concat或者sum,例如:
感觉这里写的和后面有点不一样。。。
几种经典的图网模型的 Message + Aggregation的模式:
GCN
h
v
(
l
)
=
σ
(
∑
u
∈
N
(
v
)
W
(
l
)
h
u
(
l
−
1
)
∣
N
(
v
)
∣
)
h_v^{(l)}=\\sigma\\left(\\sum_{u\\in N(v)}W^{(l)}\\cfrac{h_u^{(l-1)}}{|N(v)|}\\right)
hv(l)=σ⎝⎛u∈N(v)∑W(l)∣N(v)∣hu(l−1)⎠⎞
CS224W摘要总纲(已完结)
CS224W摘要10.Knowledge Graph Embeddings
CS224W摘要05.Message passin and Node classification