【NLP】TransformerXL:因为XL,所以更牛

Transformer-XL全解读 Motivation Transformer最大的问题在于没有办法建模超过最大长度的序列,例如base bert其支持的序列最大长度是512,超过了该长度的序列需要进行截取,再把截取后的片段分别用bert进行编码,该方法虽然可行,但是存在上下文碎片化的问题,也就是说每个片段是单独建模的,互相之间没有上下文信息,并且,不同的片段位置编码都是从0开始,明显是有问题的。 可见Transformer对于较长的序列建模能力有限,如何解决该弊端就该Transformer-XL大显身手了。 Transformer-XL 阅读详情

前面介绍过Transformer作为一种特征抽取器的强大之处。那么,它有没有弱点呢?能不能改进呢?

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

作者&编辑 | 小Dream哥

1 原始Transformer哪里不好?

在上一篇“理解NLP中网红特征抽取器Transformer”中,笔者介绍了Transformer的强大之处。那么,Transformer就已经强大到无懈可击了吗?其实不然,Transformer还有它的弱点。

细想一下,BERT在应用Transformer时,有一个参数sequence length,也就是BERT在训练和预测时,每次接受的输入是固定长度的。那么,怎么输入语料进行训练时最理想的呢?当然是将一个完整的段落一次性输入,进行特征提取了。但是现实是残酷的,这么大的Transformer,内存是消耗不起的。所以现有的做法是,对段落按照segment进行分隔。在训练时,当输入segment序列比sequence length短时,就做padding;当输入segment序列比sequence length长时就做切割。


这种做法显然是一种权宜之计,它有这么两个缺点:

1)长句子切割必然会造成语义的残破,不利于模型的训练。


2)segment的切割没有考虑语义,也就是模型在训练当前segment时拿不到前面时刻segment的信息,造成了语义的分隔。

那么,该如何解决上述问题呢?看看TransformerXL吧。

2 TransformerXL的引入

我们先想一下,如果要我们自己来解决Transformer上面的问题,会怎么处理呢?

熟悉NLP的同学,可能会想到RNN。在RNN中,为了获取序列中的历史记忆,采用了Recurrence机制,在计算该时刻的状态时,引入前一时刻的状态作为输入。那对Transformer来说,在计算当前序列的隐藏状态时,引入前一个序列的隐藏状态信息不就可以解决上面的问题了吗?

事情真的有这么简单吗?其实,基本上也就是这么简单,不过TransformerXL在引入时做了一些巧妙的设计。下面我们看看,TransformerXL是如何引入这种Recurrence机制来解决上述问题的。

640?wx_fmt=png

如图所示,是传统的Transformer在训练和评估阶段采用的语料输入策略。在训练时,将整个语料库分割成可管理的大小的更短的片段,在每个片段中训练模型,忽略来自前一段的所有上下文信息;在评估阶段,传统的Transformer模型在每个步骤都消耗与训练期间相同长度的一个segment。然后,在下一步中,这个segment向右移动一个位置,并从头开始处理,只在最后一个位置进行一次预测。

640?wx_fmt=png

如上图所示,在TransformerXL采用了不同的策略,在训练过程中,对上一个segment计算的隐藏状态序列进行固定和缓存,并在模型处理下一个新的segment时对其进行利用。在评估阶段,可以重用前面部分的表示,而不是像传统模型那样从头开始计算,这样可以提高速度。

3 TransformerXL Recurrence机制

那么,上述的机制细节如何实现的呢?下面我们来做一个详细的介绍。

事实上,问题的关键在于,在计算当前序列当前层的隐藏状态时,如何引入前一个序列上一层的隐藏状态。TransformerXL的做法很简单,就是按照序列长度的维度将他们concate起来。如下的公式所示:

640?wx_fmt=png

h_n_t是一个L*d的矩阵,表示的是第t个输入序列的第n层的隐藏层的状态。L表示序列长度,d表示嵌入维度。

SG表示的Stop Gradient,这非常重要,避免了RNN会出现的一系列问题。

从上述公式可以看出,TransformerXL与传统的Transformer的差异主要在于隐藏层输入K和V的差异。TransformerXL中引入了上一个序列前一个隐藏层的值,将他们concatenate起来,计算新的K和V。

4 Relative Positional Encodings

我们再想一想,引入上述机制,还有什么问题没有。我们回想一下,在传统的Transformer中,输入序列中的位置信息是怎么表示的?通过POS函数生成,它是位置i和维度d的函数,也就是不同输入segment在相同绝对位置中的位置表示是相同的。在传统的Transformer中,每个segment之间的表示是没有关联的,这当然就没有问题。但是在TransformerXL中,因为引入了前一时刻segment的信息,就需要对不同时刻,同样是第i个的词进行区分。


TransformerXL引入了一种Relative Positional Encodings机制,会根据词之间的相对距离而非像传统的Transformer中的绝对位置进行编码。


在传统的Transformer中,计算q_i和键k_j之间的attention分数的方式为

640?wx_fmt=png

展开就是:

640?wx_fmt=png

Exi是词i的embedding,Exj是词j的embedding,Ui 和Uj 是位置向量。

在Transformer-XL中,对上述的attention计算方式进行了变换,转为相对位置的计算,而且不仅仅在第一层这么计算,在每一层都是这样计算。

640?wx_fmt=png

对比来看,主要有三点变化:

1)在b和d这两项中,将所有绝对位置向量Ui,Uj都转为相对位置向量Ri−j,与Transformer一样,这是一个固定的编码向量,不需要学习。


2)在c这一项中,将查询的U_i^T*W_q^T向量转为一个需要学习的参数向量u,因为在考虑相对位置的时候,不需要查询绝对位置i,因此对于任意的i,都可以采用同样的向量。同理,在d这一项中,也将查询的U_i^T*W_q^T向量转为另一个需要学习的参数向量v。


3)将K的权重变换矩阵Wk转为Wk_E 和Wk_R,分别作为content-based key vectors和location-based key vectors。

总的来说,Relative Positional Encodings就是在计算attention分数时,用相对位置R_i_j编码来代替原来的绝对位置编码Ui和Uj。并且学习了相对位置v和u用来调整不同距离和不同嵌入的得分。

5 总结

总的来说TransformerXL对Transformer进行了一些调整,试图解决一些问题。按照论文的描述,TransformerXL学习的依赖关系比RNN长80%,比传统Transformer长450%,在短序列和长序列上都获得了更好的性能,并且在评估阶段比传统Transformer快1800+倍。

在XLnet中引入了Transformer-XL,获得了不错的效果。

总结

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

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

下期预告:XLnet:BERT和GPT的结合

知识星球推荐

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

往期精选

【自然语言处理】Transformer-XL 讲解 语言模型 Trm 的改进 阅读详情

相关推荐

从Transformer到TransformerXL:模型结构的演进

1.背景介绍 1.1 自然语言处理的挑战 自然语言处理(NLP)是人工智能领域的一个重要分支,它的目标是让计算机能够理解和生成人类语言。然而,自然语言处理面临着许多挑战,其中最大的挑战之一就是处理语言的长距离依赖性。例如,在句子“我昨天在公园里遇到了一个老朋友,他...”中,“他”指的是“老朋友”,

AI天才研究院 304

Transformer-XL:打破序列长度限制的Transformer模型

在自然语言处理领域中,序列模型是至关重要的一类模型,但是它们受到了序列长度的限制。在传统的循环神经网络(RNN)模型中,由于梯度消失或梯度爆炸的问题,只能处理较短的序列。为了克服这个问题,Attention机制被引入到了序列模型中,其中Transformer是最著名的例子。 但是,即使是Transformer,它也有一个长度限制。由于输入和输出是一次性给出的,因此Transformer不能处理超过固定长度的序列。为了克服这个问题,Dai等人提出了Transformer-XL,它能够处理超过固定长度的序列。

WeLearnNLP 2504

TransformerXL: Attentive Language Models Beyond a Fixed

作者:禅与计算机程序设计艺术 1.背景介绍 Transformer(转换器)是一种基于注意力机制的神经网络模型,其主要用于机器翻译、文本摘要等自然语言处理任务。通过学习目标序列(target sequence)中的相邻单词或短语,利用多头自注意力(multi-head attention)模块对输入

AI天才研究院 459

Transformer-XL详解

Transformer-XL

Xu_Wave 7534

Transformer-XL模型简单介绍

以自注意力机制为核心的 Transformer 模型是各种预训练语言模型中的主要组成部分。自注意力机制能够构建序列中各个元素之间的上下文关联程度,挖掘深层次的语义信息。然而,自注意力机制的时空复杂度为,即时间和空间消耗会随着输入序列的长度呈平方级增长。这种问题的存在使得预训练语言模型处理长文本的效率较低。传统处理长文本的方法一般是切分输入文本,其中每份的大小设置为预训练语言模型能够单次处理的最大长度(如512)。

云隐雾匿的博客 2850

CST中PEC结构涂覆吸波材料的RCS仿真与优化

本文详细介绍了在CST Studio Suite中对PEC结构涂覆吸波材料进行RCS仿真的完整流程与优化策略。通过精确的材料参数设置、涂层厚度优化和仿真技巧,有效降低目标的雷达散射截面,提升隐身性能。文章结合实战案例,为工程师提供了一套高效的RCS仿真与优化解决方案。

c2d3e4f的博客 693

一口气看完TransformerXL详细解释带代码二:TransfromerXL框架

这里对代码做了详细解释。

m0_73426548的博客 2068

C# 开发 ACS 运动控制系统:从入门到高阶应用实践

起始位置</param>/// <param name="endPos">结束位置</param>/// <param name="maxVelocity">最大速度</param>/// <param name="maxAcceleration">最大加速度</param>/// <param name="maxJerk">最大加加速度

品质生活,极致编程。 2848

Decoder&Only结构—TransformerXL

Transformer-XL(Transformer with Extra Long Context)是在标准Transformer的基础上进行改进的模型,它通过引入相对位置编码和段级记忆机制,解决了标准Transformer在处理长文本时的效率问题。Transformer-XL并不是完全颠覆原有的Transformer架构,而是在Decoder部分进行了优化,使得模型能够处理更长的输入序列,并在训练和推理时提高了效率。

Azperk的博客 970

基于 MATLAB 的综合能源系统建模:全面解析与案例应用 

本文详细介绍了基于 MATLAB 的综合能源系统建模相关知识,包括 MATLAB 在综合能源建模中的优势、综合能源系统各组件和网络的建模方法,并通过园区综合能源系统的案例展示了从建模到优化调度求解以及结果分析的全过程。在当今全球能源格局深刻变革的背景下,综合能源系统(Integrated Energy System,IES)作为一种创新的能源供应体系,整合了多种能源形式,如电力、热力、燃气等,以实现能源的高效生产、传输、分配和利用。需要考虑燃气的压力、流量特性以及管道的阻力特性等。

qq_57128262的博客 1339

Python3 ACM模式输入输出全攻略:从牛客网到华为机试的实战技巧

本文详细解析了Python3在ACM模式下的输入输出处理技巧,针对牛客网、华为机试等在线评测系统。文章从input()函数本质出发,总结了六种高频输入模式的处理模板,并提供了链表、二叉树等数据结构的I/O实战方案,最后给出性能优化与常见避坑指南,帮助开发者高效应对算法笔试。

zero1的博客 1000

探索记忆的边界:TransformerXL在近端策略优化中的应用

在人工智能的广阔领域中,强化学习(Reinforcement Learning, RL)一直是研究的热点。今天,我们将介绍一个令人兴奋的开源项目——**TransformerXL as Episodic Memory in Proximal Policy Optimization**,这是一个基于PyTorch的实现,旨在展示如何利用TransformerXL(TrXL)在近端策略优化(PPO)中...

gitblog_00089的博客 606

国产上位机软件突围:适配统信UOS/麒麟OS的跨平台开发技术与实践(2026年信创实战指南)

(航天科技集团CTO):“在信创战场上,1ms的延迟意味着1个卫星的控制失效。2026年,C#/.NET MAUI不是选择,而是我们守护卫星的‘生命线’。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 414

NLP论文笔记:Transformer XL

参考:Transformer XL blog illustrated-transformer 下图是一个注意力head 在一个token上的流程。 Ai-Rfou. et将transformer 用在翻译上,提出来基于语言模型的transformer 改进。一个个移动预测下一个词,因为transformer 窗口大小是512,当预测513个词的时候 窗口移动到1-513,这样513 就可以利用1-512的信息来预测(但是窗口也只有这么大,无法建立segment之间的联系),而不是作为一个单独的开始(但是

m0_37531129的博客 1097

YOLOv13改进:注意力机制 | 动态稀疏注意力的双层路由方法BiLevelRoutingAttention | CVPR2023

BiLevelRoutingAttention方法对小目标检测效果比较好。可能是因为BRA模块是基于稀疏采样而不是下采样,一来可以保留细粒度的细节信息,二来同样可以达到节省计算量的目的。

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

PC 端微信页面拆分及 JavaFx 使用

一、前言 对于一个知识点的学习过程来说,往往使用自己熟悉的工具或方式才更易于上手。因为所有同类型的知识点在抛出复杂的流程拨云见日后,所能得到的几乎都是同样的设计思想和实现理论。 在 Java 语言桌面版开发中,直至目前共提供了三套 UI 开发方式;Awt、Swing、JavaFx,以及一些扩展组件 SWT 等。在这三套 UI 组件中,JavaFx 是最新也是最为好用的,因为他提供了丰富的功能,以及...

bugstack虫洞栈 3615

transformerXL

原 Transformer-XL解读(论文 + PyTorch源码) ...

w344674的博客 1561

上位机图像处理和嵌入式模块部署(qmacvisual获取边界点)

【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在图像处理中,解决了分割的问题之后,下面就是属性信息的提取。在这其中,有一种属性是非常重要的 ,那就是外界轮廓的边界点获取。这个边界点,可以用来计算长度,也可以用来进行直线、圆的拟合,具体的用途取决于现场的实际使用场景。目前qmacvisual支持对边界点的提取,相关控件可以直接用来提取边界点。

嵌入式-老费,一个分享专业嵌入式知识的blog 884

【完结】 12篇文章带你完全进入NLP领域,掌握核心技术

专栏《NLP》第一阶段正式完结了。在本专栏中,我们从NLP中常用的机器学习算法开始,介绍了NLP中常用的算法和模型;从朴素贝叶斯讲到XLnet,特征抽取器从RNN讲到tr...

hacker_long的专栏 2575

假人有限元模型

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

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

NLP模型卡-Transformer-XL

一:模型简介 全名是 Transfomer extra long,顾名思义,主要是为了解决Bert或Transformer中只能在固定的长度的上下文中学习依赖关系的问题,主要提出了segment-level recurrence和relative positonal encoding两个方案。 二:论文 Transformer-XL:Attentive Language Models Beyond a Fixed-Length Context 发布者:CMU, Google Brain 2019-ACL 三

Catcher 488

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

自然语言处理|超长上下文分析,Transformer-XL强在哪里?

本文论述了Transformer-XL 通过段级循环机制和相对位置编码的创新,为长文本处理开辟了全新路径。其在语言建模、文本生成等任务中的卓越表现,标志着自然语言处理进入超长上下文时代。随着技术的持续演进,Transformer-XL 及其衍生模型有望在更多领域实现突破性应用。

紫雾凌寒 1706

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

transfromer-XL论文详解

transformer作为一种特征提取器,在NLP中有广泛的应用。但是Trm需要对输入序列设置一个固定的长度,比如在BERT中,默认长度是512。如果文本序列长度短于固定长度,可以通过填充的方式来解决。如果序列长度超过固定长度,处理起来就比较麻烦。一种处理方式,就是将文本划分为多个segments。训练的时候,对每个segment单独处理,segments之间没有联系,如下图(a)所示。这存在两个问题,1)因为segments之间独立训练,所以不同的token之间,最长的依赖关系,就取决于segment的长

weixin_52185313的博客 1393

【NLP相关】XLNET原理以及案例

XLNET模型是自然语言处理领域中最近新兴的模型之一,其创新之处在于引入了Transformer XL机制,进一步扩展了Transformer模型的能力。在本文中,我们将介绍XLNET模型的基本原理,其提出和发展的历程,以及关于XLNET的应用和研究进展。在介绍XLNET模型的基本原理之前,我们首先需要了解一下Transformer XL机制。Transformer XL是Transformer模型的扩展版本,其中引入了一种称为“相对位置编码”的机制,以解决Transformer模型中存在的位置信息限制问题

WeLearnNLP 1002
上一篇: 【知识星球】softmax损失相关的小问题
下一篇: 【GAN优化】GAN训练的小技巧
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄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、付费专栏及课程。

余额充值