返回介绍

数学基础

统计学习

深度学习

工具

Scala

三十、Self-Attention with Relative Position Representations [2018]

发布于 2023-07-17 23:38:25 字数 48610 浏览 0 评论 0 收藏 0

  1. 递归、卷积、注意力机制以不同的方式纳入关于位置的信息。RNN 通过 hidden stateht$ \mathbf{\vec h}_t $ 从而沿着时间维度(通过序列结构)来捕获相对位置和绝对位置。非递归模型不一定按顺序考虑 input elements ,因此可能需要显式地编码位置信息,从而能够使用 sequence order

    一种常见的方法是使用 position encoding ,它与输入元素相结合,从而将位置信息暴露给模型。这些 position encoding 可以是位置的确定性函数、或者 learned representationCNN 在每个卷积的 kernel size 范围内固有地捕获相对位置,然而它们已经被证明仍然受益于 position encoding

    对于既不采用卷积、也不采用递归的 Transformer 来说,纳入位置信息的 explicit representation 是一个特别重要的考虑,因为该模型完全不受 sequence ordering 的影响。因此, atention-based model 已经使用了 position encoding 、或基于距离的biased attention weight

    在论文 《Self-Attention with Relative Position Representations》 中,作者提出了一种有效的方法,将 relative position representation 纳入 Transformer 的自注意力机制中。论文的方法可以被看作是 Transformer 的自注意力机制的扩展,其中考虑来自相同输入的任何两个元素之间的任意关系。

  2. 相关工作:

    • Self-Attention:给定输入序列X=(x1,,xn)$ X = \left(\mathbf{\vec x}_1,\cdots,\mathbf{\vec x}_n\right) $ ,其中xiRdx$ \mathbf{\vec x}_i\in \mathbb R^{d_x} $ 为第i$ i $ 个元素,dx$ d_x $ 为元素的维度。self-attention layer 包含H$ H $ 个 attention head ,每个 head 将输入序列X$ X $ 投影到一个新的序列Z(h)=(z1(h),,zn(h))$ Z^{(h)} = \left(\mathbf{\vec z}_1^{(h)},\cdots,\mathbf{\vec z}_n^{(h)}\right) $ ,其中zi(h)Rdz$ \mathbf{\vec z}_i^{(h)}\in \mathbb R^{d_z} $ 是第h$ h $ 个 head 得到的第i$ i $ 个元素,dz$ d_z $ 为元素的维度。

      zi$ \mathbf{\vec z}_i $ 的计算过程为:

      (4)zi=j=1nαi,jWVxjei,j=(WQxi)(WKxj)dz,αi,j=exp(ei,j)k=1nexp(ei,k)

      其中:WQ,WK,WVRdz×dx$ \mathbf W^Q,\mathbf W^K,\mathbf W^V\in \mathbb R^{d_z\times d_x} $ 为待学习的投影矩阵。

30.1 模型

  1. 我们提出对自注意力的扩展,从而考虑输入元素之间的 pairwise relationship 。在这个意义上,我们将 input 建模为一个 labeled, directed, fully-connected graph 。输入元素xi$ \mathbf{\vec x}_i $ 和xj$ \mathbf{\vec x}_j $ 之间的边通过向量ai,jV,ai,jKRda$ \mathbf{\vec a}_{i,j}^V, \mathbf{\vec a}_{i,j}^K\in \mathbb R^{d_a} $ 来表达,其中da$ d_a $ 为向量维度(我们使用da=dz$ d_a = d_z $ )。学习两种不同的 edge representation 的动机是,ai,jV,ai,jK$ \mathbf{\vec a}_{i,j}^V, \mathbf{\vec a}_{i,j}^K $ 分别用于以下公式,而无需额外的线性变换:

    (5)zi=j=1nαi,j(WVxj+ai,jV),ei,j=(WQxi)(WKxj+ai,jK)dz

    其中:我们分别修改了zi$ \mathbf{\vec z}_i $ 和ei,j$ e_{i,j} $ 的公式,从而考虑边信息。 edge representation 可以在不同的 attention head 之间共享。

    这个扩展对于一些任务来说可能是很重要的,在这些任务中,一个给定的 attention head 所选择的 edget type 的信息对于下游的 encoder layerdecoder layer 是有用的。然而,正如实验部分所探讨的,这对于机器翻译任务来说可能是不必要的。

    我们通过简单加法纳入 edge representation 的主要动机是为了高效的实现。

    相对位置信息与两个元素相关,因此相对位置信息在计算 attention 期间加入。而绝对位置信息仅与元素本身有关,因此绝对位置信息在 input 期间加入。

  2. Relative Position Representation:由于序列是线性结构,因此 edge 可以捕获输入元素之间的 relative position difference 的信息。我们所考虑的最大相对位置的绝对值被截断为k$ k $ 。我们假设:精确的相对位置信息在超过一定距离后就没有用了。截断最大距离也使模型能够泛化到训练期间没有看到的序列长度。因此,我们考虑2k+1$ 2k+1 $ 个 unique edge label

    (6)ai,jK=wclip(ji,k)K,ai,jV=wclip(ji,k)Vclip(x,k)={x,if|x|kk,else ifx>kk,elsexk

    然后我们学习 relative position representation

    (7)WK=(wkK,,wkK)R(2k+1)×da,WV=(wkV,,wkV)R(2k+1)×da
  3. 高效的实现:

    • 由于需要考虑任意两个元素之间的相对位置信息,因此对于长度为n$ n $ 的输入序列,空间复杂度为O(hn2da)$ O(hn^2d_a) $ 。我们通过在每个 head 之间共享 relative position representation ,将其空间复杂性降低到O(n2da)$ O(n^2d_a) $ 。此外,还可以跨不同序列来共享 relative position representation 。假设 batch sizeb$ b $ ,那么一个 batch 的自注意力的空间复杂度从O(bhndz)$ O(bhnd_z) $ 增加到O(bhndz+n2da)$ O(bhnd_z+n^2d_a) $ 。假设da=dz$ d_a = d_z $ ,那么空间复杂度增加了nbh$ \frac{n}{bh} $ 倍。

      考虑到最大相对位置的绝对值被截断为k$ k $ ,因此空间复杂度降低到O(hnkda)$ O(hnkd_a) $ 。

    • 对于一个 batch 中的所有序列、headpositionTransformer 使用并行的矩阵乘法从而高效地计算 self-attention 。在没有 relative position representation 的情况下,每个ei,j$ e_{i,j} $ 可以使用bh$ bh $ 个并行乘法来实现,每个乘法都是一个n×dz$ n\times d_z $ 的矩阵乘以另一个dz×n$ d_z\times n $ 的矩阵。对于一个特定的 head 和序列,每个矩阵乘法计算所有位置的ei,j$ e_{i,j} $ 。这要求每个位置跨不同的函数来共享相同的 representation

      即:Z=softmax((WQX)(WKX)dz)WVX$ \mathbf Z = \text{softmax}\left(\frac{(\mathbf W^Q\mathbf X)^\top (\mathbf W^K\mathbf X)}{\sqrt {d_z}}\right) \mathbf W^V\mathbf X $ ,其中XRd×n$ \mathbf X\in \mathbb R^{d\times n} $ 为序列中所有输入向量拼接而成。

      然而在我们的 relative position representation 中,不同 position pairrepresentation 是不同的。这使得我们无法在一次矩阵乘法中计算所有 position pair 的所有ei,j$ e_{i,j} $ 。这可以将ei,j$ e_{i,j} $ 拆分为两部分来解决:

      (8)ei,j=(WQxi)(WKxj)+(WQxi)ai,jKdz

      第一项与传统的 Transformer 相同,第二项包含 relative position representation

      对于第二项,我们可以通过 tensor reshape 从而计算n$ n $ 个并行的矩阵乘法,每个矩阵乘法涉及一个bh×dz$ bh\times d_z $ 的矩阵和另一个dz×n$ d_z\times n $ 的矩阵的乘法。每个矩阵乘法计算所有 headbatchei,j$ e_{i,j} $ 的贡献,对应于一个特定的位置。

      相同的方法可以用于计算zi$ \mathbf{\vec z}_i $ 。对于我们的机器翻译实验,结果是 steps/second 降低了 7% 左右。

      如果不这么做,可能会降低更多。然而论文没有给出对比数据。

30.2 实验

  1. 数据集:WMT 2014 机器翻译任务。

    • WMT 2014 English-German 数据集,包括大约 4.5Msentence pair

    • 2014 WMT English-French 数据集,包括大约 36Msentence pair

  2. 配置:

    • 我们使用 32768 大小的 word-piece vocabulary

    • 我们按相近长度对 sentence pair 进行 batch ,并将每个 batchinput tokensoutput tokens 限制在 4096/GPU 。 每个 training batch 包含大约 25,000source tokens25,000target tokens

    • 我们使用 Adam 优化器,β1=0.9,β2=0.98,ϵ=109$ \beta_1=0.9, \beta_2=0.98, \epsilon = 10^{-9} $ 。对于学习率,我们使用和 Transformer 相同的 warmup 策略(4kstep 的预热)和 decay 策略。

    • 在训练过程中,我们采用了 0.1label smoothing

    • 评估时,我们使用 beam size = 4beam search,惩罚系数为α=0.6$ \alpha = 0.6 $ 。

    • 对于 base 模型:

      • 我们使用了 6encoder layer6decoder layerdx=512,dz=64$ d_x=512, d_z = 64 $ , attention head 数量为 8feed forward inner-layer 维度为1024$ 1024 $ ,以及 dropout rate = 0.1

      • 当使用 relative position encoding 时,我们截断距离为k=16$ k=16 $ ,并在每个 layerhead 使用 unique edge representation

      • 我们在 8K40 GPU 上训练了 100k 步,并且没有使用 checkpoint averaging

    • big 模型:

      • 我们使用了 6encoder layer6decoder layerdx=1024,dz=64$ d_x=1024, d_z = 64 $ , attention head16feed forward inner-layer 维度为4096$ 4096 $ ,对于 EN-DE 数据集使用 dropout rate = 0.3 ,对于 EN-FR 数据集使用 dropout rate = 0.1

      • 当使用 relative position encoding 时,我们截断距离为k=8$ k=8 $ ,并在每个 layer 使用 unique edge representation

      • 我们在 8p100 GPU 上训练了 300k 步,并对最后 20checkpoint 进行了平均,每隔 10 分钟保存一次 checkpoint

  3. baseline:使用正弦 position encodingTransformer

  4. 实验结果如下表所示,可以看到:

    • 对于 English-to-German ,我们的方法比 baseline 分别提高了 0.3 BLEU1.3 BLEU

    • 对于 English-to-French ,我们的方法比 baseline 分别提高了 0.5 BLEU0.3 BLEU

    在我们的实验中,我们没有观察到同时包含 sinusoidal position encodingrelative position representation 的任何好处(相对于仅包含 relative position representation )。

    relative position representation 的效果提升不多,并且更难并行化,因此性价比不高?

  5. 消融实验:这里的所有实验都使用了没有任何 absolute position representationbase 模型配置。BLEU score 是在 newstest2013 WMT English-to-German 任务中使用验证集计算的。

    • 我们评估了不同的k$ k $ (距离截断阈值)对模型效果的影响,如下表所示。可以看到,对于k2$ k\ge 2 $ ,BLEU score 似乎没有什么变化。由于我们使用多个 encoder layer ,精确的 relative position 信息可能会传播到距离k$ k $ 之外。

    • 我们还评估了是否包含ai,jV$ \mathbf{\vec a}^V_{i,j} $ 和ai,jK$ \mathbf{\vec a}^K_{i,j} $ 的影响,如下表所示。然而,这里仅代表翻译任务的结果,还需要进一步的工作来确定在其它任务上的结果。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文