Press "Enter" to skip to content

浅浅懂了一些transformer中的self-attation

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

参考: Transformer模型详解(图解最完整版) – 知乎

 

如何理解attention中的Q,K,V? – 知乎

 

注意力机制到底在做什幺,Q/K/V怎幺来的?一文读懂Attention注意力机制 – 知乎

 

正如很多人说,其中灵魂就是下面这个公式:

 

 

简单说,就是。输入的词汇会变成嵌入。就是高维数据!这称为矩阵X!

 

Self-Attention 接收的是输入(单词的表示向量x组成的矩阵X) 或者上一个 Encoder block 的输出。

 

之后,经过三个可训练的参数矩阵生成Q、K、V这三个都是维度相同的!

 

第一波,Q矩阵乘以K的转置矩阵。这个核心思想,就是两个向量点乘就是计算二者的相似性程度大小。

 

向量点乘的几何意义是:
向量在向量方向上的投影再与向量的乘积,能够反应两个向量的相似度。
向量点乘结果大,两个向量越相似。

 

自注意力机制,也就是包含着本身的一些字符串。

 

【换句话说,如果K、V矩阵不是由上面的X矩阵生成的话,那幺就叫做注意力机制啦。

 

因为这样的点乘也是计算相似性程度的!】

 

Q、K这两个矩阵点乘之后,除以的那个分母,是为了缩小方差,使得梯度更加稳定(就是数值之间的差值比较小的意思呗!)。

 

也是为了更好的进行softmax操作。

 

对啦,softmax就是进行归一化操作。使得最终生成的数值的 和是1 !

 

最终,经过这些操作(也就是与矩阵V点乘之前的操作。)是得到了一个注意力权重矩阵。

 

与V矩阵的点乘,就是将注意力权重值与V矩阵中的特征进行加权求和!

 

最终,得到的输出维数大小,是与输入数据维数大小相同!

 

多头注意力

 

为了增强拟合性能,Transformer对Attention继续扩展,提出了多头注意力(Multiple Head Attention)。刚才我们已经理解了,Q、K、V是输入X与WQ、WK和WV分别相乘得到的,WQ、WK和WV是可训练的参数矩阵。现在,对于同样的输入X,我们定义多组不同的WQ、WK、WV,比如W0Q、W0K、W0V,W1Q、W1K和W1V,每组分别计算生成不同的Q、K、V,最后学习到不同的参数。

 

疑惑

 

其实,我不太懂为什幺这样安排Q、K、V;

 

下面这个看法,仅供启发思维。

 

其实,跟人家唠嗑可以说下面的东西。 但是,如果写论文的话,还是需要借鉴行业内大佬的文章中的说法!

 

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。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注