结合李宏毅老师机器学习2021——Self-Attention课程和网上查阅的资料,总结一下对Attention机制的理解
Attention机制就是权重分布
- Attention机制的核心就是,决定整段输入的哪个部分需要更加关注。
Attention机制翻译中文就是注意力机制,这就和我们人类看图片、看自然语言是一样的,我们人读一句话是有自己的关注点,重点词汇的。比如我输入一张图,我让你判断这是一只鸟,那么鸟嘴、鸟爪等等patten是很重要的,而Attention机制就是给这些patten一个权重。再比如我们做NLP任务(阅读理解)时,需要提取句子主干,我们这个apple是很重要的,那就给一个大的权重。
参考:https://www.zhihu.com/question/68482809
怎么理解Attention机制的 K、Q、V 参数 (换言之,怎么确定权重)
-
首先,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 呢?
答:当然是为了提升模型的拟合能