GCN
Kipf and Welling 2017 基于局部图领域的图卷积网络模型
公式拆解
存在问题
R-GCN
图神经网络GNN:
h i l + 1 = σ ( ∑ m ∈ M i g m ( h i l , h j l ) ) ( 1 ) h_i^{l+1} = σ(\sum_{m∈M_i}g_m(h_i^l,h_j^l))\quad(1) hil+1=σ(∑m∈Migm(hil,hjl))(1)
h
i
l
h_i^l
hil是节点i在神经网络l层的隐藏状态
激活函数σ(·) 可以是
R
e
L
U
(
⋅
)
=
m
a
x
(
0
,
⋅
)
2
ReLU(·) = max(0, ·)^2
ReLU(⋅)=max(0,⋅)2
M
i
M_i
Mi表示节点
v
i
v_i
vi的入边和入节点的集合
g
m
(
⋅
,
⋅
)
g_m(·, ·)
gm(⋅,⋅)可以是简单的线性变换
g
m
(
h
i
,
h
j
)
=
W
h
j
g_m(h_i, h_j) = W h_j
gm(hi,hj)=Whj(和GCN设置一样)
改进后的R-GCN基于GCN的聚合领域节点的基础上,又增加了一个聚合关系的维度,使得节点的聚合操作变成一个双重聚合的过程,其公式如下:
h
i
l
+
1
=
σ
(
∑
r
∈
R
∑
j
∈
N
i
r
1
c
i
,
r
×
W
r
l
h
j
l
+
W
0
l
h
i
l
)
(
2
)
h_i^{l+1} = σ(\sum_{r∈R}\sum_{j∈N^r_i} \frac{1}{c_{i,r}} \times W^l_r h^l_j + W_0^l h^l_i) \quad(2)
hil+1=σ(∑r∈R∑j∈Nirci,r1×Wrlhjl+W0lhil)(2)
N
i
r
N^r_i
Nir是节点i在关系r下的邻居节点的集合索引
c
i
,
r
c_{i,r}
ci,r是特定关系下的归一化常数,本文设置为
∣
N
i
r
∣
|N^r_i |
∣Nir∣
公式(2)通过求邻居节点的特征向量归一化后求和,再加上通往自身节点的self-loop来完成每一层的forward。
R-GCN单个节点的更新如图所示
Regularization 正则化
将公式(2)应用于高度多关系数据的一个核心问题是,随着图中关系的数量,参数的数量迅速增长。在实践中,这很容易导致在罕见的关系和非常大的模型上过拟合。
为了解决此问题,本文提出了两种R-GCN每一层权重矩阵
W
r
l
W_r^l
Wrl的分解方式。
(1)基分解
W
r
l
=
∑
b
=
1
B
a
r
b
l
×
V
b
l
,
(
3
)
W^l_r =\sum^B_{b=1} a^l_{rb} \times V^l_b ,\quad(3)
Wrl=∑b=1Barbl×Vbl,(3)
也就是,取基础转换矩阵(共享)
V
b
l
∈
R
d
(
l
+
1
)
×
d
(
l
)
V^l_b ∈ R^{d(l+1)×d(l)}
Vbl∈Rd(l+1)×d(l)和系数为
a
r
b
l
a^l_{rb}
arbl完成基分解的线性组合,
a
r
b
l
a^l_{rb}
arbl是只依赖于关系r。
通过上式的基分解,我们将
W
r
W_r
Wr 变成了一组基
V
b
l
V^l_b
Vbl的线性加和。其次,基
V
b
V_b
Vb的优化是所有的常见或者不常见关系所共享的,这种共享的优化参数可以有效防止非常见关系上过拟合现象的出现。
(2)块对角分解
每个线性转换函数都是通过一组低维矩阵 Q b r l Q^l_{br} Qbrl 的和来定义, W r l W^l_r Wrl由 d i a g ( Q 1 r l , . . . , Q b r l ) diag(Q^l_{1r} , . . . , Q ^l_{br}) diag(Q1rl,...,Qbrl)组成。
基函数分解(3)可以看作是不同关系类型之间的有效权值共享形式,而块对角分解(4)可以看作是对每种关系类型的权值矩阵的稀疏性约束。块对角分解结构编码了一种直觉,即潜在的特征可以被分为一组变量,这些变量在组内比在组间耦合更紧密。这两种分解都可以减少了高度多关系数据(如现实的知识库)需要学习的参数数量。
Two fundamental SRL tasks
图卷积网络在统计关系学习中的两大任务——实体分类Entity classification和链接预测Link prediction
Entity classification
在处理节点(实体)的[半]监督分类任务中,每个节点重复地堆叠R-GCN的传播公式(2),节点在每一层的最后输出应用一个softmax(.)激活函数将每个节点映射到0~1的概率上,以便最小化所有标记节点的交叉熵损失(同时忽略未标记节点)。
L
=
−
∑
i
∈
Y
∑
k
=
1
K
t
i
k
I
n
h
i
L
k
,
(
5
)
L = -\sum_{i∈Y}\sum^K_{k=1} t_{ik} Inh^L_ik,\quad(5)
L=−∑i∈Y∑k=1KtikInhiLk,(5)
其中Y是带有标签的节点索引集,
h
i
L
k
h^L_ik
hiLk是第i个标记节点的l层网络输出的第k个条目。
t
i
k
t_{ik}
tik表示其各自的真实的标签。
Link prediction
链接预测处理的是未知三元组(subject主语, relation关系, object谓语)是否存在于真实知识库中的问题。通常知识库由一个有向的有标记的图集合G = (V, E, R)表示。
链接预测的任务是为可能的边(s, r, o)分配分数f(s, r, o),以确定这些边属于E的可能性有多大。
为了解决这个问题,就要对该三元组(s, r, o)中的s和r节点进行编码,使用R-GCN即可(decoder)。得到两个节点后,重新构建边,判断重构的边是否属于E集合。
可以使用DistMult这样的评分函数(解码器)完成这个解码任务,也就是说,图形自动编码器模型通过一个函数s : 将 R d × R × R d → R 将R^d × R × R^d → R 将Rd×R×Rd→R,完成对三元组(s,r,o)的评分。
传统的链接预测做法也是用三元组的框架,但是它们的主谓节点 v i ∈ V v_i∈V vi∈V使用的是单个优化的实值向量 e i e_i ei。但本模型通过R-GCN的编码器使得节点考虑到其邻居节点的影响, e i = h i L e_i = h^L_i ei=hiL,比直接使用"孤立"的节点具有更丰富的信息。
DistMult因式分解 (Y ang et al. 2014;Trouillon et al. 2016)
f
(
s
,
r
,
o
)
=
e
s
T
×
R
r
×
e
o
.
(
6
)
f(s, r, o) = e^T_s \times R_r \times e_o .\quad(6)
f(s,r,o)=esT×Rr×eo.(6)
本文用负抽样来训练模型:对于每个观察到的例子,我们抽样ω个负样本:通过随机破坏每个正面例子的主体或客体进行抽样。然后对交叉熵损失进行优化,以推动模型获得比负值高三倍的可观察值,优化的交叉熵损失如下:
L = − 1 ( 1 + ω ) ∣ E ∣ ˆ ∑ ( s , r , o , y ) ∈ T y × l o g ( l × f ( s , r , o ) ) + ( 1 − y ) l o g ( 1 − l × f ( s , r , o ) ) , ( 7 ) L = − \frac{1}{(1 + ω)|E|^ˆ} \sum_{(s,r,o,y)∈T}y \times log(l \times f(s, r, o))+(1 − y) log(1 − l \times f(s, r, o)) ,\quad(7) L=−(1+ω)∣E∣ˆ1∑(s,r,o,y)∈Ty×log(l×f(s,r,o))+(1−y)log(1−l×f(s,r,o)),(7)
其中T是真实的和被破坏的三元组的总集合。l是logistic sigmoid函数,y是一个指标,对于正的三元组设置为y = 1,对于负的三元组设置为y = 0。这是因为对多分类任务中的每一类单独分析的话,真实分布P是一个二项分布,可能的取值为0或者1,而网络预测的分布Q可以理解为标签是1的概率。
多标签分类任务中的一类任务来看,交叉熵损失函数为: