泛统计理论初探——再谈注意力机制模型

神经网络学习-再谈注意力机制

再谈Attention注意力机制
    在上一篇文章中,我们介绍了Seq2Seq基本原理和使用attention机制的效果,本次文章将继续深入讨论注意力机制的原理,进一步弄懂为什么引入注意力机制后模型的准确性得以提升。注意力机制其实最早是使用在图形识别的领域,当使用者使用了注意力机制后,比传统的CNN的识别效果要更好。而这种注意力机制和人类在阅读的时候的机制很相似,因为人在阅读的时候不是一行行去阅读,有时候会跳跃阅读,并且在阅读当前词语或句子的时候,会关注和当前的词语最相关的上下文内容,比如看到“吃西瓜”的时候,可能会把注意力放在前文里的“西瓜的味道”和后文里的“西瓜的药效”等,而不会把注意力放在前面的“在哪里吃”等内容,这就是attention机制的核心思路,也就是当前的内容是和上下文的内容最相关的部分有关联,需要将更多的注意力放到那些地方。下面我们来介绍attention机制的原理。
    常见的注意力机制其实有两种,第一种是自我注意力机制,也就是self-attention机制,这种是计算序列自己和自己的权重。另一种是上下文注意力机制,也就是encoder-decoder-attention机制,就是在解码decoder时候,计算encoder序列对它的权重。而计算权重的步骤,其实就是注意力的体现。因为只有通过计算输入对输出的权重,才可以体现出输入对于输出的影响力,而这个原理在翻译的时候是被经常使用到的。
    而从本质上来说,attention机制的实现方式就是由Query向量、Key向量、Value向量所实现的,为了得到这种注意力权重值,需要进行三步骤的计算可以得出。第一步是把Query向量和Key向量进行相似度计算,得到中间值;第二部是把中间值进行归一化;第三步是把归一化后的中间值和Value向量进行点积计算,也就是所谓的加权求和。
在这里插入图片描述
    经过上述的分析,我们可以明显地发现,注意力机制是可以比传统的RNN或是LSTM更好地获取上下文的信息,因为通过Query、Key、Value的机制可以直接计算得到这种上下文和当前词语或是句子的关系,而且由于它的关联机制,很显然可以直接得到注意力权重,而对于LSTM等模型来说需要按照步骤进行顺序计算后,才可以得到这种上下文的关联。从另一个角度来说,这种注意力机制因为其每一步计算是独立的,所以可以进行并行化处理,在大数据时代可以并行的模型是非常受欢迎的,而传统的序列化模型比如RNN、LSTM模型是无法并行化处理的,那么训练速度就会很慢。
    总的来说,注意力机制模型是比传统的RNN等模型训练效果要更好,并且速度更快。但是这种模型被提出的时候,没有考虑到字词顺序对于预测结果的影响;所幸在后续优化加入了position-embedding后使得注意力机制的模型准确度再次提升。注意力机制的特点在于其计算思路、拟人化的设计、并行化处理,初学者必须明白这种模型和之前Seq2Seq、LSTM之间的关系和特点,使得在实际场景可以更好地进行使用。

猜你喜欢

转载自blog.csdn.net/qq_26727101/article/details/111085118
今日推荐