Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)

目录

一.什么是Q、K、V

二.Mutil-Head Self-Attention


Transformer大行其道,在众多领域取得了不可忽视的成就。如今大火的语言大模型LLM也都是基于Transformer,但是Transformer中的Q、K、V和多头注意力到底是什么呢?这里简单做个学习记录,进行再一次认识和掌握。

一.什么是Q、K、V

Transformer中的Q、K和V是指在自注意力机制(self-attention mechanism)中使用的三个输入表示向量。

Q表示查询向量,K表示关键向量,V表示数值向量。这三个向量是通过线性变换从原始输入向量(通常是词嵌入表示)得到的。

在自注意力机制中,以查询向量Q为基础,通过计算查询向量与所有关键向量K之间的相似度,得到一个权重分布,用于加权求和关联的数值向量V。

Q、K、V概念来源于检索系统,其中Q为Query、K为Key、V为Value。可以简单理解为Q与K进行相似度匹配,匹配后取得的结果就是V。举个例子我们在某宝上搜索东西,输入的搜索关键词就是Q,商品对应的描述就是K,Q与K匹配成功后搜索出来的商品就是V。

Transformer中,注意力的核心公式是

图片

,那Q、K、V是怎么来的呢?这里其实是通过对输入矩阵X进行线性变换得到的,用公式可以简单写成以下:

图片

用图片直观表示为:

Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)_第1张图片

其中是三个可训练的参数矩阵,输入矩阵X分别与三个矩阵参数进行相乘,相当于进行一次线性变换,得到了Q、K、V。

然后使用Q、K、V计算注意力矩阵,公式如下:

图片

论文中给出的图如下:

Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)_第2张图片

Q和经过MatMul,生成了相似度矩阵。对相似度矩阵每个元素除以的维度大小。这个除法被称为Scale。当很大时,的乘法结果方差变大,进行Scale可以使方差变小,训练时梯度更新更稳定。然后经过SoftMax,最后与V做一个MatMul操作得到结果。

二.Mutil-Head Self-Attention

上文理解了Q、K、V及其它们的由来,那多头注意力是什么呢?

Transformer论文中给出的多头注意力公式如下:

图片

从公式可以看出,多头注意力就是将多个head进行Concat然后与

相乘。其中每个head是由

图片

与Q、K、V做Attention操作得到。论文给出的图如下:

Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)_第3张图片

Q、K、V经过Linear然后经过h个Self-Attention,得到h个输出,其中h指的是注意力的头数。h个输出进行Concat然后过Linear得到最终结果。

Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)_第4张图片

那么就得到了多组Q、K、V,每一组就是一个head。


下面引用B站作者霹雳吧啦Wz的内容进行讲解。

先做个铺垫如下图

Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)_第5张图片

Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)_第6张图片

Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)_第7张图片

Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)_第8张图片

Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)_第9张图片

同理也会得到不同输入的2个head中的head2。如下图

Transformer的Q、K、V和Mutil-Head Self-Attention(超详细解读)_第10张图片

左侧是x1、x2输入的head1,右侧是x1、x2输入的head2,b是偏置。

致此,就得到了每个

图片

对应的

图片

参数。接下来针对每个head使用和Self-Attention中相同的方法即可得到对应的结果。

图片

 接着将每个head得到的结果进行concat拼接,接着将拼接后的结果通过

图片

(可学习的参数)进行融合。

从上可以看出,每个head关注的子空间不一定是一样的,那么这个多头的机制能够联合来自不同head部分学习到的信息,这就使得模型具有更强的认识能力。

更多的头数意味着更强大的模型能力,比如LLM大模型Baichuan-13B中的head数目是40,而Baichuan-7B中的head数目是32。

你可能感兴趣的:(前沿论文解读,transformer,深度学习,人工智能)