自然语言处理从入门到应用——预训练模型总览:两大任务类型

news2024/11/15 19:37:31

分类目录:《自然语言处理从入门到应用》总目录


从大量无标注数据中进行预训练使许多自然语言处理任务获得显著的性能提升。总的来看,预训练模型的优势包括:

  • 在庞大的无标注数据上进行预训练可以获取更通用的语言表示,并有利于下游任务
  • 为模型提供了一个更好的初始化参数,在目标任务上具备更好的泛化性能、并加速收敛
  • 是一种有效的正则化手段,避免在小数据集上过拟合,而一个随机初始化的深层模型容易对小数据集过拟合

下图就是各种预训练模型的思维导图,其分别按照词嵌入(Word Embedding)方式分为静态词向量(Static Word Embedding)和动态词向量(Dynamic Word Embedding)方式分类、按照监督学习和自监督学习方式进行分类、按照拓展能力等分类方式展现:
预训练模型总览
思维导图可编辑源文件下载地址:https://download.csdn.net/download/hy592070616/87954682

预训练模型按照任务类型可分为2大类:监督学习和自监督学习两类。监督学习在预训练模型中的主要代表就是CoVe,CoVe作为机器翻译的Encoder部分可以应用于多种NLP下游任务。除了CoVe外,NLP中的绝大多数预训练模型都属于自监督学习。自监督学习实际是无监督学习的一种方法,自监督学习主要是利用辅助任务从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征。因此,从“构造监督信息”这个角度来看,自监督也可看作是监督学习和无监督学习的一种融合。严格地讲,从是否由人工标注来看,自监督学习属于无监督学习的范畴。综合各种自监督学习的分类方式,我们可以将预训练模型在自监督学习中分为两种类型:基于上下文(Context Based)和基于对比(Contrastive Based)。

基于上下文(Context Based)的预训练模型

基于上下文的预训练模型主要基于数据本身的上下文信息构造辅助任务,在NLP中我们通常引入语言模型作为训练目标。预训练模型中的语言模型主要分为三大类:

模式语言模型类型优点缺点
LM自回归语言模型语言模型联合概率的无偏估计,考虑被预测单词之间的相关性,适合生成任务按照文本序列顺序拆解(从左至右分解),无法获取双向上下文信息表征
DAE自编码语言模型本质为降噪自编码(DAE)特征表示,通过引入噪声[MASK]构建MLM获取双向上下文信息表征引入独立性假设,为语言模型联合概率的有偏估计,没有考虑预测token之间的相关性;预训练时的[MASK]噪声在微调不会出现,造成两阶段不匹配问题
PLM排列语言模型综合了LM和DAE两者的优点收敛速度较慢; XLNet对于多种排列方式随机采样,并仅预测了排列后序列的最后几个token
自回归语言模型(LM): p ( x 1 : T ) = ∏ t = 1 T p ( x t ∣ x 0 : t − 1 ) p(x_{1:T})=\prod_{t=1}^Tp(x_t|x_{0:t-1}) p(x1:T)=t=1Tp(xtx0:t1)
  • 优点:语言模型(Language Model,LM)联合概率的无偏估计,即为传统的语言模型,考虑被预测单词之间的相关性,天然适合处理自然生成任务
  • 缺点:联合概率按照文本序列顺序拆解(从左至右分解),无法获取双向上下文信息表征
  • 代表模型:ELMO、GPT-1、GPT-2、ULMFiT、SiATL
自编码语言模型(DAE): p ( x 1 : T ) ≈ ∑ t = 1 T m t log ⁡ p ( x t ∣ x ~ ) p(x_{1:T})\approx\sum_{t=1}^Tm_t\log p(x_t|\tilde{x}) p(x1:T)t=1Tmtlogp(xtx~)

BERT是自编码语言模型的一个典型代表,但其采用的MLM策略和Transformer Encoder结构,导致其不适合直接处理生成任务。为了解决这一问题,也可采用基于Seq2Seq MLM方法:Encoder部分采取masked策略,而Decoder部分以自回归的方式预测Encoder部分被masked的token。此外,还有很多基于自编码语言模型的预训练模型提出了不同的MLM增强策略,称之为 Enhanced Masked Language Modeling(E-MLM)。

  • 优点:
    • 本质为降噪自编码(DAE)特征表示,通过引入噪声[MASK]构建MLM(Masked Language Model),获取双向上下文信息表征(DAE旨在采用部分损坏的输入,期望在恢复原始的未失真输入,故自编码语言模型MLM也可以视为DAE的一种)
    • 如果当前token被预测,则 m t = 1 m_t=1 mt=1,否则 m t = 0 m_t=0 mt=0 x ~ \tilde{x} x~为原始文本被替换后的输入
  • 缺点:
    • 引入独立性假设,为语言模型联合概率的有偏估计,没有考虑预测token之间的相关性
    • 预训练时的[MASK]噪声在微调阶段不会出现,造成两阶段不匹配问题,为解决这一问题,在15%被预测的token中,80%被替换为[MASK],10%被随机替换,10%被替换为原词。
  • 代表模型:BERT、MASS、T5、RoBERTa、UniLM、XLM、SpanBERT、ERNIE-Baidu、E-BERT、ERNIE-THU、BART。
排列语言模型(PLM)

排列语言模型(Permuted Language Model,PLM)综合了LM和DAE两者的优点。严格来讲,PLM和LM是标准的自回归语言模型(PLM是一种广义的自回归方法),而MLM不是一个标准的语言模型,其引入独立性假设,隐式地学习预测token(mask部分本身的强相关性)之间的关系。如果衡量序列中被建模的依赖关系的数量,标准的自回归语言模型可以达到上界,不依赖于任何独立假设。LM和PLM能够通过自回归方式来显式地学习预测token之间的关系。然而,LM无法对双向上下文进行表征,而PLM将这种传统的自回归语言模型(LM)进行推广,将顺序拆解变为随机拆解(从左至右分解),产生上下文相关的双向特征表示。PLM最为典型的代表就是XLNet,这是对标准语言模型的一个复兴[:提出一个框架来连接标准语言模型建模方法和预训练方法。PLM的本质就是语言模型联合概率的多种分解机制的体现,其将LM的顺序拆解推广到随机拆解。PLM没有改变原始文本序列的自然位置,只是定义了token预测的顺序。PLM只是针对语言模型建模不同排列下的因式分解排列,并不是词的位置信息的重新排列。

下表是上述三类语言模型的总结:

模型语言模型编码器特点
ELMoLMLSTM2个单向语言模型(前向和后向)的拼接
ULMFiTLMLSTM引入逐层解冻解决微调中的灾难性问题
SiATLLMLSTM引入逐层解冻+辅助LM解决微调中的遗忘问題
GPT-1LMTransformer-Decoder首次将Transformer应用于预训练语言模型
GPT-2LMTransformer-Decoder没有特定模型的微调流程,生成任务取得很好效果
BERTDAE(MLM)Transformer-EncoderMLM获取上下文相关的双向特征表示
MASS / T5DAE(Seq2SeqMLM)Transformer统一为类似Seq2Seq的预训练框架来改进BERT生成任务
UNILMDAE(E-MLM)Transformer-Encoder通过3个mask矩阵改进BERT生成任务
RoBERTaDAE(E-MLM)Transformer-Encoder预训练过程中采用动态mask
XLMDAE(E-MLM)Transformer-Encoder在翻译语言模型的平行语料上执行MLM
SpanBERTDAE(E-MLM)Transformer-Encoder采用random span mask和span boundary objective2个预训练目标
ENRIE-BAIDUDAE(E-MLM)Transformer-Encodermask实体和短语,2.0版本引入多任务进行增量学习
ENRIE-THU / E-BERTDAE(E-MLM)Transformer-Encoder引入知识:将实体向量与文本表示融合
BARTDAETransformer采用Seq2Seq框架和5中DAE方法
XLNETDAE(PLM)Transformer-XL双向上下文表征和双注意力流

基于对比(Contrastive Based)的预训练模型

基于对比(Contrastive Based)的预训练模型不同于基于上下文(Context Based)的预训练模型通过数据本身的上下文信息构造辅助任务,基于对比的预训练模型主要是利用样本间的约束信息构造辅助任务,这类方法也称为对比学习(Contrastive learning,CTL)。对比学习假设观察到的文本对(正样本)在语义上比随机采样的文本(负样本)更相似。对比学习背后的原理是在对比中学习。相较于语言建模,对比学习的计算复杂度更低,因而在预训练中是理想的替代训练标准。

对比学习通过构建正样本和负样本,然后度量正负样本的距离来实现自监督学习。可以使用点积的方式构造距离函数,然后构造一个Softmax 分类器,以正确分类正样本和负样本。鼓励相似性度量函数将较大的值分配给正例,将较小的值分配给负例:
L N = − E x , y + , y ∗ − [ log ⁡ exp ⁡ ( s ( x , y + ) ) exp ⁡ ( s ( x , y + ) ) + ∑ j = 1 N − 1 exp ⁡ ( ( s ( x , y j − ) ) ) ] L_N = -E_{x, y^+, y*-}[\log\frac{\exp{(s(x, y^+))}}{\exp{(s(x, y^+))+\sum_{j=1}^{N-1}\exp((s(x,y_j^-)))}}] LN=Ex,y+,y∗−[logexp(s(x,y+))+j=1N1exp((s(x,yj)))exp(s(x,y+))]

相似性度量函数通常可采取两种方式: s ( x , y ) = f enc ( x ) T f enc ( x ) s(x, y)=f_{\text{enc}(x)}^Tf_{\text{enc}(x)} s(x,y)=fenc(x)Tfenc(x) s ( x , y ) = f enc ( x ⨁ y ) s(x, y)=f_{\text{enc}}(x\bigoplus y) s(x,y)=fenc(xy)

Deep InfoMax (DIM)

DIM 方法来源于计算机视觉领域,对于全局的特征(编码器最终的输出)和局部特征(编码器中间层的特征),DIM需要判断全局特征和局部特征是否来自同一图像。InfoWord将DIM引入到NLP中,用Mutual Information的一个下界InfoNCE来重新解释BERT和XLNET的objective,并提出一个新的DIM objective以最大化一个句子的global representation和其中一个n-gram的local representation之间的Mutual Information。

Replaced Token Detection(RTD)

噪声对比估计(Noise-Contrastive Estimation,NCE)通过训练一个二元分类器来区分真实样本和假样本,可以很好的训练词嵌入。RTD与NCE相同,根据上下文语境来预测token是否替换 。word2vec中的negative sampling可看作是RTD,负样本从词表中进行带权采样。ELECTRA提出了一种新的预训练任务框架,构建生成器—判别器,生成器通过MLM任务对被mask的token进行预测,迭代器判断原始句子中的每个token是否被替代过。生成器相当于对输入进行了筛选,使判别器的任务更难,从而学习到更好的表示。生成器—判别器共享embedding,生成器部分采用small-BERT,判别器部分对每一个token采用sigmoid计算loss。微调阶段只采用判别器部分。RTD也被看作解决MLM中[MASK]在预训练和微调间差异的一种手段。WKLM在实体层进行替换,替换为具有相同实体类型的实体名称。

Next Sentence Prediction (NSP)

NSP 区分两个输入句子是否为训练语料库中的连续片段,第二个句子50%为第一句子实际的连续片段,50%从其他语料随机选择。NSP可以引导模型理解两个输入句子之间的关系,从而使对此信息敏感的下游任务受益,如QA任务。而RoBERTa表明:NSP在对单个文档中的文本块进行训练时,去除NSP任务或在下游任务上可以稍微提高性能。

Sentence Order Prediction(SOP)

SOP 使用同一文档中的两个连续片段作为正样本,而相同的两个连续片段互换顺序作为负样本。NSP融合了主题预测和相关性预测,主题预测更容易,这使得模型进行预测时仅依赖于主题学习。与NSP不同,SOP使用同一文档中的两个连续段作为正样本,但顺序互换为负样本。采取SOP任务的PTMs有ALBERT、StructBERT、BERTje等。

下表是对上述四类预训练模型的总结:

基于对比的方法特点预训练模型
DIM:Deep InfoMax最大化全局特征和局部特征间的互信息InfoWord
RTD:Replaced Token Detection根据上下文语境来预测token是否替挨word2vec-ns / ELECTRA / WKLM
NSP:Next Sentence Prediction区分两个输入句子是否为语料库中的连续片段BERT / UniLM
SOP:Sentence Order Prediction相关性预测,将两个连续片段互换顺序ALBERT / StructBERT / BERTje

参考文献:
[1] QIU XIPENG, SUN TIANXIANG, XU YIGE, et al. Pre-trained models for natural language processing: A survey[J]. 中国科学:技术科学(英文版),2020.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python语法(高阶)-多线程编程

""" 演示多线程编程的使用 """ import time import threadingdef sing(msg):while True:print(msg)time.sleep(1)return Nonedef dance(msg):while True:print(msg)time.sleep(1)return Noneif __name__ __main__:# 创建一个唱歌的线程&#xf…

后台管理系统的权限(vue如何实现后台管理系统的权限,react如何实现后台管理系统的权限)

一、权限的解释 一般来说,在后台管理系统里肯定会使用到权限,权限一般分为功能级权限和数据级权限 1、功能级权限 1)、页面级权限(菜单): 不同的用户(角色)登录到管理系统后&#…

mysql load data infile 报错 1290 处理方法

mysql load data infile 命令导入数据报错"16:06:13 load data infile “/var/lib/mysql/test/employee.csv” into table emp fields terminated by ‘,’ ignore 1 lines Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cann…

Linux应用层开发--多线程进程编程

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一、linux开发的方向二、Linux环境特点介绍Linux环境基本构成 三、进程与线程1、进程的概念2、进程的状态3、线程的概念4、线…

leetcode 559. N 叉树的最大深度

2023.7.2 这道题还是使用层序遍历&#xff0c;在N叉树的层序遍历的基础上增加一个求深度的操作即可。下面上代码&#xff1a; class Solution { public:int maxDepth(Node* root) {int depth 0;queue<Node*> que;if(root nullptr) return 0;que.push(root);while(!que…

json 压缩算法详解

概要 无论使用何种编程语言&#xff0c;json格式的数据已被广泛应用&#xff0c;不论是数据的传输还是存储&#xff0c;在很多应用场景下&#xff0c;你可能想进一步地压缩JSON字符串的长度&#xff0c;以提升传输效率&#xff0c;如果你使用的是nosql数据库&#xff0c;你可能…

2012年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

记一次tomcat版本升级导致的现网问题

前言 最近公司项目做安全漏洞审查&#xff0c;把一批服务的fastjson,tomcat,log4j版本做升级&#xff0c;那天上线了50个服务&#xff0c;所有服务上线之后&#xff0c;现网有客服反馈录音笔下单异常。查询了现网日志&#xff0c;发现适配服务有异常信息&#xff0c;报错信息如…

闲人闲谈PS之四十二——顾问的“禁忌之地”—制造能力计划

惯例闲话&#xff1a;上个月有幸成为乐老师乐谈IT系列培训课程的讲师&#xff0c;分享主题是&#xff0c;PS在装备制造和工程行业的应用。虽然培训规模不是很大&#xff0c;但是闲人很有信心&#xff0c;至少在小范围之内&#xff0c;参与培训的听友人来说&#xff0c;PS一直以…

什么条件下会出现死锁,如何避免?

文章目录 一、什么是死锁二、产生死锁的原因&#xff1a;三、如何避免死锁&#xff1a; 一、什么是死锁 死锁&#xff0c;简单来说就是两个或者两个以上的线程在执行过程中&#xff0c;去争夺同一个共享资源导致相互等待的现象。如果没有外部干预&#xff0c;线程会一直处于阻塞…

图像的算术操作

1.图像的加法 用途&#xff1a;图像的合成 Rain图片View图片 合成代码&#xff1a; import numpy as np import cv2 as cv import matplotlib.pyplot as pltrain cv.imread(rain.png) plt.imshow(rain[:, :, ::-1]) plt.show()view cv.imread(view.png) plt.imshow(view…

773. 滑动谜题

链接&#xff1a;773. 滑动谜题 题解&#xff1a;https://blog.csdn.net/INGNIGHT/article/details/131350054 滑动拼图 II class Solution { public:int slidingPuzzle(vector<vector<int>>& board) {// 异常判断if (board.size() < 0 || board[0].size…

怎么管理好一个团队?

一个成功的企业需要一个高效、有能力、积极的团队来支持其业务运营。管理一个团队需要领导者具备一定的技能和知识&#xff0c;怎么管理好一个团队对于许多企业领导者而言也是一项不小的挑战。对此&#xff0c;我想首先推荐一本非常优秀的团队书籍——《经理人参阅&#xff1a;…

js vuejs dagre-d3绘制流程图实用指南 有向图可视化

写在前面 之前有小伙伴问我如何使用 D3 在前端绘制流程图,今天在这里给安排上,与大家分享。 明确一点,只要你的数据计算能力足够强,使用原生D3绘制流程图绝对可以的,但是,为了让大家更容易上手,避免重复造轮子,给大家推荐一个专门绘制流程图的 D3 插件 dagre-d3。 首…

idea tomcat js 汉字乱码

Run/Debug Configuiations->VM options:-Dfile.encodingUTF-8

服务 第七章

目录 1.tomcat 核心组件 2.处理请求&#xff0c;内部数据流向 3.请求处理过程 4.主要目录说明 5.tomcat 优化 6.总结 1.tomcat 核心组件 2.处理请求&#xff0c;内部数据流向 3.请求处理过程 4.主要目录说明 5.tomcat 优化 6.总结 tomcat 属于轻量级应用服务器&#xf…

基于Tars高并发IM系统的设计与实现-基础篇1

基于Tars高并发IM系统的设计与实现–基础篇1 作者简介 兰怀玉 毕业于中央民族大学计算机专业 先后供职国内外多家公司软件研发设计岗位&#xff0c;有丰富的软件研发经验。 从事IM领域设计研发十余年&#xff0c;先后领衔多个IM通讯系统设计与研发发&#xff0c;拥有丰富的IM…

裂墙推荐!阿里大牛新产Java面试速成指南,主打就是躺着拿Ofeer

很多粉丝后台留言&#xff0c;Java程序员面临的竞争太激烈了…… 我自己也有实感&#xff0c;多年身处一线互联网公司&#xff0c;虽没有直面过求职跳槽的残酷&#xff0c;但经常担任技术面试考官&#xff0c;对程序员招聘市场的现状很清楚。导致现在激烈竞争的原因不外乎三方面…

移动端数据可视化设计

在做APP设计的时候&#xff0c;难免会遇到一些需要展示数据的场景。使用传统的表格和文档展示数据不仅难看&#xff0c;也影响用户理解数据的含义。而数据可视化设计能将数据以更加直观的方式展现出来&#xff0c;使数据更加客观、更有说服力。 在移动应用中&#xff0c;数据可…

uview-plus上传图片,upload组件带参数上传

一、引入uview-plus 请自行在项目中引入uview-plus组件库&#xff0c;此处不多赘述 二、使用 html 部分&#xff0c;上传组件的样式自己去定义&#xff0c;不多赘述 <u-upload:fileList"fileList" // 文列列表afterRead"afterRead" // 读取后的…