Bert改进模型汇总(1)

目录

Intro

ERNIE from Baidu

ERNIE from THU

Reference


Intro

Bert自问世以来横扫NLP各大榜单,但Bert模型本身还存在着或多或少的问题,因此后续学术界也针对Bert的缺陷提出了各类改进模型,今天这篇文章我就大致总结下我所了解到的模型。

首先先上两张图,总结的非常好

ERNIE from Baidu

论文地址 https://arxiv.org/pdf/1904.09223.pdf

GitHub地址 https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE

百度提出的ERNIE模型主要是针对BERT在中文NLP任务中表现不够好提出的改进。我们知道,对于中文,bert使用的基于字的处理,在mask时掩盖的也仅仅是一个单字,举个栗子:

我在上海交通大学玩泥巴-------> 我 在 上 海 [mask] 交 通 【mask】学 玩 【mask】 巴。

作者们认为通过这种方式学习到的模型能很简单地推测出字搭配,但是并不会学习到短语或者实体的语义信息, 比如上述中的【上海交通大学】。于是文章提出一种知识集成的BERT模型,别称ERNIE。ERNIE模型在BERT的基础上,加入了海量语料中的实体、短语等先验语义知识,建模真实世界的语义关系。

那么怎么样才能使得模型学习到文本中蕴含的潜在知识呢?不是直接将知识向量直接丢进模型,而是在训练时将短语、实体等先验知识进行mask,强迫模型对其进行建模,学习它们的语义表示。

此外,为了更好地建模真实世界的语义关系,ERNIE预训练的语料引入了多源数据知识,包括了中文维基百科,百度百科,百度新闻和百度贴吧(可用于对话训练)。

具体来说, ERNIE采用三种masking策略:

  • Basic-Level Masking: 跟bert一样对单字进行mask,很难学习到高层次的语义信息;
  • Phrase-Level Masking: 输入仍然是单字级别的,mask连续短语;
  • Entity-Level Masking: 首先进行实体识别,然后将识别出的实体进行mask。

经过上述mask训练后,短语信息就会融入到word embedding中了。

ERNIE from THU

论文地址 https://arxiv.org/pdf/1905.07129.pdf

GitHub地址 https://github.com/thunlp/ERNIE

已有的预训练语言模型很少考虑知识信息,具体而言即知识图谱(knowledge graphs,KG),知识图谱能够提供丰富的结构化知识事实,以便进行更好的知识理解。简而言之,预训练语言模型只知道语言相关的「合理性」,它并不知道语言到底描述了什么,里面是不是有什么特殊的东西。

来自清华大学的张正彦、韩旭、刘知远、孙茂松和来自华为诺亚方舟实验室的蒋欣、刘群最近发布了一项研究,他们认为知识图谱中的多信息实体(informative entity)可以作为外部知识改善语言表征。

该研究结合大规模语料库和知识图谱训练出增强版的语言表征模型 (ERNIE),该模型可以同时充分利用词汇、句法和知识信息。实验结果表明 ERNIE 在多个知识驱动型任务上取得了极大改进,在其他 NLP 任务上的性能可以媲美当前最优的 BERT 模型。

为此,作者们提出了ERNIE模型,同时在大规模语料库和知识图谱上预训练语言模型:

  1. 抽取+编码知识信息: 识别文本中的实体,并将这些实体与知识图谱中已存在的实体进行实体对齐,具体做法是采用知识嵌入算法(如TransE),并将得到的entity embedding作为ERNIE模型的输入。基于文本和知识图谱的对齐,ERNIE 将知识模块的实体表征整合到语义模块的隐藏层中。
  2. 语言模型训练: 在训练语言模型时,除了采用bert的MLM和NSP,另外随机mask掉了一些实体并要求模型从知识图谱中找出正确的实体进行对齐(这一点跟baidu的entity-masking有点像)。

okay,接下来看看模型到底长啥样?

如上图,整个模型主要由两个子模块组成:

  • 底层的textual encoder (T-Encoder),用于提取输入的基础词法和句法信息,N个,T-Encoder 依然是对原来的文本进行编码,这部分和 BERT 是一样的;
  • 高层的knowledgeable encoder (K-Encoder), 用于将外部的知识图谱的信息融入到模型中,M个,在 K-Encoder 中,可以看到输入输出都变成了两个,多了 entity 的信息。

这里T-encooder跟bert一样就不再赘述,主要是将文本输入的三个embedding加和后送入双向Transformer提取词法和句法信息:

K-encoder中的模型称为aggregator,输入分为两部分:

  • 一部分是底层T-encoder的输出 
  • 一部分是利用TransE算法得到的文本中entity embedding, 
  • 注意以上为第一层aggregator的输入,后续第K层的输入为第K-1层aggregator的输出

接着利用multi-head self-attention对文本和实体分别处理:

然后就是将实体信息和文本信息进行融合,实体对齐函数为  :

  • 对于有对应实体的输入:

  • 对于没有对应实体的输入词:

上述过程就是一个aggregator的操作,整个K-encoder会叠加M个这样的block:

最终的输出为最顶层的Aggregator的token embedding和entity embedding。

训练细节

从模型上实现了知识图谱信息的有效融合,那如何训练呢?如果单纯还是和 BERT 的训练方式相同,知识图谱的知识信息可能并不能如期望的那样进行有效融合,因此作者参考 Masked Language Model 设计了一个 denoising Entity Auto-encoder (dEA) 任务,用以训练模型对实体信息的感知和对齐,具体内容如下。

dEA 的目的就是要求模型能够根据给定的实体序列和文本序列来预测对应的实体,首先是实体和文本之间的对齐概率计算:

这个公式也被当作训练 dEA 时的损失函数,有了目标,那么数据该如何准备呢?和 Masked Language Model 类似,作者对实体也做了如下处理: 

  • 对于一个给定的文本-实体对应序列,5% 的情况下,实体会被替换为一个随机的实体,这么做是为了让模型能够区分出正确的实体对应和错误的实体对应; 
  • 对于一个给定的文本-实体对应序列,15% 的情况下,实体会被 mask,这是为了保证模型能够在文本-实体没有被完全抽取的情况下找到未被抽取的对应关系; 
  • 对于一个给定的文本-实体对应序列,剩下的 80% 的情况下,保持不变,这是为了保证模型能够充分利用实体信息来增强对文本语义的表达。 

Reference

站在BERT肩膀上的NLP新秀们(PART I)

ACL 2019 | 基于知识增强的语言表示模型,多项NLP任务表现超越BERT

发布了74 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/sinat_25394043/article/details/104188322
今日推荐