512 Chapter 15. 神经机器翻译结构优化 肖桐 朱靖波
Query 的数量保持不变,从而减少了注意力权重计算时的复杂度
[810]
。其计算复
杂度取决于跨步卷积时步幅的大小 K,形式上可以理解为每 K 个单元做一次
特征融合后,将关注的目标缩减为 N/K,整体的计算复杂度为 N
2
/K。相比
于使用前两种方式对局部进行注意力计算,该方式仍是对全局的建模。
在不同的任务中,可以根据不同的需求使用不同的注意力模型,甚至可以采用多
种注意力模型的结合。比如,对分类任务中的某些特殊标签,如 BERT 中的 <CLS>,
需要对全局信息进行整合,因此可以使用全局注意力。而对于其他位置,则可以使
用局部注意力提高计算效率。同样的,也可以针对多头机制中的不同注意力头采用
不同的计算方式,或者对不同的头设置不同的局部窗口大小,以此来增大感受野,在
提高模型计算效率的同时使模型保留全局建模能力。
由于上述方法都是基于预先设定好的超参来限制注意力机制的作用范围,因此
可以称这些方法是静态的。除此之外还有以数据驱动的方法,这类方法通过模型来
学习注意力机制的作用范围。比如,可以将序列分块,并对序列中的不同单元进行
排序或者聚类,之后采用稀疏注意力的计算。下面对部分相关的模型进行介绍:
• Reformer 模型在计算 Key 和 Value 时使用相同的线性映射,共享 Key 和 Value
的值
[545]
,降低了自注意力机制的复杂度。进一步,Reformer 引入了一种局部敏
感哈希注意力机制(Locality Sensitive Hashing Attention,LSH Attention),其提
高效率的方式和固定模式中的局部建模一致,减少注意力机制的计算范围。对
于每一个 Query,通过局部哈希敏感机制找出和其较为相关的 Key,并进行注
意力的计算。其基本思路就是距离相近的向量以较大的概率被哈希分配到一个
桶内,距离较远的向量被分配到一个桶内的概率则较低。此外,Reformer 中还
采用了一种可逆残差网络结构(The Reversible Residual Network)和分块计算前
馈神经网络层的机制,即将前馈层的隐藏层维度拆分为多个块并独立的进行计
算,最后进行拼接操作,得到前馈层的输出,这种方式大幅度减少了内存(显
存)占用。
• Routing Transformer 通过聚类算法对序列中的不同单元进行分组,分别在组内
进行自注意力机制的计算
[812]
。该方法是将 Query 和 Key 映射到聚类矩阵 S:
S = QW + KW (15.22)
其中,W 为映射矩阵。为了保证每个簇内的单词数量一致,利用聚类算法将 S
中的向量分配到
√
N 个簇中,其中 N 为序列长度,即分别计算 S 中每个向量
与质心(聚类中心)的距离,并对每个质心取距离最近的若干个节点。
另外,在注意力机制中对计算效率影响很大的一个因素是 Softmax 函数的计算。