理解self-attention的Q, K, V的含义

如果不设置 W_Q、W_k、W_v,我们计算的权重很大程度上依赖于我们如何确定原始输入向量

点乘的物理意义:两个向量的点乘表示两个向量的相似度

就是Q如果自己跟自己(Q)相乘的话,那么根据向量点乘知识知道,俩个向量越相似,内积越大,当一个向量与自己做内积,再与其他不同词的向量做内积后(行成一个打分向量),该向量经过softmax后,就会变成有一个位置的值特殊的大(自己与自己相乘),其他位置的值非常非常小的状况出现,比如[0.98,0.01,0.05,0.05]那么,这样的得分再与V矩阵相乘后得出的加权向量就是一个基本上跟自己本身差不多的矩阵,那就失去了self attention的意义了,

个人想法:Wk和Wv 我觉得可以相同,但不是必须相同,self-attention 实际只是 attention 中的一种特殊情况,因此 k=v 也是没有问题的,能减少模型的参数,又不影响多头和泛化的实现。当然,完全独立不同的QKV参数矩阵,可以扩大模型的容量和表达能力。

K和Q的点乘是为了得到一个attention score 矩阵,用来对V进行提纯。K和Q使用了不同的W_k, W_Q来计算,可以理解为是在不同空间上的投影。正因为有了这种不同空间的投影,增加了表达能力,这样计算得到的attention score矩阵的泛化能力更高。

合理的结构下引入了可学习的参数,使得网络具有更强的学习能力。

做个比喻帮助理解:
假如一个男生B,面对许多个潜在交往对象B1,B2,B3…,他想知道自己谁跟自己最匹配,应该把最多的注意力放在哪一个上。那么他需要这么做:
1、他要把自己的实际条件用某种方法表示出来,这就是Value;
2、他要定一个自己期望对象的标准,就是Query;
3、别人也有期望对象标准的,他要给出一个供别人参考的数据,当然不能直接用自己真实的条件,总要包装一下,这就是Key;
4、他用自己的标准去跟每一个人的Key比对一下(Q*K),当然也可以跟自己比对,然后用softmax求出权重,就知道自己的注意力应该放在谁身上了,有可能是自己哦[飙泪笑]。

Q就是词的查询向量,K是“被查”向量,V是内容向量。

简单来说一句话:Q是最适合查找目标的,K是最适合接收查找的,V就是内容,这三者不一定要一致,所以网络这么设置了三个向量,然后学习出最适合的Q, K, V,以此增强网络的能力。

主要要理解Q,K的意义,可以类比搜索的过程:

假设我们想查一篇文章,我们不会直接把文章的内容打上去,而是会在搜索框输入该文章的关键字,如果我们搜不到,我们往往会再换一个关键字,直到搜到为止,那么可以让我们搜到的关键字就是最适合查找目标文章的关键字。这个最适合查找目标文章的关键字就是Q。

那么搜索引擎拿到我们输入的关键字Q之后,就会把Q和库里面的文章对比,当然搜索引擎为了节省资源加快对比速度,**提前把库里面的文章进行了处理提取了关键信息,关键信息有很多,**那么那个关键信息能够使得搜索命中率高,那个就是最适合接收查找的关键信息,这个最适合接收查找的关键信息就是K。

使用Q和K计算了相似度之后得到score,这就是相似度评分,之后有了相似度评分,就可以把内容V加权回去了。

由于计算Q、K、V的矩阵是可以学习的,因此网络可以自己学习出要怎么样安排Q、K、V。

  • 32
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值