自注意力
自注意力机制(Self-Attention Mechanism),也被称为内部注意力(Intra-attention)或并行注意力(Parallel Attention),是一种在深度学习模型中用于处理序列数据的机制。它允许模型在处理序列中的某个位置时,可以参考序列中所有其他位置的信息,从而捕捉到序列内部不同位置之间的依赖关系。
自注意力机制则是让序列自己对自己做注意力,即在同一个序列内进行信息交互,这样可以在单个序列内部建立更复杂的关联。
自注意力机制特别适合于需要理解长距离依赖的任务,因为它能有效地捕获序列内部的关系,而且随着序列长度的增加,其计算复杂度不会线性增长。
位置编码
与CNN/RNN不同,自注意力没有记录位置信息,而这些信息对于许多任务(尤其是自然语言处理任务)来说是非常重要的。因此,需要在编码中加入位置信息。位置编码可以通过学习得到也可以直接固定得到。接下来描述的是基于正弦函数和余弦函数的固定位置编码。
假设长度为n的序列是,那么使用位置编码矩阵来输出X+P作为自编码输入。P的元素如下计算:
总结
自注意力机制中,query、key、value均来自同一输入。
卷积神经网络和自注意力都拥有并行计算的优势。自注意力的最大路径长度最短,但是因为其计算复杂度是关于序列长度的二次方,所以在很长的序列中计算会非常慢。
为了使用序列的顺序信息,可以通过在输入表示中添加位置编码,来注入绝对或者相对的位置嘻信息。