『清华ERNIE』 与 『百度ERNIE』 的爱恨情仇

『清华ERNIE』 与 『百度ERNIE』 的爱恨情仇
FesianXu 20210219 at Baidu intern

前言

最近笔者在查看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

知乎专栏: 计算机视觉/计算机图形理论与应用

微信公众号

qrcode


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在训练过程中是固定的。
entities

Fig 1.1 将句子中的命名实体进行知识图谱的组织。

有了能够表达实体之间关系的实体嵌入特征,那么就需要考虑如何将其引入到BERT中了。作者提出的网络如Fig 1.2所示。其中有三大模块,一个是T-encoder,对文本的Token输入进行编码;一个是K-Encoder,对知识图谱的实体嵌入特征进行编码;最后一个是aggregator,用于对文本特征和实体特征的融合。
tshihua_ernie

Fig 1.2 清华ERNIE的网络结构示意图。

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}=TEncoder({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} MHATT)组成,首先如公式(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}=MHATT({w1i1,,wni1})=MHATT({e1i1,,emi1})(1.2)
其中的 i i i表示第 i i iaggreagator,随后对两者信息进行互相集成,我们期望有一个对齐关系 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特征和实体特征的隐层特征。这个融合特征的方法很容易理解,

fusion_feats

Fig 1.3 特征融合的过程,见公式(1.3)

如果对应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({w1i1,,wni1},{e1i1,,emi1}))(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}=KEncoder({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(ejwi)=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 PotterJ. K. Rowling都是命名实体,如果MLM将其中某个字符mask掉了,比如将Harry Potter处理成[MASK] Potter这显然是不合理的,我们期望的是对某个实体一并地进行mask,如Fig 2.1所示。
bert_vs_ernie

Fig 2.1 BERT vs ERNIE在MLM模型中的mask机制。

当然,这只是entity-level的策略,除了基本的Basic-level策略外,在本文中,作者还引入了phrase-level的策略,具体我们见Fig 2.2所示。其中的Basic-level策略和传统MLM一样,随机对单词进行mask;Phrase-level策略更为精致一些,其用一些分块,分phrase算法将phrase进行分段后,然后以phrase为单位进行mask;entity-level策略就是通过NER算法将文本中的命名实体找出来后进行mask。
three-levels

Fig 2.2 三种不同层次的masking策略,可以学习到不同粒度的语言模型。

这里没有像清华的工作一样用显式地引入知识图谱的实体嵌入特征,而是尝试让模型通过entity-level mask进行隐式的学习。


百度 ERNIE 2.0

同样,百度的ERNIE 2.0还是坚守其『简单可依赖』的特点,其模型没有任何改变,但是作者引入了持续多任务学习的概念(Continual Multi-task learning),添加了粒度从粗到细的一系列task(可以认为是不同的损失函数),从而让ERNIE 2.0实现了霸榜的地位。我们分析一下。

为了描述复杂的文本语义关系,我们可能会定义很多的任务进行描述,粒度从细到粗有以下几类:

  1. Word-aware pretrain task,这类型的任务考虑如何组织单词之间的词法关系。
  2. Structure-aware pretrain task,这类型的任务考虑如何组织句子之间的句法关系。
  3. Semantic-aware pretrain task, 该类型的任务考虑如何组织文本语义块之间的语义关系。

每一个大类的任务里面可能有很多小类任务,而且可能随时会添加新的任务,为了使得这个过程可控,通常我们需要用持续学习(Continual Learning)进行多任务的管理,如Fig 3.1 所示,持续学习通过分阶段地分别训练某个任务达到『可持续』的目的。然而,深度模型训练过程中存在遗忘效应,经常后面训练的任务会覆盖之前学习到的知识;这个时候就可以考虑采用多任务学习(Multi-task learning)的方式进行学习,如Fig 3.1所示,通过联合多个任务同时训练,可以保证模型同时能对多任务的信息进行感知。将两者结合起来,就有了序贯结构的可持续多任务学习框架了。
learning_vs

Fig 3.1 不同学习方式的对比。
作者在训练中,采用了如Fig 3.2所示的多种任务进行训练,其中分别简单介绍下:
  1. Knowledge Masking: 就是ERNIE 1.0里面提到的entity-level策略。
  2. Token-Document Relation: 这个类似于TF-IDF,是一种统计在某个segment中出现的token在原文章中其他部分出现的频次,是一种通过词频统计去分析文章主题的工具。
  3. Capital Prediction: 用于判断单词是否是大写,因为大写的单词通常具有特殊含义,比如USA,UK,New York等,通常在NER任务中有所帮助。
  4. Sentences Reordering: 将给定的段落随机划分为1到m段,然后将其打乱,预测段的正确顺序。
  5. Sentences Distance:这个是一个分类任务,如果给定两个句子是领接的,那么判断为0;如果给定句子是同一个文章的,那么判断为1;如果给定句子是来自不同文档的,判断为2。这个可以用来以句子的角度去判断文章主题。
  6. Discourse Relation:通过[6]的工作产生数据集,判断给定句子之间的修辞,语义承接关系。具体见[6]。
  7. IR Relevance: 是一个分类任务,采用了百度自己内部搜索结果的数据,对于某个Query而言,产生的doc的Title,如果这两个是匹配的(展示了,而且用户点击了),判断为0;如果在搜索引擎上展示了但是用户没点击,那么是1;如果完全不展示,那么是2。注意,这种数据是商业秘密,不开源的。

multi-task

Fig 3.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模型的改进更为重要:

  1. 更合适的pretrain任务
  2. 更巨大的pretrain数据
  3. 更精致的pretrain label
  4. 更科学的多任务学习框架

qinghua_ernie_glue

Fig 4.1 清华ERNIE在GLUE上的结果。

baidu_ernie_2.0_glue

Fig 4.2 ERNIE 2.0 在GLUE的结果。

chinese_ernie_2.0

Fig 4.3 ERNIE 2.0在中文任务上的表现同样非常出色。

我们继续看看模型的可持续多任务框架是否有效呢?作者同样设计了实验证明,如Fig 4.4所示。
valid_continual

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].

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FesianXu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值