Github:https://github.com/PaddlePaddle/ERNIE
1. ERNIE 1.0
ERNIE 1.0:https://arxiv.org/pdf/1904.09223.pdf
Bert 通过 Basic-Level Masking 来学习单词或字的表征,不同的是,Ernie 使用的是 phrase-level strategy 和 entity-level strategy。将一个 phrase 或者 entity (人名,地名,组织机构名,产品等名词) 作为一个整体掩码。
例如:对 “Harry Potter is a series of fantasy novels written by J. K. Rowling” 掩码时,Bert 和 Ernie 的区别如下图:
通过这种方式,使得模型在训练过程中隐性学到知识依赖,更长语义依赖。Basic-Level Masking、Phrase-Level Masking、Entity-Level Masking 掩码区别:
2. ERNIE 2.0
ERNIE 2.0:https://arxiv.org/pdf/1907.12412.pdf
在 Ernie 2.0 论文中提到,预训练模型通常都是通过训练语料中词和句子的共现来进行学习。但是,像词法、语法、语义信息对于模型来说也是非常有价值的内容。比如:
- NER 中的人名、地名、组织名中可能也会包含一些概念信息 (conceptual information),
- 句子的顺序和近似等信息能够使得模型学习到结构化的表征 (structure-aware representations),
- 文档级的相似度,句子间的话语关系(discourse relations among sentences) 使模型学习到语义的表征(semantic-aware representations)。
为了能够使得模型学习到上面提到的这些有价值的信息,论文中提出了一种:连续预训练学习框架,该框架使得模型能够增量式的在不同的雨预训练任务上进行学习。
简单讲 Ernie 2.0 主要做了以下两件事情:
1. 提出一种能够进行增量训练的连续预训练框架
2. 提出 3 种不同的训练任务用于帮助模型去获得前面提到的词法、语法、语义等层面的信息
下图为 3 种不同的任务,以及具体的预训练任务:
从这张图,我们可以看到,Ernie 2.0 的输入会将 Token Embedding、Position Embedding、Sentence Embedding、Task Embedding 相加之后送入后续网络进行上下文特征提取。
下图为 Ernie 2.0 Framework:
- 先根据大数据和先验知识构建一系列的预训练任务(左下角)
- 进行增量式的连续学习
- 预训练模型在具体任务数据集上进行微调用于下游任务
这个增量式的学习,论文中共提到了 3 种 方法,如下图:
这三个方法,我的理解是:
- Sequential Multi-task Learning:第一阶段 Task1 先进行训练,第二阶段 Task1、Task2 在 Task1 学习参数基础上进行训练,同时会存在多个训练任务
- Multi-taks Learning:应该是 Task1、Task2 … Taskn 同时训练
- Continual Learning:应该 Task1 训练完成之后,Task2 在 Task1 学习参数基础上进行训练,同时只有一个任务在训练
论文中还提到,输入之后需要进行上下文的编码,这部分网络可以使用循环神经网络,也可以使用基于自注意力机制的深度 transformer 网络。
另外,多任务的训练,就需要进行多任务损失的计算,Ernie 2.0 使用了 sentence-level 损失和 token-level 损失,Bert 的 MLM 就是 token-level 损失,NSP 就是 setence-level 损失。
关于 Ernie 2.0 三种预训练任务的细节可以论文中查看。
3. ERNIE 3.0
ERNIE 3.0:https://arxiv.org/pdf/2107.02137.pdf
Ernie 3.0 中主要了两件事:
- 自编码模型适合解决 NLU 任务,自回归模型适合解 NLG 任务,Ernie 3.0 将两者融合,使得一个模型通过 zero/few shot learning 或者 fine tuning 就能够同时兼顾这两方面的任务
- Ernie 3.0 时一个包含了 10 billion 参数的大型预训练模型,并且该模型在 NLU 和 NLG 两方面都得到了极好的成绩
Ernie 3.0 的框架:
- 将大量的文本数据和知识进行编码
- 送到 Universal Representation 网络进行通用的信息,论文提到这一层用 Transformer-XL 网络
- 接下来将提取到的通用信息用于 Task-spectific Representation 网络学习,这一层包含 NLU、NLG 任务的两个 Transformer-XL 网络
- 最后,经过 fine tuning、zero-shot、few-shot learning 用于下游任务
在 Ernie 3.0 中论文中设计了一些用于网络连续学习的预训练任务,部分任务和 Ernie 2.0 相同,任务主要包含 3 类:
- Word-aware Pre-training Tasks
- Structure-aware Pre-training Tasks
- Knowledge-aware Pre-training Tasks
具体任务描述,可以参考论文中的细节。