Vanilla Transformer 和Transformer-XL

文章探讨了VanillaTransformer引入辅助损失以优化字符级语言模型的训练,强调了Transformer快速传播信息的能力。Transformer-XL通过循环机制和相对位置编码解决固定长度限制,实现了跨段信息传递和计算效率提升。
摘要由CSDN通过智能技术生成

一、Vanilla Transformer(对网络结构没有很大调整,主要是引入了辅助损失,基于transformer的语言模型)

Character-Level Language Modeling with Deeper Self-Attention

指的是字符级语言模型 源自论文 Character-Level Language Modeling with Deeper Self-Attention,在这篇论文中有一段阐述了作者对RNN和transformer的推断,为什么transformer效果比较好,是由于他能够快速在任意距离内传播信息(梯度或者残差信息),而RNN只能一步一步的传递。

We speculate that the transformer’s success here is due to its ability to “quickly” propagate information over arbitrary distances; by comparison, RNNs need to learn to pass relevant information forward step by step

论文中提出了模型越来越深,训练难度越来越大,loss传递越来越难,那么引入auxiliary losses,主要包括三种

【Multiple Positions】 at intermediate sequence positions

【Intermedia Layer Losses】 from intermediate hidden representations

【Multiple Targets】 at target positions multiple steps in the future

这些损失不仅加速了收敛,还能提供正则化的功能

Multiple Positions

预测时不是指预测最后一个位置,而是序列的每个位置都进行预测,例如上图中t1,t2,t3,t4 4个位置都会产生预测然后都会计算loss。训练时,t1~t4产生的loss都不会decay,都是同等重要的。【这一类loss贯穿整个train的全部阶段,不发生衰减】

Intermediate Layer Losses

This schedule drops all intermediate losses after half of the training is done低层的网络权重贡献将越来越小;【中间层的loss并不贯穿整个train始终,而是随着训练进行,逐渐衰减,衰减的方式是,一共有n层网络,当L层训练进行到L/2n (这是个比例)时停止计算loss。也就是说当训练进行到一半的时候(网络层数为n),所有的中间层都不再贡献loss】

Multiple Targets

每次产生两个预测值,包括下一个词和下下一个词,但对于下下步的预测结果产生的loss是要发生衰减的,论文中该loss乘以0.5后再加入到整体的loss中。

预测下一个和下下一个

先前的语言模型一般是通过一个完整的序列预测最后一个词或字符,而此文则预测每个字符,也可以说是一种seq-to-seq模型,只是没有将整个序列先编码成一个向量再解码成字符,而是将encoder和decoder合二为一,直接预测。此文使用Transformer对字符序列建模,相邻的每段之间没有前向和后向的信息交互,同时增加了辅助损失函数来加速模型的训练(新观点)。增加的辅助损失函数有3个,一是预测序列中的每个字符,二是在中间层也预测每个字符,三是每次预测多个字符。

图为隐层为4层的模型的训练过程:

动图封面

训练过程

当分批分段的数据进入模型训练后,段与段之间的关系无法关联,过程如图

动图封面

二、Transformer-XL(Attentive Language Models Beyond a Fixed-Length Context)

创新点:通过引入循环机制和相对位置编码,解决了长度限制问题(形如RNN+Transformer,其中参照RNN使用前一个的输出作为下一时刻的输入的模式,将上一段segment的处理后的隐向量输入给下一段。)

论文的开篇就说明了transformer的特点:Transformers have a potential of learning longer-term dependency, but are limited by a fixed-length context in the setting of language modeling.(训练样本切片阻碍了片与片之间的关联),XL training—Segment Level Recurrence

绿色部分是前面segment的隐层输出,缓存利用上一个segment的隐层信息,而且上一个segment的所有隐向量序列只参与前向计算,不再进行反向传播,这就是所谓的segment-level Recurrence。

如图所示,在训练过程中,使用了上一层的隐向量。

在这也可以明显看出,Q向量仅与当前向量有关系,是以当前单词为中心去查与周围单词的关系

XL prediction

在当前segment中,第n层的每个隐向量的计算,都是利用下一层中包括当前位置在内的,连续前L个长度(上图是4)的隐向量,这是在上面的公式组中没有体现出来的,也是文中没有明说的。每一个位置的隐向量,除了自己的位置,都跟下一层中前(L-1)个位置的token存在依赖关系,而且每往下走一层,依赖关系长度会增加(L-1),如下图中Evaluation phase所示,所以最长的依赖关系长度是N(L-1),N是模型中layer的数量。在对长文本进行计算的时候,可以缓存上一个segment的隐向量的结果,prediction的过程中可以重复使用,不必重复计算,大幅提高计算效率。

动图封面

相比之下,Vanilla在prediction过程中,Vanilla transformer 通过逐步移动,并重新构建context来预测一个输出,计算效率相对比较低。

Relative Position Encodings

如果使用Vanilla 中Position embedding的方式(使用相同的位置编码),那么传递方式如下,就没有位置的区别了

为什么?因为分了段之后,不同段对当前段的影响是不相同,如果使用同样的位置编码,那么就无法区分段与段之间的关系。

针对以上问题transformer-XL做出如下变化

1.将上面的U的绝对位置编码替换为R,相对位置编码,R采用正弦函数生成,而不是通过学习得到的,Ri-j是i和j的相对位置。

2.更换查询位置向量,引入全局的可训练的参数向量(u,v),即无论query位置如何,对不同词的注意偏差都保持一致(个人感觉这个跟语法有关系,也是引入全局向量的原因,不同段之间这个向量的点乘得到的结果应该是差不多的)。

3.分割Key的权重向量,分别为基于内容的和基于位置的Key向量,这样位置和内容的embedding不在共享权重。

每一层在计算attention的时候,都要包含相对位置编码,而不是只在输入的时候加入位置编码

  • (a)部分,没有考虑位置编码的原始分数,只是基于内容的寻址;
  • (b) 部分,相对于当前内容的位置偏差;
  • (c) 部分,从内容层面衡量键的重要性,表示全局的内容偏置,用于衡量Key的重要性;
  • (d) 部分,从相对位置层面衡量键的重要性,表示全局的位置偏置

以上XL的创新,将内容和位置区分对待,关注于文本的相对位置,能够将不同segment的注意力传递至后端,在训练中解决了segment与segment之间信息不互通的问题,同时也加快了模型预测的速度。

参考文章:

Transformer-XL介绍 - 知乎 (zhihu.com)

详解Transformer-XL - 知乎 (zhihu.com)

(28条消息) 【读论文】Character-Level Language Modeling with Deeper Self-Attention(Vanilla Transformer)_pingpingsunny的专栏-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Transformer-XL是一种改进的Transformer模型,用于处理超长文本。它的名称中的"XL"代表"extra long",意味着它专门设计用于处理长文本。\[1\]传统的Transformer模型在处理超长文本时效率较低,因此Transformer-XL通过引入相对位置编码来解决这个问题。相对位置编码是指在词向量中添加关于词的相对位置信息,而不仅仅是绝对位置信息。\[2\]这样一来,Transformer-XL可以在训练时将文本分成多个segment进行训练,并在预测时通过移动segment的步长来处理超长文本。这种方法大大提高了处理超长文本的效率。\[1\]此外,Transformer-XL还通过保存前一个segment的hidden state来避免在推理阶段重新计算,进一步提高了推理速度。根据论文中的比较,Transformer-XL在enwiki8数据集上的推理速度是Vanilla Transformer的1800多倍。\[3\] #### 引用[.reference_title] - *1* *2* [Transformer-XL详解](https://blog.csdn.net/qq_51302564/article/details/117882327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Transformer-XL全解读](https://blog.csdn.net/u012526436/article/details/109156096)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值