【NLP】XLnet:GPT和BERT的合体,博采众长,所以更强

BART论文解读:BERT和GPT结合起来会发生什么? 为了与当前摘要任务的最新技术进行比较,我们在两个具有不同特点的摘要数据集CNN/DailyMail和XSum上展示了结果。CNN/DailyMail中的摘要倾向于与源句子相似。抽取式模型在这里做得很好,甚至仅用前三个源句子作为基线的表现也非常有竞争力。尽管如此,BART在所有已有的工作中表现最好。相比之下,XSum高度概括,抽取式模型表现不佳。BART在所有ROUGE指标上大约比利用BERT的最佳前作提高了6.0分,这代表了在这一问题上性能的重大进步。在质量上,样本的质量很高(见第6节)。 阅读详情

前面介绍过BERT,作为一种非常成功的预训练模型,取得了非常不错的成绩,那么,他还有改进的空间吗?

本文介绍BERT的改进版,XLnet。看看它用了什么方法,改进了BERT的哪些弱点。

作者&编辑 | 小Dream哥

1 为什么要有XLnet?

要理解XLnet,我们先回顾一下先于XLnet的两种表现最好的预训练模型BERT和GPT:

1) Generative Pre-Training(GPT),采用Transfomer作为特征抽取器,预训练阶段采用单向语言模型的模式。

2) Pre-training of Deep Bidirectional Transformers for Language Understanding(BERT),同样采用Transfomer作为特征抽取器,与GPT的主要差异在于,在训练阶段,其采用基于MLM的双向语言模型。

XLnet的提出者们,仔细研究了一下这两个模型,发现他们都有自己的缺点。

对GPT,它主要的缺点在于,采用的是单向语言模型。模型在预测当前词的时候,只能看到该词前面词的信息。而对于很多语言理解任务而言,例如阅读理解等,常常需要参考该词前后的语境,因此,单向语言模型往往是不够的。XLnet的研究者称GPT这一类结构为AR(AutoRegressive)语言模型。


对BERT,采用MLM,即在训练时遮住训练语料中15%的词(实际的MASK机制还有一些调整),用符号[MASK]代替,然后试图让网络重建该词。这个过程,在训练语料中引入了符号[MASK]。而在实际的Finetune及预测过程中,是没有这个符号的,这就在预训练和预测阶段之间产生了GAP。BERT在MLM中还隐含了一个独立性假设,即重建各个符号[MASK]的过程,是相互独立的。这个假设其实是未必成立的,会造成模型训练时部分信息的损失。XLnet的研究者称BERT这一类结构为AE(AutoEncoding)语言模型。

由此可见,BERT和GPT都有待改进的地方,XLnet的研究者们的想法是将两个模型结合起来,并改进一些点。下面我们来看看XLnet是如何基于GPT和BERT来做改进的。

2 XLnet的改进

1) 预训练模式的优化:Permutation Language Modeling(PLM)

XLnet想要实现BERT的双向语言模型,但是又不想引入BERT MLM中的独立性假设和符号[MASK],进而提出了PLM。

XLnet中,沿用GPT的语言模型的办法,即基于序列中前面部分的内容,预测该词。但是,为了在预测该词的时候,为了能够看到该词后面部分的内容,对序列进行排列组合。这样的话,该词的前面也包含该词后面词的信息,用另外一种方式,实现了双向语言模型。

640?wx_fmt=png

如上图所示,假定输入序列的长度为4,则除了原语序,这4个词总共有24种排列方式,上图中用各词在原序列中的位置来表示各词,列出了其中4种,[3,2,4,1],[2,4,3,1],[1,4,2,3],[4,3,1,2]。


有同学会疑问,对于Transformer这种特征抽取器来说,在不加掩码的情况下,不管输入序列按照哪种顺序输入,效果应该都是一样的才对。


没错,因此XLnet还引入了Two-Stream Self-Attention,双流自注意力模型。


所谓双流就是输入包括了两种,训练句子和相应的位置信息,下面看看具体是怎么组织起来的。

640?wx_fmt=png

如上图所示,输入包括两种类型,query stream和content stream。

640?wx_fmt=png

1.query stream仅仅包含输入序列中预测位置前面的词x_(z<t),以及该词在原序列(未重新组合前)中的位置z_t信息,但是不包括x_(z_t)。

2.content stream跟普通的transformer输入一致,包括x_(z_t)及x_(z<t)。

通过双流注意力机制,可以有效的学习到双向模型的表征。

2)特征抽取器的优化


在结构上,XLnet采用改进后的transofmerXL作为特征抽取器。前面讲过TransformerXL,他主要有两个优化,一个引入了序列循环机制;一个是引入了相对位置编码。

对于相对位置编码,在XLnet中的应用与之前在transformer的应用别无二致;对于序列循环机制,这里介绍一下在XLnet中是如何应用的。

640?wx_fmt=png

如上面的公式所示,其实在XLnet中,attention计算与TransformerXL中类似,也是将前一个序列中上一层的隐藏状态,与本序列中上一层隐藏层状态拼接起来。

3 总结

XLnet是一个集合了目前两大预训练模型的优点,其效果自然不会差,目前其在各个任务中的表现都要优于BERT。


XLnet接过BERT的棒,把预训练模型再往前提升了一步。可以遇见,后续NLP预训练还会不断有新的模型出来。

总结

XLnet是BERT一种非常重要的改进,思想值得我们好好学习和研究,希望对你有所帮助。

读者们可以留言,或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"。

知识星球推荐

640?wx_fmt=png

扫描上面的二维码,就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师。

知识星球主要有以下内容:

(1) 聊天机器人。考虑到聊天机器人是一个非常复杂的NLP应用场景,几乎涵盖了所有的NLP任务及应用。所以小Dream哥计划以聊天机器人作为切入点,通过介绍聊天机器人的原理和实践,逐步系统的更新到大部分NLP的知识,会包括语义匹配,文本分类,意图识别,语义匹配命名实体识别、对话管理以及分词等。

(2) 知识图谱。知识图谱对于NLP各项任务效果好坏的重要性,就好比基础知识对于一个学生成绩好坏的重要性。他是NLP最重要的基础设施,目前各大公司都在着力打造知识图谱,作为一个NLP工程师,必须要熟悉和了解他。

(3) NLP预训练模型。基于海量数据,进行超大规模网络的无监督预训练。具体的任务再通过少量的样本进行Fine-Tune。这样模式是目前NLP领域最火热的模式,很有可能引领NLP进入一个全新发展高度。你怎么不深入的了解?


转载文章请后台联系

侵权必究

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期精选

NLP中的预训练方法总结 word2vec、ELMO、GPT、BERT、XLNET 文章目录一.文本的表示方法基于one-hot的词向量二.基于词向量的固定表征方法(词向量模型)2.1 N-gram模型2.2 NNLM2.3 word2vecCBoWSkip-gram层次Softmax负采样三.基于词向量的动态表征方法(预训练语言模型)3.1 什么是预训练语言模型3.2 预训练语言模型的优点3.3 预训练语言模型的分类自回归语言模型自编码语言模型排列语言模型3.4 几种重要的预训练模型介绍1. ELMO2. GPT3. BERTTask 1: MLMTask 2: NSPBERT的缺点4. 阅读详情

相关推荐

十一、机器学习进阶知识:径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

本文对径向基神经网络(RBFNN)的理论基础及建模步骤进行介绍,之后使用Python实现基于RBFNN的数据预测,通俗易懂,适合新手学习,附源码及实验数据集。

weixin_42051846的博客 1万+

GPT与BERT的完美结合:为何不可以两者兼而有之?

这一简单的修改使得我们能够训练一个单一的模型,既可以在掩蔽模式下工作,也可以在因果模式下工作,而无需进行任何架构上的变动或增加额外的参数。正如Samuel(2024)所述,BERT类模型在文本生成方面的能力也逐渐被发现,这使得结合这两种模型的需求愈发迫切。尽管我们的实验结果是在相对小的模型和有限的数据集上获得的,但这些发现表明未来的语言模型预训练可能不再局限于传统的单一架构。:我们对注意力操作的输出进行门控处理,类似于为前馈模块引入的门控线性单元(GLU),这提高了模型的表达能力。

步子哥的博客 1156

Android车载应用开发与分析(11)- 车载Android应用开发入门指南

将时间回退到2017年我大学刚毕业时,彼时移动互联网就已经开始退潮,各大个培训机构也纷纷停止了Android相关的培训,曾经热火朝天的应用开发从那时起,就开始走向下坡路,小程序以及众多跨平台框架也让市场对Android原生开发的需求逐年降低,市场需求的降低也造就了Android开发的面试变得史无前例的“卷”。 终于我在2019年选择离开了互联网,投身当时还不是非常火热的车载Android领域继续从事Android原生开发。而这一年中国首个外商独资的整车制造项目,“...

linkwj的博客 1万+

从GPT到BERT:自然语言处理中的生成预训练模型与双向编码器模型

GPT(Generative Pre-trained Transformer)是一种生成预训练模型,它使用Transformer模型的解码器部分进行预训练和微调。GPT模型在自然语言生成、文本分类、问答系统等任务中表现出色,并成为了许多先进模型的基础,例如GPT-2、GPT-3等。BERT(Bidirectional Encoder Representations from Transformers)是一种双向编码器模型,它能够生成双向上下文词嵌入。

weixin_37410657的博客 2014

11. TI MSPM0G3507 DMA传输实战:ADC数据自动搬运与电压采集

本文以TI MSPM0G3507为例,详细讲解了如何利用DMA(直接存储器访问)实现ADC数据的自动搬运与电压采集。通过实战演示,解放CPU资源,提升系统实时性与效率,适用于电赛备赛及嵌入式开发中的数据采集场景。

weixin_42465140的博客 135

手把手教你用Origin拟合真应力-真应变曲线:从数据到加工硬化指数n的完整流程

本文详细解析了如何使用Origin软件拟合真应力-真应变曲线并计算加工硬化指数n的全流程。从数据预处理、曲线绘制到Hollomon方程拟合,逐步指导材料科学研究人员完成实验数据分析,帮助准确评估金属材料的力学性能与强化特性。

view3的博客 723

预训练生成模型:结合VAE与BERT/GPT-2提高文本生成效果

论文标题:Optimus: Organizing Sentences via Pre-trained Modeling of a Latent Space论文作者:Chunyuan Li...

Paper weekly 3190

Cloudflare 5秒盾逆向实战:从503到cf_clearance的全流程拆解(附避坑指南)

本文深入拆解了Cloudflare 5秒盾的完整逆向流程,从首次503响应到最终获取cf_clearance令牌,详细解析了五层挑战机制。文章重点分享了实战中的核心避坑指南,包括时间戳校验、动态图片尺寸获取、会话保持方案选择以及复杂环境检测的应对策略,为开发者提供了一套绕过5秒盾的实用方法论。

weixin_29327977的博客 2313

BERT&GPT

BERT BERT:从 Decoder 到 Encoder OpenAI Transformer 为我们提供了一个基于 Transformer 的可以微调的预训练网络。但是在把 LSTM 换成 Transformer 的过程中,有些东西丢失了。ELMo 的语言模型是双向的,但 OpenAI Transformer 只训练了一个前向的语言模型。我们是否可以构建一个基于 Transformer 的语言模型,它既向前看,又向后看(用技术术语来说 - 融合上文和下文的信息)。 Masked Language Mod

qq_39768856的博客 1368

电商数据分析19——数据分析在电商平台价格弹性研究中的应用

价格弹性是一个衡量产品价格变化对销量影响的经济学指标,对于电商平台而言,深入理解和有效运用价格弹性,对于制定竞争策略、优化产品定价具有重要意义。随着大数据时代的到来,通过数据分析研究产品的价格弹性,成为了电商企业制定价格策略、调整市场定位、优化促销活动的重要依据。

theskylife的博客 2836

【gcc】跨版本兼容实战:高版本编译程序在低版本glibc环境下的部署方案

本文针对高版本gcc编译的程序在低版本glibc环境下部署的兼容性问题,提供了四种实战解决方案:静态编译的局限性、容器化部署的优雅方案、使用Devtoolset工具链的官方支持,以及最通用灵活的打包依赖SO发布方案。重点剖析了通过设置RPATH和Interpreter或使用patchelf工具,实现程序与自带库的独立部署,有效解决glibc版本鸿沟。

weixin_29237635的博客 363

【NLP】一文汇总自然语言处理主要研究方向

NLP专栏已经发了相当数目的文章,从基础的机器学习到最新的预训练语言模型;从简单的文本分类到复杂的信息抽取、聊天机器人。今天我们做一个回顾和总结,聊聊我们从事的自然语言处理研究或者工作,...

hacker_long的专栏 1万+

YOLO26全网首发:CVPR2026 FAA| 解决YOLO Neck跨尺度方向冲突--- FAAFusion频域对齐融合模块 | 暴力涨点篇

本文改进:FAAFusion引入YOLO neck ,代替nn.Upsample和Concat

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 644

【NLP】有三AI-NLP专栏首季总结与展望

回顾时间过的很快,时间过的很快。不知不觉,我们有三AI-NLP专栏就已经走过了一个季度了。这三个月,我们的NLP专栏更新了不少的内容,从NLP中最常用的机器学习模型,如H...

hacker_long的专栏 558

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【自然语言处理】BERT & GPT

近年来,随着大规模预训练语言模型的发展,自然语言处理领域发生了巨大变革。BERT 和 GPT 是其中最流行且最有影响力的两种模型。在本篇博客中,我们将讨论 BERT 和 GPT 之间的区别以及它们的演变过程。

Data · Model · Agent · Repeat 2594

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【学习小记】BERT+GPT

睡了一下午把所有状态都睡没了。。。但还是不要错过打卡! BERT 这是第二遍整理了,对BERT的印象:非常类似于CV中的VGG16这样的特征提取网络。。。 词嵌入的新时代—ELMo embeddings 首先明确一下词嵌入是啥:单词无法直接输入进机器学习模型,通过词嵌入,我们可以使用向量来表示单词及单词之间的关系。词嵌入一般使用预训练好的。 为啥这里说新时代呢,主要是最普通的词嵌入,一个单词永远是相同的向量。但一个单词常常有多重含义,也有很多固定搭配,为啥不能根据上下文来学习对应的词嵌入呢?因此就来到了语境

kaguya1004的博客 268

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

预训练语言模型整理(ELMo/GPT/BERT...)

目录 简介 预训练任务简介 自回归语言模型 自编码语言模型 预训练模型的简介与对比 ELMo 细节 ELMo的下游使用 GPT/GPT2 GPT 细节 微调 GPT2 优缺点 ...

聚娃科技开发者博客 1952

3分钟了解GPT Bert与XLNet的差异

译者|Arno 来源|Medium XLNet是一种新的预训练模型,在20项任务中表现优于BERT,且有大幅度的提升。 这是什么原因呢? 在不了解机器学习的情况下,不难估计我们捕获的上下文越多,预测就越准确。 因此,模型能够深入而有效地捕获大多数上下文的能力是其提升的原因。 让我们玩一个游戏,在下面的上下文中,[Guess1]和[Guess2]分别是什么呢? [‘Natur...

TensorFlowNews 1530

从Transformer、BERT到GPT2和XLNet:高端玩家如何用论文互怼

这篇文章源于和实验室同学吃饭时的一次聊天,当时就觉得很有意思,就顺便写下来了—— 自然语言处理的历史源远流长,不过这篇文章要讲的故事得从机器翻译说起 众所周知,谷歌的机器翻译一直是业内标杆,追求者众,但是谷歌显然欲求不满

对LLM,AI应用有深厚兴趣,研究方向NLP。connect me by DeSaintamore_ 3103

【论文串讲】从GPT和BERT到XLNet

“本文是本专栏即将发表的文本预训练系列里面的一个章节,主要讲了XLNet的思路和具体实现细节,之所以叫XLNet是因为它以Transformer- XL为基础。XLNet是一种广义的自...

fengdu78的博客 693

Pretraning in NLP(预训练ELMo,GPT,BERT,XLNet)

图像中的Pretraning往往是在大规模图像集上进行训练后,再在特定的任务上进行fine-turning。而nlp领域的fine-turning就是word embedding了。而词嵌入(例如word2vec,GloVe)通常是在一个较大的语料库上利用词的共现统计预训练得到的。例如king和queen上下文时常相同或相似,所以词向量相似,在向量空间中词距离很近。 但是word2vec在训练完...

nakaizura 4729

XLNet 与bert 对比

XLNet 是基于 BERT 的优缺点,提出的一种泛化自回归预训练方法。 --Tow-steam self-attention Bert的优点: 可以学习上下文信息 long-term depandency Bert的缺点: 缺乏生成能力,本质上是DAV 测试数据有【mask】 针对【mask】预测时候没有考虑相关性 自回归(Auto Regressive)语言模型 优点:具备生成能力、相关性、无监督、严格的数学表达 缺点:单向;离得近未必有关系 GPT和GPT-2都 AR ...

机器学习专栏 1102

XLNet代码分析

转载自http://fancyerii.github.io/2019/06/30/xlnet-codes/ 如需删除请联系谢谢 目录 训练的代价(钱) 安装 Pretraining 训练数据格式 运行预处理数据 data_utils.py代码分析 处理每一个文件的过程 拼接前的预处理和拼接 create_tfrecords函数 准备数据 生成Pr...

小岁月太着急 4376

超越BERT的广义自回归预训练方法——XLNET

原文地址:https://blog.youkuaiyun.com/qq_31456593/article/details/93015488 – 摘要:凭借对双向上下文进行建模的能力,与基于自回归语言建模的预训练方法相比,基于BERT的基于自动编码的预训练实现了更好的性能。然而,依赖于对输入使用掩码,BERT忽略了屏蔽位置之间的依赖性,并且受到预训练 - 微调差异的影响。根据这些优点和缺点,我们提出了XLNe...

樱花落瓣 1264
上一篇: 365篇原创后,有三AI喊你正式加入来不来?
下一篇: 【图像分类】 关于图像分类中类别不平衡那些事
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值