注意力工作原理Q、K、V
在Transformer模型中,Q(Query)、K(Key)、V(Value)的计算过程是理解自注意力机制(Self-Attention Mechanism)的关键。下面我将通过一个具体的例子来详细说明这一计算过程。
注意力工作原理(Q、K、V)
一、假设条件
假设我们有一个简单的句子“a fluffy blue creature roamed the verdant forest”
(一只蓬松的蓝色生物在郁郁葱葱的森林中游荡)
,并且我们已经将这个句子转换为了一系列的token(词元),并进行了词嵌入(Word Embedding)和位置编码(Positional Encoding)的处理,得到了每个token的嵌入向量。为了简化说明,我们假设每个token的嵌入向量维度为 d_model=128
。
思考问题:Any adjiectives in front of creature?(生物前面有哪些形容词?)如何通过Se lf Attention找到creature的形容词fluffy、blue?
二、Q、K、V的生成
- 生成Q、K、V向量:
- 对于每个token的嵌入向量,我们分别通过三个不同的权重矩阵(
Wq
、Wk
、Wv
)进行线性变换,以生成对应的Q、K、V向量。 这些权重矩阵是在模型训练过程中学习得到的。 - 假设当前我们正在处理句子中的第四个token“creature ”,其嵌入向量为
E_creature
。则:
- Q_creature = Wq * E_creature;
- K_creature = Wk * E_creature;
- V_creature = Wv * E_creature;
- 维度变换:
- 经过线性变换后,Q、K、V向量的维度通常与原始嵌入向量的维度相同,即128维。
三、自注意力计算
接下来,我们使用生成的Q、K、V向量来计算自注意力分数。
-
计算Q与K的点积:
-
对于句子中的每个token,我们将其Q向量与句子中所有token的K向量进行点积运算,以计算它们之间的相似度。
-
例如,对于“creature ”的Q向量
Q_creature
,我们将其与句子中所有token的K向量(包括自身)进行点积,得到一个相似度分数列表。 -
creature 相似度分数列表中注意力分数最高的是fluffy、blue。
- 缩放点积注意力:
- 为了防止点积结果过大导致的梯度消失问题,我们将点积结果除以K向量的维度开方,即128开方)。
- 应用Softmax函数:
- 将缩放后的相似度分数通过Softmax函数进行归一化处理,使得所有分数的和为1,从而得到每个token对当前token的注意力权重。
- 加权求和V向量:
- 最后,我们使用得到的注意力权重对V向量进行加权求和,以得到当前token的自注意力输出。
- Any adjiectives in front of creature? 第四个token“ creature ”的自注意力输出为fluffy、blue。
四、总结
Any adjiectives in front of creature?(生物前面有哪些形容词?) 通过上述步骤,我们计算了句子中每个token的自注意力输出,从而 通过Self Attention找到creature的形容词fluffy、blue。
Self Attention对于Transformer模型来说是非常重要的 ,因为它允许模型在处理每个token时考虑到句子中其他所有token的信息,从而捕捉到词与词之间的上下文关系。
需要注意的是,上述过程是在单个头的自注意力(Single-Head Self-Attention)下进行的。 在实际应用中,Transformer模型通常会使用多头自注意力(Multi-Head Self-Attention)机制,即并行地执行多个自注意力过程,并将结果拼接起来,以进一步增强模型的表达能力。
参考资料