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

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

知乎专栏:自然语言处理学习之旅 (原文链接即可直接访问)

https://zhuanlan.zhihu.com/p/92017824

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

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

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

自然语言处理学习之旅

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

0. 位置信息

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

以情感分析 sentiment analysis 为例:

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

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

don’tlike 的相对位置不同,决定了这两句话的情感取向是一正一负的,但在传统词袋(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)

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

下文结合原始 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。

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

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

参考

  1. ^ a b Attention Is All You Need https://arxiv.org/abs/1706.03762

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

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

  4. ^ a b c TENER: 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

本文转载自公众号: 机器学习算法与自然语言处理,作者:徐啸

推荐阅读

SemBERT: BERT 的语义知识增强

子词技巧:The Tricks of Subword

T5 模型:NLP Text-to-Text 预训练模型超大规模探索

Google T5速读

BERT 瘦身之路:Distillation,Quantization,Pruning

Transformer (变形金刚,大雾) 三部曲:RNN 的继承者

关于AINLP

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

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章