自然语言处理 Paddle NLP - 预训练语言模型及应用
什么是语言理解?
关于疫情的一段对话:
中国:我们这边快完了
欧洲:我们这边快完了
中国:我们好多了
欧洲:我们好多了
挑战:
- 语言的复杂性和多样性
- 多义/同义/歧义现象
- 灵活多变的表达形式
- 语言背后的环境知识
- 以前没钱买华为,现在没钱买华为
语言理解的四个粒度:
- 字的理解 例如:藏
- 词的理解 例如:苹果
- 句子的理解 例如:我们这边快完了
- 篇章的理解 例如:贸易制裁似乎成了美国政府在对华关系中惯用的大棒。然而,这大棒果真如美国政府所希望的那样灵验吗?
好的表示是实现语言理解的基础:一个好的表示,是要具备通用涵义,并且与具体任务无关,是时又能根据具体任务,提供有用信息
理解是针对任务的理解:字词,关注局部信息;句子篇章,关注文本的全局信息
CBOW:基于临近词(上下文)预测词
Skip-Ngram:基于词预测临近词(上下文)
基于预训练的语义理解技术
ELMo:第一个现代的语义理解模型
利用两个LSTM,分别从左到右,从右到左的语言模型建模,实现建模上下文信息的目的。
两层LSTM:从低层到高层,逐个获取不同层次的语言信息,从最低层单词特征,到最高层语文特征
在获取了预训练模型特征以后,如何应用到具体的任务中。
ELMo:采用了 Feature-Based 方式进行应用
加权相加参数 \(a_1、a_2、a_3\) 是可学习的。这是实现动态 Word Embedding 关键所在
ELMo 不仅解决了多义词的问题,而且可以将词性对应起来
ELMo:有什么缺点?
问题1:不完全双向预训练
模型的前向和后向LSTM两个模型是分别训练的,仅在Loss Function阶段进行了结合。问题2:需进行任务相关网络结构设计(GPT可解决网格设计问题)
每种类型的下游任务都需要进行特定的网络结构设计和搭建问题3:仅有词向量,无句向量
ELMo在预训练阶段仅学习了语言模型,无句向量学习任务
GPT:被BERT光芒掩盖的工作
对BERT的诞生,起到了非常明显的推动作用
Pre-training 作为 下游任务的一部分参与任务学习,大量减少下游任务网络中新增参数的数量。同时,下游任务的网络,相比较预训练网络,也只有少量结构上的变动,这样会节省大量时间
对于分类任务:模型只需要在输入文本上加上起始(Start)和终结(Extract)的符号,并在网络后端新增一个分类器(FC)。
对于句子判断:如语言识别,两个句子中增加分隔符就可以了。
对于文本相似度判断、多项选择:只需要少量改动,就能实现 Fine-Tuning 过程
GPT
优点:带来了明显的效果提升,也极大的简化了任务网络相关的结构
缺点:
- 单向预训练
预训练阶段仅采用传统单向语言模型作为训练目标 - 仅有词向量,无句向量
GPT在预训练阶段仅学习了语言模型,无句向量学习任务
BERT:预训练领域的里程碑式突破
Pre-training阶段
- 延用了GPT 网络结构,使用了12层 Transformer Encoder
- 交互式式双向语言模型建模(LM -> Auto-Encoder)
- 引入sentence-level预训练任务
- 更大规模预训练数据:BooksCorpus + Wikipedia(+2.5billion)
Pre-training 目标:
同时训练token-level & sentence-leveltask
- Mask-LM task(Mask token)
15% mask概率,在pre-training阶段实现交互式双向 - Next-sentence句对预测任务
预测当前句的下一句话
BERT:Pre-training 策略分析
BERT Mast-LM ,Mask 力度是 Token(单个字)
BERT 如何将自己的预训练模型,应用到下游任务?使用了简单粗暴的方式:伪结果论
BERT缺点
BERTmask(sub-word)lm任务存在的问题:
- Word哈尔滨;sub-word哈##尔##滨
- Sub-word预测可以通过word的局部信息完成
- 模型缺乏全局建模信息的“动力”
难以学到词、短语、实体的完整语义
ERNIE:基于知识增强的语义理解模型(百度)
将token 力度扩展到了 word 或 entity,使用了百度自建的语义库
ERNIE 在 Fine-tuning 使用了和 BERT 完全一致的方式
2.0 在预训练阶段,引入了更多的预训练任务
如何在学习新知识的同时,不忘旧知识
在预训练阶段,不断进行任务的叠加训练
预训练模型在NLP经典任务的应用
NLP部分经典任务总览
预训练语言模型在下游任务的优势
- 更少的标注数据
- 更高的任务效果
- 更简单的网络结构适配
预训练模型,不是越大越好
预训练模型,如何达到收敛的状态?一直是一个难以界定的范围,越训越大,很难做到预训练充分的结果。目前常规采取的方式是,让它一直训着,抽取实时对预训练模型中产生的中间模型,进行一个具体任务验证,随时采取一个文本匹配任务进行 Fine-Tuning 验证,如果预训练后期,发现了在很长一段时间内,在这样一个验证的下游任务上,得到的 Fine-Tuning 结果,基本持平,我们就认为这个模型达到了一个收敛的状态,或者说局部收敛的状态,这时候就可以给它停下来了。没有一个特别规范的指标
自然语言处理 Paddle NLP - 预训练语言模型及应用的更多相关文章
- 学习AI之NLP后对预训练语言模型——心得体会总结
一.学习NLP背景介绍: 从2019年4月份开始跟着华为云ModelArts实战营同学们一起进行了6期关于图像深度学习的学习,初步了解了关于图像标注.图像分类.物体检测,图像都目标物体检测等 ...
- NLP中的预训练语言模型(五)—— ELECTRA
这是一篇还在双盲审的论文,不过看了之后感觉作者真的是很有创新能力,ELECTRA可以看作是开辟了一条新的预训练的道路,模型不但提高了计算效率,加快模型的收敛速度,而且在参数很小也表现的非常好. 论文: ...
- 预训练语言模型的前世今生 - 从Word Embedding到BERT
预训练语言模型的前世今生 - 从Word Embedding到BERT 本篇文章共 24619 个词,一个字一个字手码的不容易,转载请标明出处:预训练语言模型的前世今生 - 从Word Embeddi ...
- 预训练语言模型整理(ELMo/GPT/BERT...)
目录 简介 预训练任务简介 自回归语言模型 自编码语言模型 预训练模型的简介与对比 ELMo 细节 ELMo的下游使用 GPT/GPT2 GPT 细节 微调 GPT2 优缺点 BERT BERT的预训 ...
- 知识增强的预训练语言模型系列之ERNIE:如何为预训练语言模型注入知识
NLP论文解读 |杨健 论文标题: ERNIE:Enhanced Language Representation with Informative Entities 收录会议:ACL 论文链接: ht ...
- 知识增广的预训练语言模型K-BERT:将知识图谱作为训练语料
原创作者 | 杨健 论文标题: K-BERT: Enabling Language Representation with Knowledge Graph 收录会议: AAAI 论文链接: https ...
- 知识增强的预训练语言模型系列之KEPLER:如何针对上下文和知识图谱联合训练
原创作者 | 杨健 论文标题: KEPLER: A unified model for knowledge embedding and pre-trained language representat ...
- NLP中的预训练语言模型(三)—— XL-Net和Transformer-XL
本篇带来XL-Net和它的基础结构Transformer-XL.在讲解XL-Net之前需要先了解Transformer-XL,Transformer-XL不属于预训练模型范畴,而是Transforme ...
- NLP中的预训练语言模型(一)—— ERNIE们和BERT-wwm
随着bert在NLP各种任务上取得骄人的战绩,预训练模型在这不到一年的时间内得到了很大的发展,本系列的文章主要是简单回顾下在bert之后有哪些比较有名的预训练模型,这一期先介绍几个国内开源的预训练模型 ...
- NLP中的预训练语言模型(二)—— Facebook的SpanBERT和RoBERTa
本篇带来Facebook的提出的两个预训练模型——SpanBERT和RoBERTa. 一,SpanBERT 论文:SpanBERT: Improving Pre-training by Represe ...
随机推荐
- vue路由加载页面
当vue路由切换时,有时候会出现短暂白屏,需要添加一个加载状态 参考:buildadmin 地址:https://demo.buildadmin.com/#/ 利用vue的路由导航守卫:beforeE ...
- Onetable:统一的表格式元数据表示
概括 Onehouse 客户现在可以将他们的 Hudi 表查询为 Apache Iceberg 和/或 Delta Lake 表,享受从云上查询引擎到顶级开源项目的原生性能优化. 在数据平台需求层次结 ...
- python数据类型、变量以及编码和字符串、格式化
1.数据类型包括整型.浮点型.字符串.布尔型. 整数如果位数太多可以用_隔开,浮点数可以用科学记数法表示,字符串要用单引号或者双引号括起来,布尔型的值只能为True和False 2.变量可以由数字.字 ...
- [INS-40996] Installer has detected that the Oracle home (/home/grid) is not empty in the following nodes: [rac2] --求助帖?
问题描述:12c安装grid的时候,一直再报一个[INS-40996] Installer has detected that the Oracle home (/home/grid) is not ...
- SMT贴片加工钢网工艺制作方法
smt贴片加工过程中,首先要进行锡膏印刷,而锡膏印刷的工作原理就是用机器刮刀将锡膏推送到钢网的孔洞中,使锡膏与pcb板的电子元器件接触,为下一步焊接做准备.钢网的作用就是与pcb板焊盘位置固定,使锡膏 ...
- fio性能测试-环境搭建,功能介绍,测试讲解
fio性能测试-环境搭建,功能介绍,测试讲解 Fio介绍:FIO(Flexible I/O Tester)是一个用于测试磁盘.文件系统.块设备和网络设备性能的工具.它可以模拟不同类型的I/O负载,包括 ...
- Redis(三)jedis与锁
1 Jedis 引入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis ...
- 动态规划DP入门问题----最大连续子序列,最长不下降子序列(可以不连续),最长公共子序列
一.最大连续子序列 1.题目叙述 对于一个数字序列A1A2A3...An,求出连续子序列的最大和,如对于序列-2,11,-4,13,-5,-2,其中的最大序列和是11+(-4)+13=20 2.动态规 ...
- c/c++快乐算法第二天
c/c++感受算法乐趣(2) 开始时间2023-04-15 22:26:49 结束时间2023-04-16 00:18:16 前言:首先我们来回忆一下昨天接触了些什么算法题,1.1百钱百鸡问题,1.2 ...
- 基于Mongodb分布式锁简单实现,解决定时任务并发执行问题
前言 我们日常开发过程,会有一些定时任务的代码来统计一些系统运行数据,但是我们应用有需要部署多个实例,传统的通过配置文件来控制定时任务是否启动又太过繁琐,而且还经常出错,导致一些异常数据的产生 网上有 ...