背景
在大规模语料库上预训练的BERT等语言表示模型可以很好地从纯文本中捕获丰富的语义模式,并进行微调以提高各种 NLP 任务的性能。然而,现有的预训练语言模型很少考虑合并知识图谱,它可以提供丰富的结构化知识事实以更好地理解语言。作者认为 KG 中的实体信息可以通过外部知识增强语言表示。在本文中,通过大规模文本语料库和 KG 来训练增强的语言表示模型(ERNIE),该模型可以同时充分利用词汇、句法和知识信息。
预训练模型可以从文本中捕获丰富的语义信息,使多种 NLP 任务受益,可以分为以下两种:
∙ \bullet ∙ 基于特征:Skip-gram、GloVe、ELMo等
∙ \bullet ∙ 基于微调:GPT、BERT等
图片来源 Efficient estimation of word representations in vector space.
BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding.
尽管预训练的语言表示模型已经取得了可喜的结果,并且在许多 NLP 任务中作为常规组件发挥了作用,但它们忽略了将知识信息纳入语言理解。
如图 2所示,在不知道 Blowin’ in the Wind 和 Chronicles: Volume 1 分别是歌曲和书籍的情况下,很难识别 Bob Dylan 在实体输入任务中的两个职业,即词曲作者和作家。 此外,几乎不可能在关系分类任务中提取细粒度的关系,例如作曲家和作者。 因此,考虑丰富的知识信息可以促成更好的语言理解,有利于各种知识驱动的任务,例如实体识别和关系分类。
将外部知识整合到语言表示模型中的两个主要挑战:
(1) 结构化知识编码:对于给定的文本,语言表示模型如何有效地提取和编码KG中相关的事实信息;
(2)异构信息融合:语言表示的预训练过程与知识表示过程有很大不同,导致两个独立的向量空间。如何设计一个预训练目标融合词法、句法和知识信息。
为了解决目前存在的两个挑战,作者分别提出了以下两个方法,也就是本文的创新点:
在大规模文本语料库和 KG 上进行预训练:
(1)为了提取和编码知识信息,我们首先识别文本中提及的命名实体,然后将这些提及到的实体与它们在 KG 中的相应实体对齐。 没有直接在 KG 中使用基于图的事实,而是使用诸如 TransE之类的知识嵌入算法对 KG 的图结构进行编码,然后将信息实体嵌入作为 ERNIE 的输入。 基于文本和 KG 之间的对齐,ERNIE 将知识模块中的实体表示集成到语义模块的底层。
(2)设计了一个新的预训练目标。通过随机mask输入文本中的一些命名实体对齐并要求模型从 KG 中选择合适的实体来完成对齐。 与现有的仅利用局部上下文来预测标记的预训练语言表示模型不同,我们的目标是要求模型聚合上下文和知识事实以预测token和实体,并形成知识增强的语言表示模型。
方法论
符号说明
token序列表示为 { w 1 , . . . , w n } \{w_1,...,w_n\} {w1,...,wn}, n n n 是token序列的长度;
与给定token对齐的实体序列表示为 { e 1 , . . . , e m } \{e_1,...,e_m\} {e1,...,em}, m m m 是实体序列的长度;
在大多数情况下 m m m不等于 n n n,因为并非每个token都可以与 KG 中的实体对齐;
包含所有token的整个词汇表表示为 V \mathcal{V} V;
包含 KG 中所有实体的实体列表表示为 E \mathcal{E} E;
如果标记 w ∈ V w\in \mathcal{V} w∈V 有相应的实体 e ∈ E e ∈ \mathcal{E} e∈E,则它们的对齐定义为 f ( w ) = e f( w) = e f(w)=e。
在ERNIE中,作者将实体与其命名实体短语中的第一个标记对齐,如图 3 所示。
图3 左边是ERNIE的架构。 右边是 token 和 entity 的输入相互集成的聚合器。 信息融合层有两种输入:一种是 t o k e n e m b e d d i n g token\ embedding token embedding,另一种是 t o k e n e m b e d d i n g token\ embedding token embedding和 e n t i t y e m b e d d i n g entity\ embedding entity embedding的串联。 信息融合后,它为下一层输出新的 t o k e n e m b e d d i n g token\ embedding token embedding和 e n t i t y e m b e d d i n g entity\ embedding entity embedding。
ERNIE 的模型架构
如图 3左边所示,ERNIE 的整个模型架构由两个堆叠模块组成:
(1)底层文本编码器(T-Encoder)负责从输入标记中捕获基本的词汇和句法信息
给定一个token序列
{
w
1
,
.
.
.
,
w
n
}
\{w_1,...,w_n\}
{w1,...,wn},及其对应的实体序列
{
e
1
,
.
.
.
,
e
m
}
\{e_1 , . . . , e_m \}
{e1,...,em},文本编码器首先对每个token的
t
o
k
e
n
e
m
b
e
d
d
i
n
g
token\ embedding
token embedding,
s
e
g
m
e
n
t
e
m
b
e
d
d
i
n
g
segment\ embedding
segment embedding,
p
o
s
i
t
i
o
n
a
l
e
m
b
e
d
d
i
n
g
positional\ embedding
positional embedding求和以计算其
i
n
p
u
t
e
m
b
e
d
d
i
n
g
input\ embedding
input embedding,计算
{
w
1
,
.
.
.
,
w
n
}
\{\pmb{w}_1,...,\pmb{w}_n\}
{www1,...,wwwn} 如下,
{
w
1
,
.
.
.
,
w
n
}
=
T
−
E
n
c
o
d
e
r
(
{
w
1
,
.
.
.
,
w
n
}
)
\{\pmb{w}_1,...,\pmb{w}_n\}=T-Encoder(\{w_1,...,w_n\})
{www1,...,wwwn}=T−Encoder({w1,...,wn})其中,
T
−
E
n
c
o
d
e
r
(
⋅
)
T-Encoder(·)
T−Encoder(⋅) 是一个多层双向Transformer encoder,与BERT 中的实现相同。
(2)上层知识编码器 (K-Encoder) 负责将额外的面向token的知识信息整合到来自底层的文本信息中,以便将token和实体的异构信息表示到一个统一的特征空间中。
用实体嵌入
{
e
1
,
.
.
.
,
e
m
}
\{\pmb{e}_1 , . . . , \pmb{e}_m\}
{eee1,...,eeem}表示实体
{
e
1
,
.
.
.
,
e
m
}
\{e_1 , . . . , e_m \}
{e1,...,em},将来自K-Encoder的
{
w
1
,
.
.
.
,
w
n
}
\{\pmb{w}_1,...,\pmb{w}_n\}
{www1,...,wwwn}和 Trans E的编码结果
{
e
1
,
.
.
.
,
e
m
}
\{\pmb{e}_1 , . . . , \pmb{e}_m\}
{eee1,...,eeem}喂给K-Encoder,计算最终的
o
u
t
p
u
t
e
m
b
e
d
d
i
n
g
output \ embedding
output embedding:
{
w
1
o
,
.
.
.
,
w
n
o
}
,
{
e
1
o
,
.
.
.
,
e
m
o
}
=
K
−
E
n
c
o
d
e
r
(
{
w
1
,
.
.
.
,
w
n
}
,
{
e
1
,
.
.
.
,
e
m
}
)
\{\pmb{w}_1^o,...,\pmb{w}_n^o\},\{\pmb{e}_1^o,...,\pmb{e}_m^o\}\\= K-Encoder(\{\pmb{w}_1,...,\pmb{w}_n\} ,\{\pmb{e}_1 , . . . , \pmb{e}_m\})
{www1o,...,wwwno},{eee1o,...,eeemo}=K−Encoder({www1,...,wwwn},{eee1,...,eeem}) 其中,
{
e
1
,
.
.
.
,
e
m
}
\{\pmb{e}_1 , . . . , \pmb{e}_m\}
{eee1,...,eeem}由知识嵌入模型 TransE 进行预训练,
{
w
1
o
,
.
.
.
,
w
n
o
}
和
{
e
1
o
,
.
.
.
,
e
m
o
}
\{\pmb{w}_1^o,...,\pmb{w}_n^o\}和\{\pmb{e}_1^o,...,\pmb{e}_m^o\}
{www1o,...,wwwno}和{eee1o,...,eeemo}将作为特征用于特定的任务。
作者将 T-Encoder 层数表示为 N N N,将 K-Encoder 层数表示为 M M M。(实验中 M = N M=N M=N)
ERNIE T-Encoder
T − E n c o d e r T-Encoder T−Encoder 是一个多层双向Transformer encoder,与BERT 中的实现相同,详细可以看BERT这篇论文。
ERNIE 的K-Encoder
如图3所示,K-Encoder 由多个堆叠的聚合器组成,旨在编码tokens 和实体以及融合他们的异构信息。
在第
i
i
i个聚合器中,将来自前面的聚合器的
i
n
p
u
t
t
o
k
e
n
e
m
b
e
d
d
i
n
g
{
w
1
(
i
−
1
)
,
.
.
.
,
w
n
(
i
−
1
)
}
input\ token\ embedding\ \{\pmb{w}_1^{(i-1)},...,\pmb{w}_n^{(i-1)}\}
input token embedding {www1(i−1),...,wwwn(i−1)}和
e
n
t
i
t
y
e
m
b
e
d
d
i
n
g
entity\ embedding
entity embedding
{
e
1
(
i
−
1
)
,
.
.
.
,
e
m
(
i
−
1
)
}
\{\pmb{e}_1^{(i-1)},...,\pmb{e}_m^{(i-1)}\}
{eee1(i−1),...,eeem(i−1)} 分别输入两个多头自注意力(MH-ATTs)
{
w
~
1
(
𝑖
)
,
⋯
,
w
~
𝑛
(
𝑖
)
}
=
𝑀
𝐻
−
𝐴
𝑇
𝑇
(
w
1
(
𝑖
−
1
)
,
⋯
,
w
𝑛
(
𝑖
−
1
)
)
{
e
~
1
(
𝑖
)
,
⋯
,
e
~
𝑚
(
𝑖
)
}
=
𝑀
𝐻
−
𝐴
𝑇
𝑇
(
e
1
(
𝑖
)
,
⋯
,
e
𝑚
(
𝑖
)
)
\{\tilde{\pmb{w}}_1^{(𝑖)},⋯,\tilde{\pmb{w}}_𝑛^{(𝑖)} \}=𝑀𝐻−𝐴𝑇𝑇({\pmb{w}_1^{(𝑖−1)},⋯,\pmb{w}_𝑛^{(𝑖−1)} })\\ \{\tilde{\pmb{e}}_1^{(𝑖)},⋯,\tilde{\pmb{e}}_𝑚^{(𝑖)} \}=𝑀𝐻−𝐴𝑇𝑇({\pmb{e}_1^{(𝑖)},⋯,\pmb{e}_𝑚^{(𝑖)} })
{www~1(i),⋯,www~n(i)}=MH−ATT(www1(i−1),⋯,wwwn(i−1)){eee~1(i),⋯,eee~m(i)}=MH−ATT(eee1(i),⋯,eeem(i))第
i
i
i 个聚合器采用信息融合层对token和实体序列进行相互集成,并计算每个token和实体的
o
u
t
p
u
t
e
m
b
e
d
d
i
n
g
output \ embedding
output embedding。 对于一个token
w
j
w_j
wj及其对齐的实体
e
k
=
f
(
w
j
)
e_k = f (w_j )
ek=f(wj),信息融合过程如下,
h
𝑗
=
σ
(
W
~
𝑡
(
𝑖
)
w
~
𝑗
(
𝑖
)
+
W
~
𝑒
(
𝑖
)
e
~
𝑘
(
𝑖
)
+
b
~
(
𝑖
)
)
𝑤
𝑗
(
𝑖
)
=
σ
(
W
𝑡
(
𝑖
)
h
𝑗
+
b
𝑡
(
𝑖
)
)
𝑒
𝑘
(
𝑖
)
=
σ
(
W
𝑒
(
𝑖
)
h
𝑗
+
b
𝑒
(
𝑖
)
)
ℎ_𝑗=\sigma(\tilde{\pmb{W}}_𝑡^{(𝑖)} \tilde{\pmb{w}}_𝑗^{(𝑖)}+\tilde{\pmb{W}}_𝑒^{(𝑖)} \tilde{\pmb{e}}_𝑘^{(𝑖)}+\tilde{\pmb{b}}^{(𝑖)} )\\ 𝑤_𝑗^{(𝑖)}={\sigma}(\pmb{W}_𝑡^{(𝑖)} \pmb{h}_𝑗+\pmb{b}_𝑡^{(𝑖)})\\ 𝑒_𝑘^{(𝑖)}={\sigma}(\pmb{W}_𝑒^{(𝑖)} \pmb{h}_𝑗+\pmb{b}_𝑒^{(𝑖)})
hj=σ(WWW~t(i)www~j(i)+WWW~e(i)eee~k(i)+bbb~(i))wj(i)=σ(WWWt(i)hhhj+bbbt(i))ek(i)=σ(WWWe(i)hhhj+bbbe(i))其中, 中间隐藏状态
h
j
h_j
hj 集成了token和实体信息。
σ
(
⋅
)
\sigma(·)
σ(⋅)是非线性激活函数,通常是 GELU 函数。
对于句子中的某些token,它在KG中没有对应实体,信息融合层计算
o
u
t
p
u
t
e
m
b
e
d
d
i
n
g
output \ embedding
output embedding如下,
h
𝑗
=
σ
(
W
~
𝑡
(
𝑖
)
w
~
𝑗
(
𝑖
)
+
b
~
(
𝑖
)
)
𝑤
𝑗
(
𝑖
)
=
σ
(
W
𝑡
(
𝑖
)
h
𝑗
+
b
𝑡
(
𝑖
)
)
ℎ_𝑗=\sigma(\tilde{\pmb{W}}_𝑡^{(𝑖)} \tilde{\pmb{w}}_𝑗^{(𝑖)}+\tilde{\pmb{b}}^{(𝑖)} )\\ 𝑤_𝑗^{(𝑖)}={\sigma}(\pmb{W}_𝑡^{(𝑖)} \pmb{h}_𝑗+\pmb{b}_𝑡^{(𝑖)})
hj=σ(WWW~t(i)www~j(i)+bbb~(i))wj(i)=σ(WWWt(i)hhhj+bbbt(i))综上,第
i
i
i个聚合器可简单表示为,
{
w
1
(
𝑖
)
,
⋯
,
w
n
(
𝑖
)
}
,
{
e
1
(
𝑖
)
,
⋯
,
e
m
(
𝑖
)
}
=
A
g
g
r
e
g
a
t
o
r
(
{
w
1
(
𝑖
−
1
)
,
⋯
,
w
n
(
𝑖
−
1
)
}
,
{
e
1
(
𝑖
−
1
)
,
⋯
,
e
m
(
𝑖
−
1
)
}
)
\{\pmb{w}_1^{(𝑖)},⋯,\pmb{w}_n^{(𝑖)} \},\{\pmb{e}_1^{(𝑖)},⋯,\pmb{e}_m^{(𝑖)} \}\\=Aggregator(\{\pmb{w}_1^{(𝑖-1)},⋯,\pmb{w}_n^{(𝑖-1)} \},\{\pmb{e}_1^{(𝑖-1)},⋯,\pmb{e}_m^{(𝑖-1)} \})
{www1(i),⋯,wwwn(i)},{eee1(i),⋯,eeem(i)}=Aggregator({www1(i−1),⋯,wwwn(i−1)},{eee1(i−1),⋯,eeem(i−1)})最后一个聚合器计算的token和实体的
o
u
t
p
u
t
e
m
b
e
d
d
i
n
g
output \ embedding
output embedding将用作
K
−
E
n
c
o
d
e
r
K-Encoder
K−Encoder 的最终
o
u
t
p
u
t
e
m
b
e
d
d
i
n
g
output \ embedding
output embedding。
将知识注入预训练模型中
为了将实体知识注入到语言表示模型中,作者提出了一个新的预训练任务,随机mask一些 t o k e n − e n t i t y token-entity token−entity对齐,然后要求模型基于对齐的token来预测所有相应的实体。由于这个任务类似于训练去噪自编码器,作者将此过程称为去噪实体自编码器 (dEA)。 考虑到 s o f t m a x softmax softmax 层的 E \mathcal{E} E 非常大,因此只需要根据给定的实体序列而不是 KG 中的所有实体来预测实体。
给定token序列
{
w
1
,
.
.
.
,
w
n
}
\{w_1, . . . , w_n\}
{w1,...,wn}及其对应的实体序列
{
e
1
,
.
.
.
,
e
m
}
\{e_1, . . . , e_m\}
{e1,...,em},定义token
w
i
w_i
wi 的对齐实体分布如下,
𝑝
(
e
j
│
w
i
)
=
e
x
p
(
𝑙
𝑖
𝑛
𝑒
𝑎
𝑟
(
w
𝑖
𝑜
)
⋅
e
j
)
∑
𝑘
=
1
𝑚
e
x
p
(
𝑙
𝑖
𝑛
𝑒
𝑎
𝑟
(
w
𝑖
𝑜
)
⋅
e
k
𝑝(e_j│w_i )=\frac{exp(𝑙𝑖𝑛𝑒𝑎𝑟(\pmb{w}_𝑖^𝑜 )·\pmb{e}_j)}{∑_{𝑘=1}^𝑚{exp(𝑙𝑖𝑛𝑒𝑎𝑟(\pmb{w}_𝑖^𝑜 )·\pmb{e}_k}}
p(ej│wi)=∑k=1mexp(linear(wwwio)⋅eeekexp(linear(wwwio)⋅eeej)
其中
l
i
n
e
a
r
(
⋅
)
linear(·)
linear(⋅)是一个线性层。 计算 dEA 的交叉熵损失函数会用到上式。
考虑到 token-entity 对齐存在一些错误,对 dEA 执行以下操作:
(1) 对于给定的 token-entity 对齐,以 5 % 5\% 5%的概率用另一个随机实体替换该实体,旨在训练模型能够纠正token与错误实体对齐这个错误;
(2)以 15 % 15\% 15%的概率mask掉token-entity 对齐,旨在训练模型以纠正实体对齐系统未提取所有现有对齐的错误;
(3)以 80 % 80\% 80%的概率保持 token-entity 对齐不变,旨在鼓励模型将实体信息整合到 token 表示中,以获得更好的语言理解。
与 BERT 类似,ERNIE 也采用掩码语言模型 (MLM) 和下一句预测 (NSP) 作为预训练任务,使 ERNIE 能够从文本中的标记中捕获词汇和句法信息,整体预训练损失是 dEA、MLM 和 NSP 损失的总和。
实验
预训练数据集
从头训练 ERNIE 的成本太大,作者直接采用 Google发布的 BERT 参数初始化用于编码token的Transformer 块。
预训练是一个由 NSP、MLM 和 dEA 组成的多任务过程,使用英文维基百科作为预训练语料库并将文本与 Wiki 数据对齐。将语料库转换为格式化数据进行预训练后,标注输入有近 4 , 500 M 4,500M 4,500M子词和 140 M 140M 140M实体,丢弃少于3个实体的句子。
在预训练 ERNIE 之前,采用 TransE 在 Wikidata 上训练的知识嵌入作为实体的输入嵌入。
超参数设置和训练细节
给定 t o k e n e m b e d d i n g token\ embedding token embedding 和 e n t i t y e m b e d d i n g entity\ embedding entity embedding的隐藏维度分别表示为 H w H_w Hw、 H e H_e He,自注意力头的数量分别表示为 A w A_w Aw、 A e A_e Ae。 模型大小: N = 6 , M = 6 N = 6,M = 6 N=6,M=6, H w = 768 H_w = 768 Hw=768, H e = 100 , A w = 12 , A e = 4 H_e = 100,A_w = 12,A_e = 4 He=100,Aw=12,Ae=4。总参数约 114 M 114M 114M。
B E R T B A S E BERT_{BASE} BERTBASE 的参数总量约为 110 M 110M 110M,这意味着 ERNIE 的知识模块比语言模块小得多,对运行时性能影响很小。由于自注意力的计算是长度的二次函数,为了加速训练过程,作者将最大序列长度从 512 减少到 256。
由于堆叠的 Transformer 块的强大表达能力,作者发现小批量会导致模型过拟合。 因此,用更大的batch size和更少的训练时期来避免过度拟合,即batch size:2048,epoch:2、3。 由于大多数数据集没有实体注释,作者使用 TAGME来提取句子中的实体并将它们链接到 KG 中的相应实体。
GLUE
通用语言理解评估 (GLUE) 基准是各种自然语言理解任务的集合。
ERNIE 在 GLUE 上取得了与 BERTBASE 相当的结果。一方面,这意味着 GLUE 不需要外部知识来进行语言表示。另一方面,它说明了 ERNIE 在异构信息融合后不会丢失文本信息。
消融实验
使用FewRel 数据集探索信息实体和知识预训练任务(dEA)对ERNIE 的影响。w/o entity和 w/o dEA 分别是指没有实体序列输入和没有预训练任务dEA。
结果表明:
(1)在没有实体序列输入的情况下,dEA 在预训练期间仍然将知识信息注入语言表示中,这使 BERT 的 F1 分数提高了 0.9%。
(2)虽然信息实体带来了很多知识信息,直观地有利于关系分类,但没有 dEA 的 ERNIE 几乎没有利用这一点,导致 F1 增加了 0.7%。
总结
提出了将知识信息整合到语言表示模型中的ERNIE模型。 为更好地融合来自文本和 KG 的异构信息,作者提出了知识聚合器和预训练任务 dEA。 实验结果表明,ERNIE 在去噪远程监督数据和对有限数据进行微调方面都比 BERT 更好。
未来的研究还有三个重要方向:
(1)将知识注入基于特征的预训练模型,例如 ELMo;
(2) 将多样化的结构化知识引入语言表示模型,例如与世界知识数据库 Wikidata 不同的 ConceptNet ;
(3) 启发式地注释更多真实世界的语料库以构建更大的预训练数据。