【简单理解】简单理解Attention注意力机制本质
1.简单介绍Attention注意力机制:
Attention注意力机制其实可以用一句话说穿:它是Seq2Seq中的decoder模块对encoder模块的加权平均。
说的太简洁了不利于理解本质,接下来让我们来细细理解到底什么是Attention注意力机制吧。
2.Encoder-Decoder(Seq2Seq)框架
要了解深度学习中的注意力模型,就不得不先谈Encoder-Decoder框架,因为目前大多数注意力模型附着在Encoder-Decoder框架下。其实注意力模型可以看作一种通用的思想,本身并不依赖于特定框架,这点需要注意。
Encoder-Decoder框架可以看作是一种深度学习领域的研究模式,应用场景异常广泛。上图是文本处理领域里常用的Encoder-Decoder框架最抽象的一种表示。
3. Attention原理
按照Encoder-Decoder的框架,我们的输出值y的表达式:
语义编码C是由句子Source的每个单词经过Encoder编码产生的,这意味着不论是生成哪个单词,y1y1,y2y2还是y3y3,其实句子Source中任意单词对生成某个目标单词yiyi来说影响力都是相同的,这是为何说这个模型没有体现出注意力的缘由。这类似于人类看到眼前的画面,但是眼中却没有注意焦点一样。这样不符合人类认知事物的原理。所以我们引入Attention机制。
将Source中的构成元素想象成是由一系列的(Key,Value)数据对构成,此时给定Target中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到了最终的Attention数值。所以本质上Attention机制是对Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。即可以将其本质思想改写为如下公式:
补充一张细节图:
4. Attention具体计算过程
看到这里是不是会因为复杂的数学公式变得眼花缭乱,其实Attention的计算过程很简单,补充下图为Attention具体计算过程,仅以简单的加权平均过程辅助理解。