[nlp] 小傻学百度ERNIE
what is ERNIE
ERNIE:Enhanced Representation through knowledge integration (Baidu)
why ERNIE?
- 通过实体和短语mask能够学习语法和句法信息的语言模型
- 在很多中文自然语言处理任务上达到state-of-the art
- 放出了代码和预训练模型
ERNIE 1.0
简介
方法:与bert类似
训练数据集:中文维基百科,百度百科,百度新闻,百度贴吧
参数: L = 12,H = 768,A = 12 (BERT BASE)
创新点:
字粒度的输入
不同级别的mask(单字(与bert相同)、实体、短语)
mask实现(code)
batching.py —mask函数
其他细节:
中文繁体->简体
英文大写->小写
词表大小17964
dialogue embedding
输入层使用多轮对话修改NSP任务(random replace 构造负样本)
ERNIE 2.0
ERNIE1.0 :
(更多的语料
实体级别的连续Mask——>改变了训练Task
能否通过重新设计Task提升效果?)
ERNIE 2.0: A Continual Pre-Training Framework for Language Understanding (Baidu)
贡献:
多任务持续学习预训练框架 ERNIE 2.0
构建三种类型的无监督任务,训练模型并刷新GLUE
Fine-tuning code & English model
数据更多: Reddit 搜索数据等
参数与BERT一致
the architecture of ERNIE2.0
连续多任务学习
不遗忘之前的训练结果
多任务高效的进行训练
使用上一任务的参数,并且新旧任务一起训练
将每个任务分成多次迭代,框架完成不同迭代的训练自动分配
多任务训练
Sentence level loss & word level loss
每个任务有独立的loss function, sentence task 可以和word task 一起训练
模型结构
Task embedding:表示在训练哪一个task
任务1: 词法级别预训练任务
Knowledge Masking Task(ERNIE 1.0):学习当前和全局依赖
Capitalization Prediction Task:大写用于专名识别等,小写也可用在其他任务
Token-Document Relation Prediction Task:token存在段落A中是否token会在文档的段落B中出现
任务2:语言结构级别预训练任务
对应bert中的NSP任务。
Sentence Reordering Task:文档中的句子打乱(分成1到m段,shuffle),识别正确顺序
Sentence Distance Task:句子间的距离,3分类任务
0 相连的句子
1同一文档中不相连的句子
2两篇文档间的句子
任务3:语法级别预训练任务
Discourse Relation Task:计算两句间的语义与修辞关系
IR Relevance Task:短文本信息检索关系(百度的核心)
Query-title (搜索数据)
0:搜索并点击
1:搜索并展现
2:无关,随机替换
结论
目前来看最好的中英文预训练语言模型之一
(https://gluebenchmark.com/leaderboard)