前言
最近笔者在查看ERNIE论文的时候,发生了一件很乌龙的事情,本来笔者要查的是百度的ERNIE [2],但是没想到清华也有一个ERNIE [3],这俩论文的题目非常像,而且都开源了,所以笔者就对着清华ERNIE的论文在百度ERNIE的开源代码[4]里面找对应的code片段…也是极度无语了。不过后面发现了自己的傻X错误之后,重新把百度的ERNIE 1.0 [2]和 ERNIE 2.0 [1]的论文看了遍,发现其和清华ERNIE之间有些地方存在对比,也许写出笔记来会给读者带来一点帮助。 如有谬误请联系指出,本文遵守 CC 4.0 BY-SA 版权协议,转载请联系作者并注明出处,谢谢。
∇ \nabla ∇ 联系方式:
e-mail: FesianXu@gmail.com
github: https://github.com/FesianXu
知乎专栏: 计算机视觉/计算机图形理论与应用
微信公众号:
BERT 与 命名实体
目前一般谈到ERNIE,最为出名的都是百度的ERNIE,百度ERNIE不仅在各大数据集上实现了多种任务的SOTA结果,冠绝群雄,而且在业务中也得到了广泛的应用。本文以后的ERNIE都表示百度ERNIE,而对清华的工作称之为『清华ERNIE』。无论是ERNIE还是清华ERNIE都是基于BERT进行改进而来的,BERT已经有很多很好的博客进行讲解了,这里不累述。在ERNIE 1.0和清华ERNIE中,作者们都尝试在BERT的语言模型中引入知识图谱中的实体/命名实体[5]的概念,从而引入知识图谱的先验知识。我们后续分别介绍 清华ERNIE,ERNIE 1.0和ERNIE 2.0的一些内容,以及这些工作之间的对比与分析。
清华ERNIE
该工作的全称是Enhanced language Representation with iNformatIve Entities
(ERNIE),其基本思想就是在BERT的语言模型中引入了知识图谱中的命名实体的先验知识,这个动机是很直观的,以以下这句话为例子:
Bob Dylan wrote Blowin’ in the Wind in 1962, and wrote Chronicles: Volume One in 2004.
其中 加粗 的表示文本中的命名实体,如果将这些命名实体用知识图谱的方式组织起来,那么可以如Fig 1.1所示进行组织,显然,实体之间是存在各种关系的。为了将实体之间的关系组织起来,对齐文本与知识图谱的实体关系,并且将其引入BERT,清华ERNIE用TransE对大型知识图谱库wikipedia进行实体知识embedding,具体而言,作者采样了5, 040, 986个实体和24, 267, 796事实对,这些实体embedding在训练过程中是固定的。
有了能够表达实体之间关系的实体嵌入特征,那么就需要考虑如何将其引入到BERT中了。作者提出的网络如Fig 1.2所示。其中有三大模块,一个是T-encoder
,对文本的Token输入进行编码;一个是K-Encoder
,对知识图谱的实体嵌入特征进行编码;最后一个是aggregator
,用于对文本特征和实体特征的融合。
T-Encoder: 这个模块的设计很简单,直接照搬了Transformer编码器的设计,这里不累述,直接用式子(1.1)表示:
{
w
,
⋯
,
w
n
}
=
T
−
E
n
c
o
d
e
r
(
{
w
1
,
⋯
,
w
n
}
)
(1.1)
\{\mathbf{w}_,\cdots,\mathbf{w}_n\} = \mathrm{T-Encoder}(\{w_1,\cdots,w_n\}) \tag{1.1}
{w,⋯,wn}=T−Encoder({w1,⋯,wn})(1.1)
其中
{
w
1
,
⋯
,
w
n
}
\{w_1,\cdots,w_n\}
{w1,⋯,wn}是令牌化后的文本token,一共有
n
n
n个token。
K-Encoder: 这个模块设计用于对知识图谱实体嵌入特征进行编码。如Fig 1.2所示,其主要由两个自注意力模块(
M
H
−
A
T
T
\mathrm{MH-ATT}
MH−ATT)组成,首先如公式(1.2)所示分别对token编码特征和实体编码特征进行多头注意力集成,有:
{
w
~
1
i
,
⋯
,
w
~
n
i
}
=
M
H
−
A
T
T
(
{
w
1
i
−
1
,
⋯
,
w
n
i
−
1
}
)
{
e
~
1
i
,
⋯
,
e
~
m
i
}
=
M
H
−
A
T
T
(
{
e
1
i
−
1
,
⋯
,
e
m
i
−
1
}
)
(1.2)
\begin{aligned} \{ \widetilde{\mathbf{w}}_1^{i},\cdots,\widetilde{\mathbf{w}}_n^{i} \} &= \mathrm{MH-ATT}(\{\mathbf{w}_1^{i-1},\cdots,\mathbf{w}_n^{i-1}\}) \\ \{ \widetilde{\mathbf{e}}_1^{i},\cdots,\widetilde{\mathbf{e}}_m^{i} \} &= \mathrm{MH-ATT}(\{\mathbf{e}_1^{i-1},\cdots,\mathbf{e}_m^{i-1}\}) \end{aligned} \tag{1.2}
{w
1i,⋯,w
ni}{e
1i,⋯,e
mi}=MH−ATT({w1i−1,⋯,wni−1})=MH−ATT({e1i−1,⋯,emi−1})(1.2)
其中的
i
i
i表示第
i
i
i个aggreagator
,随后对两者信息进行互相集成,我们期望有一个对齐关系
e
k
=
f
(
w
j
)
e_k = f(w_j)
ek=f(wj),那么有:
h
j
=
σ
(
W
~
t
i
w
~
j
i
+
W
~
e
i
e
~
k
i
+
b
~
i
)
w
j
i
=
σ
(
W
t
i
h
j
+
b
t
i
)
e
k
i
=
σ
(
W
e
i
h
j
+
b
e
i
)
(1.3)
\begin{aligned} \mathbf{h}_{j} &= \sigma(\widetilde{\mathbf{W}}^i_t \widetilde{\mathbf{w}}_j^i + \widetilde{\mathbf{W}}_e^i \widetilde{\mathbf{e}}_k^i + \widetilde{\mathbf{b}}^i) \\ \mathbf{w}_{j}^i &= \sigma(\mathbf{W}_t^i \mathbf{h}_j + \mathbf{b}_t^i) \\ \mathbf{e}_k^i &= \sigma(\mathbf{W}_e^i\mathbf{h}_j+\mathbf{b}_e^i) \end{aligned} \tag{1.3}
hjwjieki=σ(W
tiw
ji+W
eie
ki+b
i)=σ(Wtihj+bti)=σ(Weihj+bei)(1.3)
其中的
h
j
\mathbf{h}_j
hj是同时蕴含了token特征和实体特征的隐层特征。这个融合特征的方法很容易理解,
如果对应token不存在实体,那么用公式(1.4)进行融合。
h
j
=
σ
(
W
~
t
i
w
~
j
i
+
W
~
e
i
e
~
k
i
+
b
~
i
)
w
j
i
=
σ
(
W
t
i
h
j
+
b
t
i
)
(1.4)
\begin{aligned} \mathbf{h}_{j} &= \sigma(\widetilde{\mathbf{W}}^i_t \widetilde{\mathbf{w}}_j^i + \widetilde{\mathbf{W}}_e^i \widetilde{\mathbf{e}}_k^i + \widetilde{\mathbf{b}}^i) \\ \mathbf{w}_{j}^i &= \sigma(\mathbf{W}_t^i \mathbf{h}_j + \mathbf{b}_t^i) \end{aligned} \tag{1.4}
hjwji=σ(W
tiw
ji+W
eie
ki+b
i)=σ(Wtihj+bti)(1.4)
将以上过程抽象成公式(1.5)
{
w
1
i
,
⋯
,
w
n
i
}
,
{
e
1
i
,
⋯
,
e
m
i
}
)
=
A
g
g
r
e
g
a
t
o
r
(
{
w
1
i
−
1
,
⋯
,
w
n
i
−
1
}
,
{
e
1
i
−
1
,
⋯
,
e
m
i
−
1
}
)
)
(1.5)
\{\mathbf{w}_1^{i},\cdots,\mathbf{w}_n^{i}\}, \{\mathbf{e}_1^{i},\cdots,\mathbf{e}_m^{i}\}) = \\ \mathrm{Aggregator}(\{\mathbf{w}_1^{i-1},\cdots,\mathbf{w}_n^{i-1}\}, \{\mathbf{e}_1^{i-1},\cdots,\mathbf{e}_m^{i-1}\}) ) \tag{1.5}
{w1i,⋯,wni},{e1i,⋯,emi})=Aggregator({w1i−1,⋯,wni−1},{e1i−1,⋯,emi−1}))(1.5)
整个K-encoder
的公式到此为止,综合之前所述,可以表示为(1.6)。
{
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
}
)
)
(1.6)
\{\mathbf{w}_1^{o},\cdots,\mathbf{w}_n^{o}\}, \{\mathbf{e}_1^{o},\cdots,\mathbf{e}_m^{o}\} = \\ \mathrm{K-Encoder}(\{\mathbf{w}_1,\cdots,\mathbf{w}_n\}, \{\mathbf{e}_1,\cdots,\mathbf{e}_m\})) \tag{1.6}
{w1o,⋯,wno},{e1o,⋯,emo}=K−Encoder({w1,⋯,wn},{e1,⋯,em}))(1.6)
{ w 1 o , ⋯ , w n o } , { e 1 o , ⋯ , e m o } \{\mathbf{w}_1^{o},\cdots,\mathbf{w}_n^{o}\}, \{\mathbf{e}_1^{o},\cdots,\mathbf{e}_m^{o}\} {w1o,⋯,wno},{e1o,⋯,emo}将会作为特定下游任务的特征进行处理。
模型部分就到此为止,总体来看其模型设计的很常规,token和entity的特征分别输入,然后通过编码,融合之后再次分离开,使得分离开后的特征同时融合有对方的信息。考虑到此时需要的是实体与token之间的对齐关系,作者借用了denoising entity auto-encoder
(dEA)损失,如式子(1.7)所示:
p
(
e
j
∣
w
i
)
=
exp
(
l
i
n
e
a
r
(
w
i
o
)
⋅
e
j
)
∑
k
=
1
m
exp
(
l
i
n
e
a
r
(
w
i
o
)
⋅
e
k
)
(1.7)
p(e_j|w_i) = \dfrac{\exp{(\mathrm{linear}(\mathbf{w}_i^o) \cdot \mathbf{e}_j) }}{\sum_{k=1}^m \exp{(\mathrm{linear}(\mathbf{w}^o_i) \cdot \mathbf{e}_k)}} \tag{1.7}
p(ej∣wi)=∑k=1mexp(linear(wio)⋅ek)exp(linear(wio)⋅ej)(1.7)
这个式子通过极大似然去估计某个token预测得到某个实体的概率,通过交叉熵进行损失衡量。注意到,其中采用的
e
j
\mathbf{e}_j
ej表示第
j
j
j个实体的原始输入嵌入特征,因为这样才能度量融合后的token特征
w
i
o
\mathbf{w}_i^o
wio蕴含对应实体的信息量大小。
同时作者还采用了传统BERT训练中的文本Masked Language Model(MLM)损失和Next Sentence Predict(NSP)损失,其中总损失如:
L
=
L
d
E
A
+
L
m
l
m
+
L
n
s
p
(1.8)
\mathcal{L} = \mathcal{L}_{dEA}+\mathcal{L}_{mlm}+\mathcal{L}_{nsp} \tag{1.8}
L=LdEA+Lmlm+Lnsp(1.8)
评价: 该工作通过网络结构的改造进行KG实体的语义对齐,是一个值得阅读的文章,我们对比百度的工作,就会发现各有特点。
百度ERNIE 1.0
百度的口号是『简单可依赖』,ERNIE的设计的确符合这个口号。同样是为了引入知识图谱中的实体语义,和清华的工作不同,对于ERNIE而言,作者没有对模型结构进行任何修改,采用的就是完全的BERT模型。作者想办法对masked language model进行修改,使得其分层次地对token进行mask。假如给定一句话:
Harry Potter is a series of fantasy novels written by J. K. Rowling
其中的Harry Potter
和J. K. Rowling
都是命名实体,如果MLM将其中某个字符mask掉了,比如将Harry Potter
处理成[MASK] Potter
这显然是不合理的,我们期望的是对某个实体一并地进行mask,如Fig 2.1所示。
当然,这只是entity-level
的策略,除了基本的Basic-level
策略外,在本文中,作者还引入了phrase-level
的策略,具体我们见Fig 2.2所示。其中的Basic-level
策略和传统MLM一样,随机对单词进行mask;Phrase-level
策略更为精致一些,其用一些分块,分phrase算法将phrase进行分段后,然后以phrase为单位进行mask;entity-level
策略就是通过NER算法将文本中的命名实体找出来后进行mask。
这里没有像清华的工作一样用显式地引入知识图谱的实体嵌入特征,而是尝试让模型通过entity-level mask
进行隐式的学习。
百度 ERNIE 2.0
同样,百度的ERNIE 2.0还是坚守其『简单可依赖』的特点,其模型没有任何改变,但是作者引入了持续多任务学习的概念(Continual Multi-task learning),添加了粒度从粗到细的一系列task(可以认为是不同的损失函数),从而让ERNIE 2.0实现了霸榜的地位。我们分析一下。
为了描述复杂的文本语义关系,我们可能会定义很多的任务进行描述,粒度从细到粗有以下几类:
Word-aware pretrain task
,这类型的任务考虑如何组织单词之间的词法关系。Structure-aware pretrain task
,这类型的任务考虑如何组织句子之间的句法关系。Semantic-aware pretrain task
, 该类型的任务考虑如何组织文本语义块之间的语义关系。
每一个大类的任务里面可能有很多小类任务,而且可能随时会添加新的任务,为了使得这个过程可控,通常我们需要用持续学习(Continual Learning)进行多任务的管理,如Fig 3.1 所示,持续学习通过分阶段地分别训练某个任务达到『可持续』的目的。然而,深度模型训练过程中存在遗忘效应,经常后面训练的任务会覆盖之前学习到的知识;这个时候就可以考虑采用多任务学习(Multi-task learning)的方式进行学习,如Fig 3.1所示,通过联合多个任务同时训练,可以保证模型同时能对多任务的信息进行感知。将两者结合起来,就有了序贯结构的可持续多任务学习框架了。
- Knowledge Masking: 就是ERNIE 1.0里面提到的
entity-level
策略。 - Token-Document Relation: 这个类似于TF-IDF,是一种统计在某个segment中出现的token在原文章中其他部分出现的频次,是一种通过词频统计去分析文章主题的工具。
- Capital Prediction: 用于判断单词是否是大写,因为大写的单词通常具有特殊含义,比如USA,UK,New York等,通常在NER任务中有所帮助。
- Sentences Reordering: 将给定的段落随机划分为1到m段,然后将其打乱,预测段的正确顺序。
- Sentences Distance:这个是一个分类任务,如果给定两个句子是领接的,那么判断为0;如果给定句子是同一个文章的,那么判断为1;如果给定句子是来自不同文档的,判断为2。这个可以用来以句子的角度去判断文章主题。
- Discourse Relation:通过[6]的工作产生数据集,判断给定句子之间的修辞,语义承接关系。具体见[6]。
- IR Relevance: 是一个分类任务,采用了百度自己内部搜索结果的数据,对于某个Query而言,产生的doc的Title,如果这两个是匹配的(展示了,而且用户点击了),判断为0;如果在搜索引擎上展示了但是用户没点击,那么是1;如果完全不展示,那么是2。注意,这种数据是商业秘密,不开源的。
实验结果分析
是模型结构改进重要?还是pretrain task重要呢?我觉得这三篇文章给出了一个自己的答案。如Fig 4.1所示展示了清华ERNIE的在GLUE上的结果,Fig 4.2所示展示了百度ERNIE 2.0的GLUE实验结果。我们能发现百度的ERNIE 2.0结果全任务上碾压了清华的ERNIE,达到了SOTA的结果。(我们这里不对比ERNIE 1.0,因为1.0版本其实可以视为是2.0版本的弱化版本,其设计思想都是一脉相承的。)当然,百度的工作在中文任务上的表现也是最出色的,如Fig 4.3所示。这个一定程度说明了,对于这种大规模pretrain模型来说,也许模型结构的修改并没有那么重要,笔者的想法是毕竟现在的pretrain模型都大的惊人,其假设空间非常巨大,如果能控制适合的任务去约束搜索,那么其实是等价于模型显式的结构修改的。就目前来说,也许以下几点对于pretrain模型的改进更为重要:
- 更合适的pretrain任务
- 更巨大的pretrain数据
- 更精致的pretrain label
- 更科学的多任务学习框架
我们继续看看模型的可持续多任务框架是否有效呢?作者同样设计了实验证明,如Fig 4.4所示。
Reference
[1]. Sun, Y., Wang, S., Li, Y., Feng, S., Tian, H., Wu, H., & Wang, H. (2020, April). Ernie 2.0: A continual pre-training framework for language understanding. In Proceedings of the AAAI Conference on Artificial Intelligence (Vol. 34, No. 05, pp. 8968-8975).
[2]. Sun, Yu, Shuohuan Wang, Yukun Li, Shikun Feng, Xuyi Chen, Han Zhang, Xin Tian, Danxiang Zhu, Hao Tian, and Hua Wu. “Ernie: Enhanced representation through knowledge integration.” arXiv preprint arXiv:1904.09223 (2019).
[3]. Zhang, Zhengyan, Xu Han, Zhiyuan Liu, Xin Jiang, Maosong Sun, and Qun Liu. “ERNIE: Enhanced language representation with informative entities.” arXiv preprint arXiv:1905.07129 (2019).
[4]. https://github.com/PaddlePaddle/ERNIE
[5]. https://fesian.blog.csdn.net/article/details/113845918
[6]. Sileo, D., Van-De-Cruys, T., Pradel, C., & Muller, P. (2019). Mining discourse markers for unsupervised sentence representation learning. arXiv preprint arXiv:1903.11850.
[7].