\noindent 其中$A_(i,j)^rel$表示使用相对位置编码后的表示。首先将(b)和(d)两项中Query的正余弦编码修改为相对位置编码$R_(i-j)$;之后将(c)和(d)两项中Key中的$U_i$分别替换成可学习的u与v;最后将$W_k$矩阵分割为$W_(k,E)$和$W_(k,R)$矩阵,分别作为Key中词嵌入与相对位置编码的线性映射矩阵。通过该参数化定以后每一项具备了直观上的表征含义:(a)表示基于内容的表征,(b)表示基于内容的位置偏置,(c)表示全局的内容的偏置,(d)表示全局的位置偏置。公式15.8中的(a)、(b)两项与前面介绍的相对位置编码一致(Self-Attention with Relative Position Representations),并针对相对位置编码引入了额外的线性映射矩阵。同时兼顾了全局内容偏置和全局位置偏置,可以更好的利用正余弦函数的归纳偏置特性。
\item基于结构化位置编码(Structural Position Representations)(Self-Attention with Structural Position Representations)。对比序列化的位置编码手段,引入结构化位置表示。通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置。并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
\item{\small\bfnew{基于结构化位置编码}}\index{基于结构化位置编码}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}。对比序列化的位置编码手段,引入结构化位置表示。通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置。并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
\vspace{0.5em}
\item基于连续动态系统(Continuous Dynamic Model)的位置编码(Learning to Encode Position for Transformer with Continuous Dynamical Model)。相比于正余弦位置编码本身不具备可学习的参数,表示能力受限的同时不够灵活,在超出训练样本中句长的样例表现不佳。使用神经常微分方程(Neural Ordinary Differential Equation)求解器(Solver)来建模位置信息,模型具有更好的归纳偏置能力,可以处理变长的输入样本,同时能够从不同的数据中进行自适应学习。
\item 使用轻量卷积和动态卷积神经网络(pay less attention with lightweight and dynamic convolutions)。卷积神经网络天然更适用于捕获输入序列不同位置间的局部依赖。这里,分别在编码端和解码端利用轻量卷积或动态卷积神经网络(见第九章)替换自注意力机制,同时保留目标端的编码-解码注意力机制,一定程度上加强了模型对局部信息的感知,同时提高了网络的计算效率。此外,在此基础上提出的Conformer模型(Conformer: Convolution-augmented Transformer for Speech Recognition)本质上也利用到动态卷积神经网络能够有效局部依赖的特性,不同点在于其并不是直接替换自注意力机制,而是在自注意力机制和前馈神经网络中间引入了动态卷积神经网络。这种方式保证了模型能够同时兼顾序列中的各位置之间的全局依赖与局部依赖。
\parinterval 在神经网络模型中,有的模块包含多个平行的组件用来捕捉输入表示的多种不同特征,这种结构被称为多分支(Multi-branch)结构。多分支结构在图像领域被广泛应用(Aggregated Residual Transformations for Deep Neural Networks),在许多人工设计或者自动搜索获得的网络结构中都有它的身影(文献)。而在自然语言处理领域,多分支结构同样也有很多应用。比如前面章节介绍过的基于循环神经网络的翻译模型中,为了更好地对源语言进行表示,编码端通常采用双向循环神经网络(图15.4(a))。这里双向循环神经网络就可以看作一个两分支的结构,分别用来捕捉正向序列和反向序列的表示,将这两种表示进行拼接得到更丰富的语义表示。另一个典型的例子是多头注意力机制(图15.4(b))。在Transformer模型中,多头注意力将输入空间表示分割成多个独立的表示,然后分别进行点积注意力的计算,最后再将多个输出表示拼接后通过线性变化进行不同子空间信息的融合。在这个过程中,多个不同的头对应着不同的特征空间,可以捕捉到不同的特征信息。
\parinterval 此外,在15.1.1节中提到局部建模手段能够进一步强化Transformer,其中利用卷积的思想可以与自注意力机制形成互补。这里,通过更高效的多分支结构来分别提取全局和局部两种依赖关系同样可以达到类似的目的(图15.8)(LITE TRANSFORMER WITH LONG-SHORT RANGE ATTENTION)。具体的做法是将输入的特征向量切分成等同维度的两部分,之后分别送入两个分支进行计算。其中,全局信息由注意力机制进行提取,局部信息使用轻量卷积(pay less attention with lightweight and dynamic convolutions)提取。由于每个分支的维度只有原始的一半,采用并行计算方式可以显著缩短模型的运行时间。
\item 分块注意力:顾名思义,就是将序列划分为固定大小的片段,在进行注意力机制的计算时,执行注意力计算每个词的表示时只在对应的片段内执行。这样,每一个片段内的注意力计算成本是固定,可以大大降低处理长序列时的总体计算时间。(Block wise self-attention for long document understanding,Generating wikipedia by summarizing long sequences)。
\item 内存压缩注意力:这种方式的主要的思想是使用一些合并操作,如卷积,池化等对序列进行下采样,来缩短序列长度。例如,使用跨步卷积(Stride Convolution)来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力矩阵计算时的复杂度。(Generating wikipedia by summarizing long sequences),其具体的计算复杂度取决跨步卷积时步幅的大小K,形式上可以理解为每K个词做一次特征融合后,将关注的目标缩减为N/K,整体的计算复杂度为$O(N*N/K)$,相比于前两种方式的对局部进行注意力计算,该方式仍是对全局的建模。
\item Routing Transformer(Efficient content based sparse attention with routing transformers)中采用了通过K-means算法对单词来进行分组聚类后,分别在组内进行自注意力机制的计算来提高效率。首先是将Query和Key映射到聚类矩阵R:
。假设能够取消Softmax操作,便可以将注意力机制的计算调整为$QK^T V$,由于矩阵的运算满足结合律,可以先进行$K^T V$的运算,得到$d_k×d_k$的矩阵,再左乘Q。在长文本处理中,由于多头机制的存在,$dk << N$,所以最终的计算复杂度便可以近似为$O(n)$,从而将注意力机制简化为线性计算。因此可以尝试对注意力机制内核化,使用核函数改写注意力机制,同时保证取消Softmax后$QK^T$内积的非负性,避免显示的计算$N x N$的矩阵(Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention,Rethinking attention with performers.)。
\parinterval 除了上述介绍的多分支网络,还可以通过多尺度的思想来对输入的特征表示进行分级表示,引入短语的信息(Multi-Granularity Self-Attention for Neural Machine Translation)。此外,在对自注意力网络中的注意力权重分布进行修改时,同样可以根据不同的缩放比例对序列中的实词与虚词进行区分。(Learning When to Concentrate or Divert Attention: Self-Adaptive Attention Temperature for Neural Machine Translation)
\parinterval 高效地Transformer:针对处理长文本数据时面临庞大的时间复杂度问题,除了上述章节介绍的方法,研究人员通过简化网络的结构来构建更高效地Transformer结构。(Longformer: The Long-Document Transformer;Linformer: Self-Attention with Linear Complexity;RETHINKING ATTENTION WITH PERFORMERS)