Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【NLP】浅谈 Transformer-based 模型中的位置表示

【NLP】浅谈 Transformer-based 模型中的位置表示

作者头像
zenRRan
发布于 2019-11-19 12:30:49
发布于 2019-11-19 12:30:49
1.4K0
举报

作者:徐啸 (哈工大SCIR直博生,导师车万翔老师)

编辑:机器学习算法与自然语言处理

本文小结:本文主要对原始 Transformer[1]、RPR[2]以及 Transformer-XL[3] 中使用的位置表示方法,进行详细介绍。从最初的绝对位置编码,与单词嵌入相加作为第一层的输入,再到 RPR 提出直接在注意力分数的计算中引入相对位置信息,并学习相对距离的表示矩阵(长度固定),再到 Transformer-XL 中引入偏置信息,并重新使用 Transformer 中的编码公式生成相对距离的表示矩阵,使长度可泛化。

需要注意的是,后两文中均有一些矩阵计算上的优化,本文并未提及,还请感兴趣的读者自行阅读相关内容。

感兴趣的读者可以关注一下我的专栏,会持续分享自己的学习笔记~

自然语言处理学习之旅zhuanlan.zhihu.com

如有疏漏之处,还望不吝赐教~

0. 位置信息

首先简单谈一下位置信息。一般将位置信息简单分为绝对位置信息和相对位置信息,并且前者对句子语义的影响不大,更为重要的是后者。

以情感分析 sentiment analysis 为例:

  • I like this movie because it doesn't have an overhead history. Positive
  • I don't like this movie because it has an overhead history. Negative

don’tlike的相对位置不同,决定了这两句话的情感取向是一正一负的,但在传统词袋(Bag-Of-Words BOW)模型中,这两句话得到的句子表征却是一致的,可见单词的相对位置对语义有关键性影响。

再以命名实体识别 Named Entity Recognition 为例[4]:

一般而言,在 Inc. 之前的单词为 ORG 而在 in 之后为 TIMELOC ,但是同为 Louis Vuitton ,与 Inc. 相距较远的为PER,指的是创立者(人)这一实体,而相距较近的为ORG,指的是组织(公司)这一实体。可见,单词之间的相对位置在 NER 任务中是十分重要的。

需要注意的是,相对位置是具有方向性的(Inc. 与 in 的相对距离为 -1,1854 与 in 的相对距离为 1)

那么,如何对位置信息进行表示呢?

下文结合原始 Transformer,RPR,Transformer-XL 以及相关变体,试解释位置信息的表示问题。

1. 原始 Transformer [1]

原始 Transformer 中使用 Positional Encoding 生成固定的位置表示。

因此,借助上述正余弦公式,我们可以为每个位置生成d_mode维的位置向量。为什么会选择如上公式呢?作者表示:

We chose this function because we hypothesized it would allow the model to easily learn to attend by relative positions, since for any fixed offset k, PE_{pos+k} can be represented as a linear function of PE_{pos}.

已知三角函数公式如下:

作者希望借助上述绝对位置的编码公式,让模型能够学习到相对位置信息。

虽然如此获得的 position embeddings,两者之间的点积能够反应相对距离,但它缺乏方向性,并且这种特性(相对距离)会被原始 Transformer 的注意力机制破坏:[4]

基于公式 (1),位置t的位置嵌入可以表示为:

TENER 一文中对点积结果的可视化

TENER 一文中对包括映射矩阵后的点积结果的可视化

最后,Transformer 之前的《Convolutional Sequence to Sequence Learning》[5] 以及之后的 BERT[6] 都没有选择使用 Positional Encoding 的方式生成位置表示,而是采取了所谓的“learned and fixed”的可学习的 Position embedding ,也就是去训练一个嵌入矩阵,大小为L_max*d,这里暂且按下不表。

2. 相对位置表示[2]

Relative Position Representations(以下简称为RPR) 一文中认为,RNN 通常依靠其循环机制,结合t时刻的输入和前一时刻的隐层状态 h(t-1)计算出ht,直接通过其顺序结构沿时间维度捕获相对和绝对位置。而非 RNN 模型不需要顺序处理输入,则需要显式编码才能引入位置信息。

另外,作者认为精确的相对位置信息在超出了一定距离之后是没有必要的,并且截断后会使得模型的泛化效果好,即可以更好的泛化到没有在训练阶段出现过的序列长度上。

这里试举一例帮助理解。当输入句子长度为 12 且 k = 4 时, RPR 的嵌入矩阵为:

不过,论文在对机器翻译任务进行消融实验时发现,a_{i,j}^{V}可能并不是必要的,第3节中的 Transformer-XL 也略去了这一项。

3. Transformer-XL[3]

Al-Rfou et al. (2018) [8]成功在字符级语言建模中训练了深度(64 层) Transformer 网络,效果超越了 LSTM,但是其输入为分离的、固定长度(几百个字符)的片段,并且没有跨片段的信息传递。由于固定的上下文长度,模型无法捕获超出预定义的上下文长度的任何长期依赖。另外,固定长度的片段是通过选择连续的字符块而创建的,并未考虑句子边界或任何其他语义边界。因此,该模型缺乏必要的上下文信息来较好地预测最初的几个符号,这会导致无效的优化和较差的性能。

作者将此问题称为上下文碎片(context fragmentation)。如果给定无限的存储和计算能力,一个简单的解决方案就是使用无条件的 Transformer 解码器来处理整个上下文序列,类似于前馈神经网络。然而在实践中由于资源有限,通常是不可行的。为了解决这一问题,作者提出了片段循环机制(segment-level recurrence) 和新的相对位置编码(Relative Positional Encodings)方法。[9]

动态演示: vanilla model 的训练过程

首先深入探究 Al-Rfou 等人的做法,下文将其称为 vanilla model。如上图 1.a 所示, vanilla model 将整个语料库拆分为长度受限的片段,并且只在每个片段内训练模型,忽略了来自先前片段的所有上下文信息。这使得训练过程中,信息不会在 forward 或 backward 过程中跨片段流动,而且这使得最大依赖长度受到了片段长度的限制(这本是 Self-attention 的优势)。其次,虽然可以通过 padding 来考虑句子边界或任何其他语义边界,但是在实践中直接简单分块已成为提高效率的标准做法。这也就是作者说的上下文碎片问题。

动态演示: vanilla model 的评估过程

在评估过程中,vanilla model 也在每一步中消耗与训练中相同长度片段,但仅在最后一个位置进行预测。然后,在下一步仅将片段向右移动一个位置,并且重新进行计算。如图 1.b 所示,如此可确保每一步预测都能利用训练期间暴露的最长可能上下文,并且还缓解了训练中遇到的上下文碎片问题。但是,这种评估过程太过昂贵。

这里我们先来看 XL 中的片段循环机制。引入循环机制,在训练过程中,前一片段中的隐藏状态序列(每一层都)会被固定并缓存,以便在处理下一片段时使用其作为「扩展上下文」。如图 2.a 所示,绿色部分表示当前片段使用的扩展上下文。对于每一层而言,输入为前一片段以及当前片段的前一层的输出,从而可以保证对长期依赖的建模能力并避免了上下文碎片问题。

动态演示: Transformer-XL 的训练过程

动态演示: Transformer-XL 的评估过程

基于片段循环机制,不仅可以获得更长的上下文从而解决上下文碎片问题,而且可以加快评估速度。在评估过程中,XL 可以重复使用先前片段中的表示,不需要像 vanilla model 那样重新计算。最后,理论上讲,可以在 GPU内存允许的范围内缓存尽可能多的片段作为扩展的上下文,并将可能跨越了多个片段的旧隐藏状态称为 Memory,在论文的实验中,M 在训练时设置为片段长度,评估过程中则会增加。

在借助上述文字充分理解片段循环机制后,再来看为了在 Transformer 中实现这一机制而提出的 Relative Positional Encodings。

下面对改动进行一一解释。

本文认为此时的公式中的每一项都尤其直观含义:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Pre-Training】Transformer-XL:比 Transformer 强一点
今天学习的是谷歌大脑的同学和 CMU 的同学于 2019 年联合出品的论文《Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context》,目前被引次数超 200 次。
阿泽 Crz
2020/07/21
7290
【综述专栏】Transformer的9种变体概览
在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
马上科普尚尚
2021/03/17
2.1K0
【综述专栏】Transformer的9种变体概览
【NLP】XLNet详解
BERT本身很有效,但它也存在一些问题,比如不能用于生成、以及训练数据和测试数据的不一致(Discrepancy)。在本文中,我们重点介绍比BERT更强大的预训练模型XLNet,它为了达到真正的双向学习,采用了Permutation语言模型、以及使用了双流自注意力机制,并结合了Transformer-XL的相对位置编码。
yuquanle
2020/03/13
1.4K0
中文NER的那些事儿5. Transformer相对位置编码&TENER代码实现
这一章我们主要关注transformer在序列标注任务上的应用,作为2017年后最热的模型结构之一,在序列标注任务上原生transformer的表现并不尽如人意,效果比bilstm还要差不少,这背后有
风雨中的小七
2021/11/19
1.3K0
谷歌升级版Transformer官方解读:更大、更强,解决长文本问题(开源)
这是一个长期依赖性(long-range dependence)的例子,这是序列数据中常见的现象,处理许多现实世界的任务都必须理解这种依赖。
新智元
2019/05/08
1.4K0
谷歌升级版Transformer官方解读:更大、更强,解决长文本问题(开源)
CMU和谷歌联手放出XL号Transformer!提速1800倍 | 代码+预训练模型+超参数
近日,CMU和谷歌联手发布一篇论文,介绍了一种新的语言建模方法Transformer-XL。
量子位
2019/04/24
6660
CMU和谷歌联手放出XL号Transformer!提速1800倍 | 代码+预训练模型+超参数
大语言模型中常用的旋转位置编码RoPE详解:为什么它比绝对或相对位置编码更好?
自 2017 年发表“ Attention Is All You Need ”论文以来,Transformer 架构一直是自然语言处理 (NLP) 领域的基石。它的设计多年来基本没有变化,随着旋转位置编码 (RoPE) 的引入,2022年标志着该领域的重大发展。
deephub
2024/04/01
7.4K0
大语言模型中常用的旋转位置编码RoPE详解:为什么它比绝对或相对位置编码更好?
[预训练语言模型专题] Transformer-XL 超长上下文注意力模型
5-8:[BERT来临]、[浅析BERT代码]、[ERNIE合集]、[MT-DNN(KD)]
朴素人工智能
2020/05/07
1K0
NLP预训练家族 | Transformer-XL及其进化XLNet
最近又重新读了Transformer-XL和XLNet的论文和代码,又有很多新的感悟。其中,要想搞懂XLNet的同学一定要首先明白Transofrmer-XL,因为XLNet是基于Transformer-XL进行改进的。
NewBeeNLP
2021/08/20
9110
​迁移学习在NLP中的演化:从基础到前沿
论文标题:Evolution of Transfer Learning in Natural Language Processing
AI科技评论
2019/10/31
9290
​迁移学习在NLP中的演化:从基础到前沿
Transformers Assemble(PART III)
第四篇也非常有趣提出将独立的词向量替换成自变量为位置的函数,引入了复数空间综合了词向量和位置向量」
NewBeeNLP
2020/08/26
6190
Transformers Assemble(PART III)
【Pre-Training】关于 Transformer 那些的你不知道的事
本博客 主要 是本人在学习 Transformer 时的「所遇、所思、所解」,通过以 「十六连弹」 的方式帮助大家更好的理解 该问题。
阿泽 Crz
2020/07/29
9160
【Pre-Training】关于 Transformer 那些的你不知道的事
中文NER的那些事儿5. Transformer相对位置编码&TENER代码实现
这一章我们主要关注transformer在序列标注任务上的应用,作为2017年后最热的模型结构之一,在序列标注任务上原生transformer的表现并不尽如人意,效果比bilstm还要差不少,这背后有
用户4268038
2021/11/18
5460
命名实体识别新SOTA:改进Transformer模型
TENER: Adapting Transformer Encoder for Name Entity Recognition
AI科技评论
2019/11/28
2.4K0
命名实体识别新SOTA:改进Transformer模型
CMU、谷歌提出Transformer-XL:学习超长上下文关系
语言建模需要对长期依赖性进行建模,它成功应用了无监督的预训练方法 (Peters et al., 2018; Devlin et al., 2018)。但要让神经网络对序列数据的长期依赖性建模一直都是一项挑战。
机器之心
2019/04/30
8870
CMU、谷歌提出Transformer-XL:学习超长上下文关系
【NLP】TransformerXL:因为XL,所以更牛
前面介绍过Transformer作为一种特征抽取器的强大之处。那么,它有没有弱点呢?能不能改进呢?
用户1508658
2019/08/16
1.2K0
【NLP】TransformerXL:因为XL,所以更牛
XLNet预训练模型,看这篇就够了!(代码实现)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
mantch
2019/09/30
7220
XLNet预训练模型,看这篇就够了!(代码实现)
后BERT时代:15个预训练模型对比分析与关键点探究
在小夕之前写过的《NLP的游戏规则从此改写?从word2vec, ELMo到BERT》一文中,介绍了从word2vec到ELMo再到BERT的发展路径。而在BERT出现之后的这大半年的时间里,模型预训练的方法又被Google、Facebook、微软、百度、OpenAI等极少数几个玩得起游戏的核心玩家反复迭代了若干版,一次次的刷新我们这些吃瓜群众的案板上的瓜。
zenRRan
2019/08/21
2.3K0
后BERT时代:15个预训练模型对比分析与关键点探究
追溯XLNet的前世今生:从Transformer到XLNet
正当 GPT-2 还拿着 15 亿参数的模型吊着人们的胃口时,XLNet 带着开源的代码和 20 项 SOTA 的成绩悄悄发布了。从 BERT 到 XLNet,大一统预训练模型的成功,无疑昭示着行业的快速进步。现在是最好的时机。回到正题,本文虽篇幅较长,但能提供不一样的视角,帮你迅速理清模型的细节。废话不多说,笔者这就将带你快速品读,XLNet 诞生之路上最重要的三篇论文:
AI科技大本营
2019/07/16
1.5K0
追溯XLNet的前世今生:从Transformer到XLNet
Transformer的一家!
而关于attention和self-attention存在非常多的形式,我们之前常见的Transformer是依赖于scaled-dot-product的形式,也就是:给定query矩阵Q, key矩阵K以及value矩阵V,那么我们的输出就是值向量的加权和,其中,分配给每个值槽的权重由Quey与相应Key的点积确定。
zenRRan
2021/03/01
8200
推荐阅读
相关推荐
【Pre-Training】Transformer-XL:比 Transformer 强一点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档