ERNIE/ERNIE 2.0 原理解析

ERNIE

ERNIE(Enhanced Representation through kNowledge IntEgration)是百度在 BERT 的基础上对模型进行了简单的改造,解决了 BERT 的一些弊端,达到了不错的效果。
论文:ERNIE: Enhanced Representation through Knowledge Integration

两大贡献

knowledge masking strategies

BERT 的 mask 方法有一个比较大的弊端,即模型没有考虑先验知识,一些具有连续意义的词组被 mask 掉其中一个单词进行预测远比将完整的词组 mask 之后一起进行预测要困难很多,是不合理的。ERNIE 提出的两种 mask 策略为:

  1. phrase-level strategy:将短语作为一个整体进行 mask。随机在当前句子中选择一些短语进行整体 mask;
  2. entity-level strategy:首先分析句子的实体,然后随机选择进行 mask(即若选到的单词是某个实体的一部分,该实体将被全部 mask)。

DLM(Dialogue Language Model)

BERT 的 NSP 预训练任务被很多人证实对于模型的提升不大,所以 ERNIE 去掉了 NSP 任务,改为通过 Dialogue Language Model 来训练模型表达句子关系的能力。DLM 的具体做法如下:

  1. 使用百度贴吧的多轮对话数据,分为 Query 与 Response,以 [SEP] 分隔;在输入端使用 Dialogue Embedding 替换 BERT 的Sentence Embedding;
  2. 随机选择一部分 Query 或者 Response,使用一个随机的句子进行替换,而 ERNIE 则通过学习来区分该多轮对话的真假。

其他

  1. 模型结构:12 层 Transformer Encoder,768 hidden units,12 头;
  2. 训练数据:中文维基百科、百度百科、百度新闻、百度贴吧,大小分别为 21M,51M,47M,54M;
  3. 文章对于两个创新都进行了 ablation studies;
  4. 最终的模型对于完形填空任务相比于 BERT 有较大的提升。

ERNIE 2.0

ERNIE 2.0 是继 ERNIE 之后提出的一款新的预训练模型,达到了英文和中文场景下的双料 SOTA。
论文:ERNIE 2.0: A Continual Pre-training Framework for Language Understanding

continual pre-training framework

普通的 multi-task learning 有两种方式,但也都存在相应的弊端:

  1. 同时学习。类似于 BERT 的 MLM 和 NSP 任务,但是当任务比较多的时候,同时学习可能不但不会促进模型的效果,反而会促退。
  2. 顺序学习。依次学习不同的任务,模型参数递进的更新,但是这会使模型容易陷入遗忘。

ERNIE 2.0 采用了一种交替式的多任务学习方式。在进行一个 batch 时,以一定概率采样几个 task,用这些 task 的数据构建该 batch 的训练数据。通过在模型的输入中加入一个 task embedding 来区分不同的任务,这样一来,模型既可以学习不同任务级别的信息,又能够减轻遗忘现象。

Pre-training Tasks

ERNIE 2.0 构建了多个预训练任务用来捕获不同方面的信息。word-aware tasks 捕获词汇信息,structure-aware tasks 捕获句法信息,semantic-aware tasks 捕获语义信息。

Word-aware Pre-training Tasks

  1. Knowledge Masking Task。同 ERNIE 1.0。使用这个任务来训练模型的最初版本。
  2. Capitalization Prediction Task。针对英文首字母大写的单词通常在文本中表示特殊的语义。
  3. Token-Document Relation Prediction Task。预测一个 token 是否出现在原文中的其他 segments 中。因为同时在多个 segments 中出现的单词,要么是常见单词,要么与文章的主题词密切相关。

Structure-aware Pre-training Tasks

  1. Sentence Reordering Task。针对一个 paragraph,我们随机打乱 segments 的顺序,通过一个分类任务去预测打乱的顺序类别。可以帮助模型学到文章的句子之间的关系。
  2. Sentence Distance Task。通过一个 3 分类任务,去判断句对 (sentence pairs) 位置关系 (包含邻近句子、文档内非邻近句子、非同文档内句子 3 种类别),更好的建模语义相关性。

Semantic-aware Pre-training Tasks

  1. Discourse Relation Task。通过判断句对 (sentence pairs) 间的修辞关系 (semantic & rhetorical relation),更好的学习句间语义。
  2. IR Relevance Task。从搜索引擎中拿到若监督的数据,构建一个 query 和 title 的 3 分类任务来判断 query 和 title 的关系 (包括用户已点击、出现于结果中但用户未点击、未出现于结果中),更好的建模句对相关性。

其他

  1. ERNIE 2.0 BASE 大小:12 layers, 12 self-attention heads and 768-dimensional of hidden size;ERNIE 2.0 LARGE 大小:24 layers, 16 self-attention heads and 1024-dimensional of hidden size。
  2. 文章没有做 ablation study,加了这么多任务,也不知道到底是哪个起了作用。(好像后续有论文计划)

参考

官方 GitHub:https://github.com/PaddlePaddle/ERNIE
官方 ERNIE 交流 QQ 群:760439550