引言
回顾word2vec,一个典型的例子:
v
k
i
n
g
−
v
m
a
n
≈
v
q
u
e
e
n
−
v
w
o
m
a
n
v_{king}-v_{man}\approx v_{queen}-v_{woman}
vking−vman≈vqueen−vwoman
需要知道的是,king和man之间的关系是皇室(royal),queen和woman之间的关系也是royal。
可以看出,从大规模语料中学习得到的词向量可以建模单词之间的相似关系,这种关系体现在词嵌入空间中的翻译(translations)。
同样的,国家和城市之间也存在这种相似的关系。如:
v
J
a
p
a
n
−
v
T
o
k
y
o
≈
v
G
e
r
m
a
n
y
−
v
B
e
r
l
i
n
v
G
e
r
m
a
n
−
v
B
e
r
l
i
n
≈
v
C
h
i
n
a
−
v
B
e
i
j
i
n
g
v_{Japan}-v_{Tokyo}\approx v_{Germany}-v_{Berlin} \\ v_{German}-v_{Berlin}\approx v_{China}-v_{Beijing}
vJapan−vTokyo≈vGermany−vBerlinvGerman−vBerlin≈vChina−vBeijing
我们将上述的国家名、城市名看作实体,而不仅仅是单词。上述公式如果成立,那么可以认为在嵌入空间中,国家实体的向量和首都城市的向量之间存在一种操作,或者说存在一种相似关系,这个相似关系用一个国家的向量减去这个国家的首都的向量来表达,也就是is_capital_of关系(用大白话说:国家a的向量-国家a的首都城市的向量==国家b的向量-国家b的首都城市的向量,所以国家和首都城市之间存在一种相似关系)。因此我们有:
v
T
o
k
y
o
+
v
i
s
_
c
a
p
t
i
a
l
_
o
f
−
v
J
a
p
a
n
≈
0
v_{Tokyo}+v_{is\_captial\_of}-v_{Japan}\approx 0
vTokyo+vis_captial_of−vJapan≈0
这就是TransE模型的启发。
知识图谱的主要问题就是缺失实体和关系,尤其是开放域知识图谱,对一些应用任务(如问答)就会造成负面影响,因为KGQA就是根据用户问题中的实体和关系从KG中查找满足当前实体和关系的实体(也就是说找到某个实体与用户问题的实体和关系构成事实三元组)。
知识图谱补全,也称为链接预测,即预测一个不在KG中的三元组是否是事实三元组,或者给定头实体和关系,从KG中找出尾实体,构成事实三元组。可以看出链接预测任务可以增加KG中triplet的数量,达到补全KG的目的。
有很多方法可以做链接预测,基于嵌入的方法已经被证实是非常有效且效果最好的方法。
符号说明
符号 | 说明 |
---|---|
E \mathcal{E} E | 所有实体的集合 |
R \mathcal{R} R | 所有关系的集合 |
( h , r , t ) (h,r,t) (h,r,t) | ( h , r , t ) ∈ E × R × E (h,r,t)\in \mathcal{E}\times\mathcal{R}\times\mathcal{E} (h,r,t)∈E×R×E |
G \mathcal{G} G | 所有三元组的集合,也就是知识图谱 |
f ( h , r , t ) f(h,r,t) f(h,r,t) | 得分函数,定义一个事实三元组的得分 |
G ( h ′ , r , t ′ ) ′ = { ( h ′ , r , t ) ∥ h ′ ∈ E ∪ ( h , r , t ′ ) ∥ t ′ ∈ E } G_{(h',r,t')}'=\{(h',r,t)\|h'\in E\cup(h,r,t')\|t'\in E\} G(h′,r,t′)′={(h′,r,t)∥h′∈E∪(h,r,t′)∥t′∈E} | 要么取代头实体,要么取代尾实体构成负例三元组。不是同时取代头尾实体 |
嵌入模型
嵌入模型的目的就是学习得分函数,使得正例(事实)三元组的得分一定要大于负例三元组的得分
比如TransE中的得分函数定义为:
f
(
h
,
r
,
t
)
=
−
∣
∣
v
h
+
v
r
−
v
t
∣
∣
f(h,r,t)=-||v_h+v_r-v_t||
f(h,r,t)=−∣∣vh+vr−vt∣∣
其中
∣
∣
⋅
∣
∣
||\cdot||
∣∣⋅∣∣表示向量的范数,两个向量差的范数代表着两个向量的距离。
记住:得分函数必须使得正例(事实)三元组的得分一定要大于负例三元组的得分。因此一定要有:
f
(
T
o
k
y
o
,
i
s
_
c
a
p
a
t
i
a
l
_
o
f
,
J
a
p
a
n
)
>
f
(
T
o
k
y
o
,
i
s
_
c
a
p
t
i
a
l
_
o
f
,
G
e
r
m
a
n
)
f(Tokyo,is\_capatial\_of,Japan)>f(Tokyo,is\_captial\_of,German)
f(Tokyo,is_capatial_of,Japan)>f(Tokyo,is_captial_of,German)
即:
−
∣
∣
v
T
o
k
y
o
+
v
i
s
_
c
a
p
t
i
a
l
_
o
f
−
v
J
a
p
a
n
∣
∣
>
−
∣
∣
v
T
o
k
y
o
+
v
i
s
_
c
a
p
t
i
a
l
_
o
f
−
v
G
e
r
m
a
n
∣
∣
-||v_{Tokyo}+v_{is\_captial\_of}-v_{Japan}||>-||v_{Tokyo}+v_{is\_captial\_of}-v_{German}||
−∣∣vTokyo+vis_captial_of−vJapan∣∣>−∣∣vTokyo+vis_captial_of−vGerman∣∣
所以有:
∣
∣
v
T
o
k
y
o
+
v
i
s
_
c
a
p
t
i
a
l
_
o
f
−
v
J
a
p
a
n
∣
∣
<
∣
∣
v
T
o
k
y
o
+
v
i
s
_
c
a
p
t
i
a
l
_
o
f
−
v
G
e
r
m
a
n
∣
∣
||v_{Tokyo}+v_{is\_captial\_of}-v_{Japan}||<||v_{Tokyo}+v_{is\_captial\_of}-v_{German}||
∣∣vTokyo+vis_captial_of−vJapan∣∣<∣∣vTokyo+vis_captial_of−vGerman∣∣
即 v T o k y o + v i s _ c a p t i a l _ o f v_{Tokyo}+v_{is\_captial\_of} vTokyo+vis_captial_of与 v J a p a n v_{Japan} vJapan的距离要小于与 v G e r m a n v_{German} vGerman的距离。
f
(
h
,
r
,
t
)
f(h,r,t)
f(h,r,t)是得分函数,TransE的损失函数如下:
L
=
max
(
0
,
γ
−
f
(
h
,
r
,
t
)
+
f
(
h
′
,
r
,
t
′
)
)
L=\max(0,\gamma-f(h,r,t)+f(h',r,t'))
L=max(0,γ−f(h,r,t)+f(h′,r,t′))
也就是说:正例三元组的得分一定要比负例三元组的得分大
γ
\gamma
γ。如果正例三元组的得分-负例三元组的得分<
γ
\gamma
γ,那么就有:
γ
−
f
(
h
,
r
,
t
)
+
f
(
h
′
,
r
,
t
′
)
>
0
\gamma-f(h,r,t)+f(h',r,t')>0
γ−f(h,r,t)+f(h′,r,t′)>0
此时loss>0,就会降低loss,也就是提升
f
(
h
,
r
,
t
)
f(h,r,t)
f(h,r,t),减小
f
(
h
′
,
r
,
t
′
)
f(h',r,t')
f(h′,r,t′)。
上述的损失函数叫hinge-margin损失。也可以采用常用的负对数似然函数作为损失函数:
L
=
−
∑
(
h
,
r
,
t
)
∈
G
(
exp
(
f
(
h
,
r
,
t
)
)
∑
t
′
∈
E
{
−
t
}
exp
(
f
(
h
,
r
,
t
′
)
)
+
exp
(
f
(
h
,
r
,
t
)
)
∑
h
′
∈
E
{
−
h
}
exp
(
f
(
h
′
,
r
,
t
)
)
)
L=-\sum_{(h,r,t)\in\mathcal{G}}(\frac{\exp(f(h,r,t))}{\sum_{t'\in \mathcal{E}\{-t\}}\exp(f(h,r,t'))}+\frac{\exp(f(h,r,t))}{\sum_{h'\in \mathcal{E}\{-h\}}\exp(f(h',r,t))})
L=−(h,r,t)∈G∑(∑t′∈E{−t}exp(f(h,r,t′))exp(f(h,r,t))+∑h′∈E{−h}exp(f(h′,r,t))exp(f(h,r,t)))
公式看着复杂,其实很简单,比如:传入给模型的是head和relation的embedding,都是长度为d的vector,经过模型后(不是TransE模型,比如DistMult模型,该模型的做法就是将将head和relation的embedding直接elementwise相乘)得到长度为d的vector,再将这个vector与KG中的每一个实体做内积然后softmax得到的就是上述公式中
exp
(
f
(
h
,
r
,
t
)
)
∑
t
′
∈
E
{
−
t
}
exp
(
f
(
h
,
r
,
t
′
)
)
\frac{\exp(f(h,r,t))}{\sum_{t'\in \mathcal{E}\{-t\}}\exp(f(h,r,t'))}
∑t′∈E{−t}exp(f(h,r,t′))exp(f(h,r,t))
这一部分。
未完待续。