赞
踩
结合李宏毅老师机器学习2021——Self-Attention课程和网上查阅的资料,总结一下对Attention机制的理解
首先,Attention机制是通过 K Q V 矩阵做运算,进而确定权重的。
以self-attention为例,其中q 和 k相乘算出关联性,再经过 softmax 归一化后,与 v 矩阵相乘得到加权分布。要搞懂 q、k、v 都是哪来的,我们需要先弄懂几个概念。
问题一:向量相乘的意义是什么?
答:表征两个向量的夹角,表征一个向量在另一个向量上的投影
所以!q1与k1相乘,q1与k2相乘,q1与k3相乘,就代表了a1与a2、a3、a4的关联性啊(这是向量相乘的意义)!
问题2:为什么最后还要乘上一个v啊?
答:乘上V是注意力机制加权求和之后的表示。比如说a1与a2的关联性是100,与a3的关联是90,难道我能直接100+90=190吗,肯定不行啊,所以得乘上各自的一个v。
问题3:既然是要求a1与a2和a3和a4的关联性,那我直接用 a1乘a2 不就行了,为什么要 q*k 呢?
答:当然是为了提升模型的拟合能力,q、v、k 矩阵都是可以训练的,起到一个缓冲的效果。
最后,有了上述认识后,就很好的回答了 K Q V 矩阵的来源:许多文章中所谓的Q K V矩阵、查询向量之类的字眼,其本质都是从输入X中训练出来的!
参考1:https://zhuanlan.zhihu.com/p/410776234
参考2:https://www.zhihu.com/question/325839123/answer/2127918771
注意力机制的本质就是给予权重。只不过Attention的权重是输入向量与输出向量之间的权重对应关系,而Self-Attention的权重是输入向量内部之间的权重关系。因此这就造成了后续使用方法的差异:
Q 矩阵的选取不同
Attention因为是输入输出的差异,因此Q矩阵(查询矩阵)是解码器(也就是解码器的输出向量,见上图)提供的,例如第一个Q查询矩阵就是begin,第二个Q矩阵是根据begin计算出来的输出的Q矩阵。
然而Self-Attention是输入向量内部的关系,和输出无关,也就意味着Q矩阵的选取与输出向量是无关的,因此Q矩阵是通过输入向量提供的,而不是输出向量提供的。
使用方法不同:
因为Q矩阵的选取不同,导致了使用方法的不同。我们知道Attention是输入输出的权重关系(比如说“我爱中国。”与“I Love China.” 明显这个中文的句号不与单词Love对应,这样当需要翻译Love时,句号的权重就很低),因为输入的一句话中并没有序列信息,因此Attention机制是不可以单独使用的,Attention机制需要与RNN、LSTM结合,RNN、LSTM网络提供了序列信息。
Self-Attention提供了一句话中的权重关系,相当于有了序列信息(Self-Attention使我们知道了一句话的内在联系),因此Self-Attention后面不需要接RNN、LSTM网络了,回想一下bert的self-attention后面接的不是RNN,而是Linear层!!这就是Self-Attention和Attention使用方法的区别,前者不需要序列的RNN模型,后者需要。
再补充一点,其实不管是RNN还是MLP,都是神经网络的一种啊(回想一下最开始学最简单的MLP、CNN,再学RNN等等等,都是在学神经网络),只不过网络模型不同,目的都是一样,做一些神经元你的运算而已,只不过RNN是首尾相接的,这样就有了前一段话的信息。
其实Self-Attention为什么好呢,最主要是速度快啊,可以并行运算呀。因为你用Attention机制后面需要接RNN,但是RNN是不可以并行运算的,但是你用Self-Attention,其机制已经包含了一句话的内在联系,所以后面接的网络是MLP,就可以并行运算了!!
问题1:为什么 RNN、LSTM 不行了?
答:RNN应用中存在的问题是,每一个RNN Cell的state都取决于前一个RNN Cell的state,因此RNN很难采用并行计算,计算的速度往往较慢。基于self-attention的Transformer采用了非Recurrent的Encoder-decoder结构,这样就可以在GPU中充分利用并行计算的优势提高运算速度
问题2:有没有必要将 RNN/LSTM 与 Attention 结合?
答:肯定有必要的。根据人类的阅读习惯进行思考,我们在阅读的时候,注意力通常不会平均分配在文本中的每个词。再回到NLP中,如果直接将每个时刻的输出向量相加再平均,就等于认为每个输入词对于文本表示的贡献是相等的,但实际情况往往不是这样,比如在情感分析中,文本中地名、人名这些词应该占有更小的权重,而情感类词汇应该享有更大的权重。
为BIRNN的每个输出向量分配不同权值,使得模型可以将注意力集中在重点几个词,降低其他无关词的作用的机制就是Attention机制。使用了Attention机制可以使得文本表示的结果在当前的任务中更合理。
问题3:为什么 Attention 可以和 RNN/LSTM 结合用,但几乎没有 Self-Attention 与 RNN 结合用?
答*:最开始Attention是与RNN结合使用的,但后来出现了基于Self-Attention的Transformer。意思是啥呢,Self-Attention有更好的用法,它不必与RNN结合,它是与Transformer结合的。(当然,Self-Attention也可以与RNN/LSTM结合,知网上也有许多文章是这么灌水的)
不过啦,Transformer也有自己局限性,位置信息表示欠佳,所以强的时序信息预测Transformer是无法媲美RNN系列的。
参考1:https://blog.csdn.net/earofreceiver/article/details/104769156/
参考2:https://blog.csdn.net/thriving_fcl/article/details/73381217
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。