问答媒体

 找回密码
 立即注册
快捷导航
搜索
热搜: 活动 交友 discuz
查看: 88|回复: 1

百度ERNIE进化

[复制链接]

1

主题

5

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2022-11-5 09:10:04 | 显示全部楼层 |阅读模式
1.背景

BERT带来的预训练模型已经走上了越来越大、各种模态融合的道理上,是对是错也不好说。目前看,提升其实也快到上限了。但是,作为NLP从业者也不能放弃,毕竟要看这个吃饭。
百度之前推出了ERNIE系列,一直没有仔细看过论文,毕竟,预训练模型也不是谁都能训的起的。但在知乎、公众号等地方看中文介绍的时候总感觉看不明白,于是,还是原论文走起。
ERNIE系列论文看起来解决的问题是递进的,部分也有源码放出(除了关键地方)
2 ERNIE1.0

论文

要解决的问题


  • 原生BERT的mask机制可以根据实体内的上下文去预测,比如“Harry Potter is a series
of fantasy novels written by J. K. Rowling”,如果mask了Harry,模型预测会很容易。
解决思路


  • 如果mask掉实体“Harry Potter”让模型来预测,是不是难度就大了?需要足够强的先验知识。
ERNIE1.0就沿着这个思路,增加两个mask策略:短语级别mask和实体级别mask策略。跟原生mask机制相比,就是mask整个短语或者实体。
论文细节

看下面两张图足够了




ERNIE1.0只是修改了mask方式,其他模块和计算方式与BERT一致。
除此之外,ERNIE1.0加入了一个对话语言模型任务(DLM),论文任务对话数据(Query-Response格式)对语义表示很重要,因为,query和response通常是相似的。具体方式是将多轮问答数据输入里除了word embedding和positional embedding之外,加入了表示Q和R的embedding,类似于原生BERT的next sentence predict任务。训练时配合mask language model任务一起进行。
实验部分


  • 数据:搜集异质的数据,有中文维基百科(21M)、百度百科(51M)、百度新闻(47M)和百度贴吧(54M)
  • 实验结果


  • 与BERT相比,在中文任务上提升还比较明显


3.ERNIE2.0

论文




要解决的问题

之前的预训练主要就是mask language model,是不是有点过于简单?世界那么大,还有很多任务可以用于预训练。
但是,加入多个任务,要解决两个问题:

  • 如何防止遗忘之前任务的知识
  • 如何高效训练。
解决思路


  • 增加预训练任务
  • 连续多任务学习

  • 设计了词级别预训练任务、结构级别预训练任务(structure-aware)、语义级别预训练,其中只有词级别预训练任务中的knowledge masking task是ERNIE1.0的任务,其他为新任务。这些任务后面会重点介绍
  • 如何进行持续多任务学习
论文采用了sequential multi-task learning,即先用前N个任务训练模型,第N+1个任务时,N+1个任务同时进行训练。查看了源码,貌似并没有该部分代码,是觉得别人太low不配自己预训练吗?
与多任务训练(下图中间)的区别:不是一次性N个任务一起从头训练,可以高效?
与持续学习(下图最右)的区别:每次只训练一个任务,容易遗忘之前的任务得到的信息。


论文细节


  • 模型结构


最大的变化是增加了一个task embedding。

  • 预训练任务
任务分为词级别预训练任务、结构级别预训练任务(structure-aware)、语义级别预训练任务
词级别预训练任务
knowledge masking task:这里知识主要是短语和实体,基本同ERNIE1.0的训练
Capitalization Prediction Task:该任务预测一个词是不是首字母大写。大写字母在句子中位置特殊,可以认为带有某种语义信息。该任务只能是拉丁语系才能用。
Token-Document Relation Prediction Task:这个任务是预测一个文档的一个片段的某个词是否在这个文档的其他片段中出现。有点tfidf的意思,可以学习到关键词。
结构级别预训练任务
Sentence Reordering Task:将文档切分为N个片段,并随机打乱,模型来预测正确的顺序。模型看做是K分类任务。该任务可以学习到文档中句子关系
Sentence Distance Task:该任务预测两个句子是不是在一个文档中及其关系。算是原生BERT的next sentence prediction任务的扩展,这是一个三分类任务:如果两个句子在同一个文档且相邻,标注0;如果在同一个文档但不相邻,标注1,;如果不在同一个文档,标注2
语义级别预训练任务
Discourse Relation Task:该任务预测两个句子的语义或者修辞关系
IR Relevance Task:该任务是利用信息抽取信息来预测短文本相关性。有一个查询query和title,在搜索引擎里查询,如果这个title出现在搜索结果但是用户没有点击,说明是弱相关,标注1,如果用户有点击,说明是强相关,标注0,如果title没有出现在搜索结果里,是无关的,标注2
实验部分


  • 数据



  • 实验结果


  • 又是全面胜出


最后吐槽,预训练模型吧,这么多的改进点,一个消融实验也没有,啥有用啥没用咱也不知道。不是有钱么,怎么不任性点?
4.ERNIE3.0

论文

要解决的问题


  • 预训练中知识不够,之前仅mask实体和短语,并没有考虑实体关系(知识图谱中的三元组)
  • 预训练模型要么是auto-encoding(BERT系列)要么是auto-regression(GPT系列),前者适合分类等任务,后者适合生成任务,能不能统一训练
解决思路


  • 知识不够,那就把知识图谱引入,让模型有能力预测三元组中的关系,论文中称为Universal Knowledge-Text Prediction任务
  • auto-encoding和auto-regression怎么统一?粗暴一点,设计一个底层共享的模型,上面接两个模型,一个做auto-encoding,一个做auto-regression。论文中底层共享叫Universal Representation Module,上层模型叫Task-specific Representation Module,分为两个:做auto-encoding的模型叫language understanding network,做auto-regression的叫language generation network。
论文细节


  • 模型整体结构


在模型选择上,无论底层共享模型还是上层任务模型都是采用了transformer-xl,可以支持更长的序列。
2. 预训练任务介绍
预训练任务分类三大类:词级别、结构级别、知识图谱级别的预训练任务
词级别预训练任务
Knowledge Masked Language Modeling:见ERNIE1.0
Document language modeling:该任务就是一个生成任务,具体参考ERNIE-Doc模型(还没看过)
结构级别预训练任务
Sentence Reordering:见ERNIE2.0
Sentence Distance:见ERNIE2.0
知识图谱级别预训练任务
Universal Knowledge-Text Prediction:该任务是要预测句子涉及到的知识图谱三元组中的关系。给定一个句子,先在知识图谱中找到相关三元组,然后mask三元组中的关系或者句子中的词,然后模型做预测


2. 模型训练
训练策略采用了Progressive training,模型从小到大训练,可以提升模型训练稳定性。训练时序列长度从小到大逐步增加、batch逐渐增加、学习率逐渐增加等。
实验部分


  • 数据
在ERNIE2.0基础上疯狂增加了。对数据进行了一些去重和过滤处理。


2. 实验结果

  • 一堆任务的SOTA


附录

ERNIE源码

论文列表
回复

使用道具 举报

1

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2025-3-4 14:47:01 | 显示全部楼层
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver| 手机版| 小黑屋| 问答媒体

GMT+8, 2025-3-16 10:49 , Processed in 0.080353 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2020, LianLian.

快速回复 返回顶部 返回列表