5.1 注意力机制概述
注意力机制源于对人类视觉的研究,注意力是一种人类不可或缺的复杂认知功能,指人可以在关注一些信息的同时忽略其他信息的选择能力。
注意力机制符合人类看图片的逻辑,当我们看一张图片时,往往并没有看清图片的全部内容,而是将注意力集中在图片的某个重要部分。重点关注部分,就是一般所说的注意力集中部分,而后对这一部分投入更多注意力资源,以获取更多所需要关注的目标的细节信息,忽略其他无用信息。
这是人类利用有限的注意力资源从大量信息中快速筛选出高价值信息的手段,是人类在长期进化中形成的一种生存机制。人类视觉注意力机制极大地提高了视觉信息处理的效率与准确性。
深度学习中也应用了类似注意力机制的机制,从而极大提升了自然语言处理、语音识别、图像处理的效率和性能。
5.1.1 两种常见的注意力机制
根据注意力范围的不同,人们又把注意力分为软注意力和硬注意力。
1)软注意力(Soft Attention)。这是比较常见的注意力机制,对所有key求权重概率,每个key都有一个对应的权重,是一种全局的计算方式(也叫作Global Attention)。这种方式比较理性,参考了所有key的内容,再进行加权,但是计算量可能会大一些。
2)硬注意力(Hard Attention)。这种方式是直接精准定位到某个key,而忽略其余所有key,相当于这个key的概率是1,其余key的概率全部是0。因此这种对齐方式要求很高。
5.1.2 注意力机制的本质
如果把注意力机制从Encoder-Decoder模型中剥离出来,做进一步的抽象,可以更容易地理解注意力机制的本质。在自然语言处理应用中会把注意力机制看作输出(Target)句子中某个单词和输入(Source)句子每个单词的相关性,这是非常有道理的。
目标句子生成的每个单词对应输入句子单词的概率分布可以理解为输入句子的单词和这个目标生成的单词的对齐概率,这在机器翻译语境下是非常直观的:传统的统计机器翻译过程一般会专门有一个短语对齐的步骤,而注意力模型其实起的是相同的作用,可用图5-1直观表述。
图5-1 注意力机制的实质
在图5-1中,Source由一系列的<Key,Value>数据对构成,对给定Target中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,得到最终的Attention数值。所以本质上注意力机制是对Source中元素的Value值进行加权求和,而Query和Key是用来计算对应Value的权重系数的。可以将其本质思想改写为如下公式:
其中,T为Source的长度。
图5-1为计算注意力的架构图,那么,具体要如何计算注意力呢?整个注意力机制的计算过程可分为3个阶段。
第1阶段:根据Query和Key计算两者的相似性或者相关性,最常见的计算方法包括求两者的向量点积、求两者的向量Cosine相似性或者通过再引入额外的神经网络来求,假设求得的相似值为si。
第2阶段:对第1阶段的值进行归一化处理,得到权重系数。这里使用Softmax函数计算各权重的值(ai),计算公式为:
第3阶段:使用第2阶段的权重系数对Value进行加权求和。
注意力机制的值的计算过程如图5-2所示。
图5-2 注意力机制的值的计算过程
那么,在深度学习中如何通过模型或算法来实现这种机制呢?接下来我们介绍如何使用模型的方式来实现,为更好理解,先通过一个例子来了解不带注意力机制的模型与带注意力机制的模型的区别。