神经网络学习-再谈注意力机制
再谈Attention注意力机制
在上一篇文章中,我们介绍了Seq2Seq基本原理和使用attention机制的效果,本次文章将继续深入讨论注意力机制的原理,进一步弄懂为什么引入注意力机制后模型的准确性得以提升。注意力机制其实最早是使用在图形识别的领域,当使用者使用了注意力机制后,比传统的CNN的识别效果要更好。而这种注意力机制和人类在阅读的时候的机制很相似,因为人在阅读的时候不是一行行去阅读,有时候会跳跃阅读,并且在阅读当前词语或句子的时候,会关注和当前的词语最相关的上下文内容,比如看到“吃西瓜”的时候,可能会把注意力放在前文里的“西瓜的味道”和后文里的“西瓜的药效”等,而不会把注意力放在前面的“在哪里吃”等内容,这就是attention机制的核心思路,也就是当前的内容是和上下文的内容最相关的部分有关联,需要将更多的注意力放到那些地方。下面我们来介绍attention机制的原理。
常见的注意力机制其实有两种,第一种是自我注意力机制,也就是self-attention机制,这种是计算序列自己和自己的权重。另一种是上下文注意力机制,也就是encoder-decoder-attention机制,就是在解码decoder时候,计算encoder序列对它的权重。而计算权重的步骤,其实就是注意力的体现。因为只有通过计算输入对输出的权重,才可以体现出输入对于输出的影响力,而这个原理在翻译的时候是被经常使用到的。
而从本质上来说,attention机制的实现方式就是由Query向量、Key向量、Value向量所实现的,为了得到这种注意力权重值,需要进行三步骤的计算可以得出。第一步是把Query向量和Key向量进行相似度计算,得到中间值;第