我们使用如图[1]所示的编码器-解码器架构来对一个序列进行序列建模,该架构遵循Transformer[15]中提出的架构。我们提出了一种计算注意函数的新方法,同时学习了新的多头和传统的多头。对于给定的H(多个头的总数),我们在H/2 heads中使用自我注意来捕获全局依赖关系,并在H/2 heads中使用基于卷积的注意来通过上下文捕获依赖关系。这明确地使用H/2 heads中的卷积来建模单词上下文依赖关系。我们证明了字上下文依赖将补充传统的多头。传统的多头可以被认为是明确地建模单词-单词依赖,通过三个矩阵查询、键和值线性投影单词嵌入。
C. Attention
我们使用缩放的点积注意力来处理硬件和软件的最大问题[15],以及提出的上下文注意力。
Scaled Dot-Product Attention:
我们在H/2 heads中使用了缩放的点积注意力。输入由dk维度的查询(Q)和键(K)以及[15]维度的值(V)组成
Convolution Attention:
我们提出两个模块的卷积注意。首先是adaptive sequence模块,它捕获每个单词的本地上下文。另一个是adaptive query模块,它捕获输入序列的整个上下文,如图[3]所示。卷积有一个固定的上下文窗口,可以帮助确定一个单词在本地上下文中的重要性。输入序列首先通过一个扩展的因果卷积核[14,16,17],这是深度可分离的。因果卷积有助于确保不存在信息泄漏,而跨时间维度F的权重是softmax标准化的,因此单词表示是上下文中单词的加权平均值。我们使用扩张[23]来增加上下文窗口的接受域。深度卷积有助于将参数从d2f降至dF,其中d是单词表示的维数,F是滤波器的大小。扩展的深度随机卷积是一个具有局部上下文的令牌表示。自适应序列模块为一个序列S中跨通道d的第t个元素计算如下的本地上下文。
自适应序列模块的输出表示一个单词跨上下文F的本地上下文
自适应查询模块:将输入序列S通过线性层,即层和
层,得到查询矩阵,再与自适应序列模块的输出进行卷积。这在概念上类似于使用递归神经网络[1]获得上下文,因此线性层与
相乘后的输出是softmax归一化的,从而使用
获得线性层投影的加权和。对于长度为T的序列S,动态查询由:
D. Multi-Head Attention