动态卷积,它比自注意力更简单、更有效。我们仅基于当前时间步长预测单独的卷积核,以确定上下文元素的重要性。这种方法所需的操作数量随输入长度呈线性增长,而自注意力是二次的。在大规模机器翻译、语言建模和抽象摘要上的实验表明,动态卷积比强自注意模型有更好的改进。
1. 引言
RNN通过在每个时间步更新一个隐藏状态来整合上下文信息,CNN通过多层总结固定大小的上下文,而自关注则直接总结所有上下文。注意力为上下文元素分配注意权重,该权重定义了上下文表示的加权和。源-目标注意从另一个序列(如机器翻译)中总结信息,而自注意力则对当前序列进行操作。自注意力被表述为基于内容的,其中通过比较当前时间步与上下文中的所有元素来计算注意权重。在这种不受限制的背景大小上计算比较的能力被视为自注意力的一个关键特征。
由于输入长度的二次复杂度,无限上下文大小在计算上非常具有挑战性。此外,在实践中,长序列需要引入层次结构。
本文中介绍了一种轻量级卷积,它们是深度可分离的,经过softmax归一化,并在通道维度上共享权重。与标准的不可分离卷积相比,轻量级卷积的权重数量减少了几个数量级。不同于自注意力机制,轻量级卷积在处理上下文元素时,无论当前时间步长如何,都重复使用相同的权重。
动态卷积在轻量级卷积的基础上进行改进,通过在每个时间步长预测不同的卷积核来实现。与自注意力机制需要考虑整个上下文不同,动态卷积的卷积核仅是当前时间步长的函数。动态卷积类似于局部连接层,后者在每个位置的权重会发生变化,但不同之处在于动态卷积的权重是由模型动态生成的,而不是训练后固定的。与基于位置的注意力相似,后者不需要访问上下文来确定注意力权重,但我们并不直接考虑前一个时间步的注意力权重。
实验表明,轻量级卷积在性能上能够与强大的自注意力机制结果相媲美,而动态卷积的表现甚至更好。
2. 背景
序列到序列学习:序列到序列学习是一种将源序列映射到目标序列的方法,通常通过两个独立的网络实现,这在机器翻译等任务中尤为常见。在这个过程中,编码器(Encoder)网络负责计算源序列(如英文句子)的表示,而解码器(Decoder)网络则基于编码器的输出,通过自回归的方式生成目标序列。这种框架允许模型在处理诸如语言翻译、文本摘要等任务时,能够捕捉到源序列和目标序列之间的复杂关系。
自注意力机制:自注意力机制由Vaswani等人提出,并在Transformer模型中得到了广泛应用。它通过对输入X(,其中n是时间步的数量,d是输入/输出维度)进行三个投影操作,得到键(K)、查询(Q)和值(V)三种表示。自注意力机制的核心在于它能够同时关注输入序列中的不同位置,通过计算键和查询之间的点积,并对结果进行缩放和softmax归一化,从而得到每个位置的注意力权重。最后,这些权重被用于计算值的加权和,从而得到考虑了序列中所有位置信息的输出表示。自注意力机制通过多个头(Heads)的并行处理,能够捕捉到输入序列中的多种不同特征,并提高了模型处理长序列的能力。
深度卷积:在每个通道上独立地执行卷积。参数的数量可以从减少到
,其中
是核宽度。对元素 i 和输出维度 c 进行权值为
的深度卷积的输出
定义为: