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

2020 年 4 月 23 日 AINLP


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

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

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

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

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


0. 位置信息

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

以情感分析 sentiment analysis 为例:

  • like this movie because it doesn't have an overhead history. Positive

  • don'tlike this movie because it has an overhead history. Negative

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

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

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

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

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

感兴趣的同学可以看下这篇文章 Encoding Word Order in Complex Embeddings 。

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

1. 原始 Transformer [1]

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

其中,pos 指的是 token 的位置。设句子长度为 ,那么 i 是向量的某一维度,例如 时,

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

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,  can be represented as a linear function of 

已知三角函数公式如下:

因此,可以将 可以表示为 的线性表示如下:

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

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

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

其中, 表示位置嵌入的维度, 表示由  决定的常量(),由  可推得:

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

因此,对于给定的位置 pos 和 偏移量 k 而言,只取决于偏移量 k,因此两者的点积可以反映相对距离 k。如上图所示,点积的结果是对称的,并且随 增加而减少(但并不单调)。

此外,由于点积结果只依赖于 k,那么令 ,有 对于给定的位置 pos 和 偏移量 k 而言,,即两者的点积无法反映方向性

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

但是在 Transformer 中,由于需要经过映射,即两者间的点积实际是 并可以视为,然而如上图所示,此时并没有看到相对距离 k 的清晰模式。

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

2. 相对位置表示[2]

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

Transformer 中的 Self-attention 机制如下,输入 ,输出 

RPR 的不在输入时将位置表示与 token 表示相加,而是选择对 self-attention 进行改动:

这里的 (不是 ) 的计算方式如下:

因此,模型学习相对位置表示 (同理),同一层的attention heads之间共享,但是在不同层之间是不同的。此处公式有些晦涩,故此举一实例加以解释[7]

当 时,,那么第 0-8 行则分别对应的是位置 i 与位置 之间的相对位置表示。以输入“I think therefore I am”为例:

其中,“I” 使用的是 ,“think” 使用的是 (因为 “think” 在第一个 “I” 的右边第一个,对应的是 i+1的情况)。套用公式中则是,Query 为“I”,Key 为 “think” 时,有  ,那么  ,那么此时  。

其中,“I” 使用的是 ,“think” 使用的是 (因为 “think” 在第二个 “I” 的左边第二个,对应的 i-2 的情况)。

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

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

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

@李如 :补充一个RPR的tensorflow实现:https://github.com/THUNLP-MT/TH

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 所示,绿色部分表示当前片段使用的扩展上下文。对于每一层而言,输入为前一片段以及当前片段的前一层的输出,从而可以保证对长期依赖的建模能力并避免了上下文碎片问题。

下面用公式表达上述过程。第 与 个长度为 的连续片段表示为 ,由 生成的第 层隐藏状态序列称为 ,那么的计算过程如下:

其中,表示 stop-gradient 函数,表示沿长度维度将两个隐层状态序列进行连接,表示模型参数。第一行公式得到包含扩展上下文的 作为新的输入,第二行与 vanilla Transformer 中类似,只是 key 和 value 均使用 

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

借助片段循环机制,可以使隐藏状态做到片段级循环,这实际上使得有效的上下文可以远远超过两个片段。注意,这里的 之间的循环依赖是每段向下移动一层的,这与 RNN-LM 中的同一层循环是不同的。因此,最大可能依赖长度是关于层数和片段长度线性增长的(例如 ),如图 2.b 中的阴影区域所示。

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

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

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

在片段循环机制中,有一个重要问题没有得到解决:如何保证在循环时,位置信息的连贯性?具体而言,vanilla Transformer 中使用 positional encodings 获得 ,其第 i 行 表示的是片段内的绝对位置 i ,则规定了建模的最大长度。之后将单词嵌入和位置编码逐元素相加,如果直接在片段循环机制中使用如上位置表示方式,那么隐藏状态序列的计算过程如下:

其中,是序列 的词嵌入表示,表示变换函数。此时,无论是 还是 都使用同样的位置编码 。因此,对于任意 ,模型没有任何信息能用来区分 和 之间的位置差异,从而导致了性能损失。

为了避免上述问题的出现,论文提出了仅在隐藏状态中对相对位置信息进行编码。

Conceptually, the positional encoding gives the model a temporal clue or “bias” about how information should be gathered, i.e., where to attend.

从概念上讲,位置编码为模型提供了关于如何理解信息(关注哪里)的时间线索或时间偏差/倾向。为此,可以在每一层的 attention score 中引入相同的信息,而不是将 “bias” 静态放入初始嵌入中。更重要的是,以相对方式定义的时间偏差是更为直观和可泛化的。例如,查询向量 和键向量 运算时,并不需要知道每个键向量的绝对位置来分辨其时间顺序,只要知道每个 和 之间的相对距离即可,即 。因此,可以创建一组相对位置编码 表示的是相对距离为 i 时的情况。将相对距离动态引入至注意力得分中,使查询向量可以分辨 和 之间的位置差异,从而使片段循环机制有效。另外,作者认为这样不会损失任何时间信息,因为可以从相对位置递归地得到绝对位置

为了理解如何动态引入相对位置信息,我们首先将同一片段内的 与 之间的注意力得分(即 RPR 中的 )分解为:

本文基于仅依赖相对位置信息的思想,提出如下改动:

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

  • 首先将 中用于计算键向量的绝对位置编码 替换为相对位置编码 。注意这里的  不是可学习的,而是和 vanilla Transformer 中类似的正弦编码矩阵,只要将其公式中的 pos 替换为  即可。(这里的 ,因为模型是自回归的)

  • 接着引入可训练参数 来代替 中原来的 ,这使得所有查询位置 i 的查询向量都是相同的,所以不管查询位置是什么,对不同单词的注意偏差都是相同的。类似的,引入 来代替 中的 

  • 最后,将原来的 分为两个权重矩阵 ,分别生成基于内容的和基于位置的键向量。

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

  •  表示基于内容的处理 (content-based addressing)

  •  表示基于内容的位置偏差 (content-dependent positional bias)

  •  表示整体内容偏差 (global content bias)

  •  表示整体位置偏差 (global positional bias)

与 RPR 相比,RPR 仅仅只有 与 两项,并且将 合并为可训练的矩阵 ,这放弃了 vanilla Transformer 中的正弦位置编码中内置的归纳偏置。相反,本文的 很好地保留了归纳偏置,并且获得了能够将基于定长 memory 训练的模型在评估时自动泛化至更长的 memory 的好处。

结合上述两种机制,就得到了 Transformer-XL 的体系结构。对于一个单注意力头的 N 层 Transformer-XL 而言,对于 

其中,初始化为词嵌入序列 

这里需要补充的是,Transformer-XL 所采用的相对距离表示方法是不具有方向性的,即 ,做的是自回归的语言建模任务;而 RPR 中采用的相对距离是具有方向性的,做的机器翻译任务。不过其实由于 ,  ,  的定义域变为例如  时,  其实是可以为 attention score 带来方向信息的[4]

参考

  1. ^abAttention Is All You Need https://arxiv.org/abs/1706.03762

  2. ^abSelf-Attention with Relative Position Representations https://arxiv.org/abs/1803.02155

  3. ^abTransformer-XL: Attentive Language Models Beyond a Fixed-Length Context https://arxiv.org/abs/1901.02860

  4. ^abcTENER: Adapting Transformer Encoder for Name Entity Recognition https://arxiv.org/abs/1911.04474

  5. ^Convolutional Sequence to Sequence Learning https://arxiv.org/abs/1705.03122

  6. ^BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding https://arxiv.org/abs/1810.04805

  7. ^How self-attention with relative position representations works https://medium.com/@_init_/how-self-attention-with-relative-position-representations-works-28173b8c245a

  8. ^Character-Level Language Modeling with Deeper Self-Attention https://arxiv.org/abs/1808.04444

  9. ^Google AI Blog https://ai.googleblog.com/2019/01/transformer-xl-unleashing-potential-of.html



推荐阅读

AINLP年度阅读收藏清单

世界读书日,我来凑个单,推荐几本NLP/推荐算法/广告系统/其他相关的新书

百度PaddleHub NLP模型全面升级,推理性能提升50%以上

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

当当的羊毛,快薅,这一次要拼手速!

数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?

自动作诗机&藏头诗生成器:五言、七言、绝句、律诗全了

From Word Embeddings To Document Distances 阅读笔记

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

这门斯坦福大学自然语言处理经典入门课,我放到B站了

可解释性论文阅读笔记1-Tree Regularization

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。



登录查看更多
0

相关内容

Transformer是谷歌发表的论文《Attention Is All You Need》提出一种完全基于Attention的翻译架构

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
基于多头注意力胶囊网络的文本分类模型
专知会员服务
76+阅读 · 2020年5月24日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
BERT进展2019四篇必读论文
专知会员服务
66+阅读 · 2020年1月2日
注意力机制介绍,Attention Mechanism
专知会员服务
166+阅读 · 2019年10月13日
命名实体识别新SOTA:改进Transformer模型
AI科技评论
17+阅读 · 2019年11月26日
从三大顶会论文看百变Self-Attention
PaperWeekly
17+阅读 · 2019年11月11日
几种句子表示方法的比较
AINLP
15+阅读 · 2019年9月21日
深度学习的下一步:Transformer和注意力机制
云头条
56+阅读 · 2019年9月14日
从 one-hot 到 BERT,带你一步步理解 BERT
数说工作室
21+阅读 · 2019年6月25日
进一步改进GPT和BERT:使用Transformer的语言模型
机器之心
16+阅读 · 2019年5月1日
BERT大火却不懂Transformer?读这一篇就够了
大数据文摘
11+阅读 · 2019年1月8日
Arxiv
6+阅读 · 2019年7月11日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Star-Transformer
Arxiv
5+阅读 · 2019年2月28日
Conditional BERT Contextual Augmentation
Arxiv
8+阅读 · 2018年12月17日
Music Transformer
Arxiv
5+阅读 · 2018年12月12日
Doubly Attentive Transformer Machine Translation
Arxiv
4+阅读 · 2018年7月30日
VIP会员
相关资讯
命名实体识别新SOTA:改进Transformer模型
AI科技评论
17+阅读 · 2019年11月26日
从三大顶会论文看百变Self-Attention
PaperWeekly
17+阅读 · 2019年11月11日
几种句子表示方法的比较
AINLP
15+阅读 · 2019年9月21日
深度学习的下一步:Transformer和注意力机制
云头条
56+阅读 · 2019年9月14日
从 one-hot 到 BERT,带你一步步理解 BERT
数说工作室
21+阅读 · 2019年6月25日
进一步改进GPT和BERT:使用Transformer的语言模型
机器之心
16+阅读 · 2019年5月1日
BERT大火却不懂Transformer?读这一篇就够了
大数据文摘
11+阅读 · 2019年1月8日
相关论文
Arxiv
6+阅读 · 2019年7月11日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Star-Transformer
Arxiv
5+阅读 · 2019年2月28日
Conditional BERT Contextual Augmentation
Arxiv
8+阅读 · 2018年12月17日
Music Transformer
Arxiv
5+阅读 · 2018年12月12日
Doubly Attentive Transformer Machine Translation
Arxiv
4+阅读 · 2018年7月30日
Top
微信扫码咨询专知VIP会员