transformer中QKV的通俗理解(渣男与备胎的故事)
用vit的时候读了一下transformer的思想,前几天面试结束之后发现对QKV又有点忘记了, 写一篇文章来记录一下
参考链接:哔哩哔哩:在线激情讲解transformer&Attention注意力机制(上)
Attention is all you need介绍
更详细的介绍可以阅读论文
在Attention is all you need这篇文章中提出了著名的Transformer模型
Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。
更准确地讲,Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。
一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建,作者的实验是通过搭建编码器和解码器各6层,总共12层的Encoder-Decoder,并在机器翻译中取得了BLEU值得新高。
Attenion机制
在深度学习中,注意力机制的目标是从大量信息中选择更多有用的信息。
而Attention is all you need
这篇文章体现的注意力机制的核心是下面的公式
刚刚看到这个公式的时候我也是很蒙的,查了很多资料才搞懂,这里再次推荐一个B站的up主,讲的很形象, 本文的素材也是部分来自于此
在线激情讲解transformer&Attention注意力机制(上)
Q
、K
、V
是对输入词向量x
进行线性变换得到的,其中每个矩阵w
可以通过学习得到,这种变换可以提高模型的拟合能力,得到的Q
、K
、V
可以理解为Q
:要查询的信息K
:要查询的向量V
:查询得到的值
综上所述:
首先,Q
、K
、V
都来源于输入特征本身,都是根据输入特征生成的向量,但是暂时不用关注这组向量是如何生成的。V
可以看作是表示单个输入特征的向量。当我们直接将一组V
输入网络进行训练时,网络就是没有引入Attention
机制的网络。
但是,如果引入了Attention
,这组V
需要乘以一组权重,这样我们才能专注于输入的特征,就像人类的注意力一样。
下面是一个简单的例子来说明如何学习和使用attention
机制
一个易于理解的示例 Aquaman 和备用轮胎
有一个海王,有N个备胎,他想要从自己的备胎中寻找出最符合自己期望的那个,便于他分配注意力并且来管理时间。
在这种情况下Q
表示渣男要求备胎K
表示渣男自己的条件,因为备胎也会看渣男的条件是否满足V
表示匹配结果
不管是渣男还是备胎,都有自己的一套Q
K
⒒来记录自己的选择。
现在我们渣男要开始筛选备胎了。对他来说,当然是备胎条件越符合他的理想越好。
在Q
、K
、V
方面,渣男的Q
和备胎的K
相似度越高越好
现在的问题是如何计算它们的相似度
点乘扩展:
在向量中,AB点乘的结果反应了他们之间的相似度, (A在B上的投影与B的模相乘得到的结果)
如果AB
是垂直的,那么它们的点积是0
,即它们的相似度是0
因此,AB
点积的结果越大,说明两个向量的相似度越高。
在渣男选择备胎的过程中,由于他们选择的条件Q
和K
都是矩阵的形式,所以我们用来计算矩阵之间的相似度。
相当于计算Q
每一行和K
每一行的点积结果(下图2
行K
列的例子理解),Q
每一行和K
每一行的相似度结果获得
最后通过softmax
归一化,得到0~1
之间的直观相似度结果
渣男和备胎之间的这些结果共同构成了权重,也就是核心公式的左半部分,其中只是一个常数,目的是为了让训练过程中的梯度更加稳定。
使用上面计算的权重矩阵对每个备胎进行加权,即
这样,渣男就知道自己更应该关注谁了。也有可能是渣男比较自恋,备胎不符合他的要求。他理想的类型可能是他自己的类型,那么他就是最好的他需要关注的就是他自己
文章出处登录后可见!