• 【论文笔记】Self-Attention with Relative Position Representations


    Comments:	NAACL 2018
    Subjects:	Computation and Language (cs.CL)
    Cite as:	arXiv:1803.02155 [cs.CL]
     	(or arXiv:1803.02155v2 [cs.CL] for this version)
     
    https://doi.org/10.48550/arXiv.1803.02155
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1. Introduction

    Transformer的核心结构Self-Attention机制由于其无法对输入token的相对位置或绝对位置信息进行建模,因此,目前主流的方案都是在输入token之外再额外加上一个Positional Encoding来引入位置信息。本文则是从Self-Attention机制内部出发,通过在计算过程中引入token之间的相对位置关系向量,打破了Self-Attention机制的Permutation-Invariant特性,从而更高效地完成了位置信息的编码,性能得到了提升。

    2. Background

    本文扩展自注意力以考虑输入元素之间的成对关系,从这个意义上讲,就是将输入建模为标记的(labeled),有向的( directed),完全连接的图( fully-connected graph)。在正式进入讲解之前,我们需要回顾一下self-attention。假设我们从多头注意力机制中的一个头输出后的序列是 x = ( x 1 , . . . , x n ) x=(x_1,...,x_n) x=(x1,...,xn),其中 x i ∈ R d x x_i∈\mathbb{R}^{d_x} xiRdx,通过 attention 计算出一个新的序列 z = ( z 1 , … , z n ) z=(z_1,…,z_n) z=(z1,,zn),其中 z i ∈ R d z z_i∈\mathbb{R}^{d_z} ziRdz。线性变换的输入元素的加权和计算公式如下:
    在这里插入图片描述
    其中,权重系数 a i j a_{ij} aij 是通过 softmax 计算的:
    在这里插入图片描述
    使用兼容函数计算 e i j e_{ij} eij,该函数比较两个输入元素(其中,使用Scaled dot product作为兼容函数计算是很高效的):
    在这里插入图片描述
    W Q , W K , W V ∈ R d x × d z W^Q,W^K,W^V∈\mathbb{R}^{d_x×d_z} WQ,WK,WVRdx×dz 是参数矩阵。

    3. Proposed Architecture

    3.1 Relation-aware Self-Attention

    沿用上面的 x x x 的表示,将输入元素之间的edge表示为 a i j V , a i j K ∈ R d a a_{ij}^V,a_{ij}^K∈\mathbb{R}^{d_a} aijV,aijKRda ,学习两个不同的 edge 表示的出发点是 a i j V , a i j K a_{ij}^V,a_{ij}^K aijV,aijK 适用于如下两个等式,这些表示可以在关注头之间共享, d a = d z d_a=d_z da=dz

    通过引入边的特征表示,原始的Self-Attention机制修改为以下计算方式:
    在这里插入图片描述
    即对于各个Value和Key来说,都会引入一个相互的位置关系表示,从而打破了Self-Attention的Permutation-Invariant。

    3.2 Relative Position Representation

    考虑到计算量、内存消耗以及远距离的精确位置信息效用足等因素,本文对最远的Relative Position Distance限制为 k k k

    Relative Position Representation 的目标是给出 a i , j V , a i , j K a_{i,j}^V,a_{i,j}^K ai,jV,ai,jK 的计算方式。假设如果序列中两个元素的距离超过 k k k,则这两元素之间的位置信息就没有意义了。剪裁最大距离还使模型能够泛化训练期间看不到的序列长度,因此,考虑 2 k + 1 2k+1 2k+1 个唯一的edge标签。
    在这里插入图片描述
    以下图为例,图中假设 2 < = k < = n − 4 2 <= k <= n − 4 2<=k<=n4

    i = 2 , j = 1 i=2,j=1 i=2j=1 时, c l i p ( − 1 , k ) = m a x ( − k , m i n ( k , − 1 ) ) = − 1 clip(-1,k)=max(-k,min(k,-1))=-1 clip(1,k)=max(k,min(k,1))=1 a 2 , 1 K = w c l i p ( − 1 , k ) K = w − 1 K a_{2,1}^K=w_{clip(-1,k)}^K=w_{-1}^K a2,1K=wclip(1,k)K=w1K, 同理得 a 2 , 1 V = w − 1 V a_{2,1}^V=w_{-1}^V a2,1V=w1V

    i = 4 , j = n i=4,j=n i=4,j=n 时, c l i p ( n − 4 , k ) = m a x ( − k , m i n ( k , n − 4 ) ) = k clip(n-4,k)=max(-k,min(k,n-4))=k clip(n4,k)=max(k,min(k,n4))=k a 4 , n K = w c l i p ( n − 4 , k ) K = w k K a_{4,n}^K=w_{clip(n-4,k)}^K=w_{k}^K a4,nK=wclip(n4,k)K=wkK,同理得 a 4 , n V = w k V a_{4,n}^V=w_{k}^V a4,nV=wkV
    在这里插入图片描述
    在这种设定下, a i , j V , a i , j K a_{i,j}^V,a_{i,j}^K ai,jV,ai,jK 应该只与相对位置有关,而与 x i , j , x i , j x_{i,j},x_{i,j} xi,j,xi,j 没有关系。作者直接将 a i , j V , a i , j K a_{i,j}^V,a_{i,j}^K ai,jV,ai,jK 定义为可训练的向量,本质上是训练 w K = ( w − k K , . . . , w k K ) w^K=(w_{-k}^K,...,w_k^K) wK=(wkK,...,wkK) w V = ( w − k V , . . . , w k V ) w^V=(w_{-k}^V,...,w_k^V) wV=(wkV,...,wkV) w i K , w i V ∈ R d a w_i^K,w_i^V∈\mathbb{R}^{d_a} wiK,wiVRda

    3.3 Efficient Implementation

    把等式(4)拆分开如下:
    在这里插入图片描述
    然后我们就可以通过矩阵并行计算批量进入的数据了。

    4 Experiments

    实验结果:
    在这里插入图片描述
    在这里插入图片描述

    5 Conclusions

    本文主要是从Self-Attention机制本身出发,在计算过程中引入了相对位置信息,从而打破了Self-Attention的Permutation-Invariant特性,提升了各个word之间关系构建能力。

  • 相关阅读:
    行业追踪,2023-10-27
    Linux性能监控命令-Top
    小白入门深度学习 | 3-2:激活函数activation
    JAVA计算机毕业设计宠物寄养管理系统Mybatis+系统+数据库+调试部署
    NumPy的广播机制
    web自动化测试为什么运行错误
    Head First Java 第二版
    Leetcode739. 每日温度
    基于神经网络的系统辨识,神经网络的种类和特点
    Synchronized代码详解?
  • 原文地址:https://blog.csdn.net/Luo_LA/article/details/134422034