cover_image

Transformer动画讲解 - 注意力工作原理(Q、K、V)

AllenTang 架构师带你玩转AI 2024年08月07日 00:17

注意力工作原理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?(生物前面有哪些形容词?)如何通过Self Attention找到creature的形容词fluffy、blue?

图片

二、Q、K、V的生成

  1. 生成Q、K、V向量

    • 对于每个token的嵌入向量,我们分别通过三个不同的权重矩阵(WqWkWv)进行线性变换,以生成对应的Q、K、V向量。这些权重矩阵是在模型训练过程中学习得到的。

    • 假设当前我们正在处理句子中的第四个token“creature”,其嵌入向量为E_creature。则:

      • Q_creature = Wq * E_creature;

      • K_creature = Wk * E_creature;

      • V_creature = Wv * E_creature;

  2. 维度变换

    • 经过线性变换后,Q、K、V向量的维度通常与原始嵌入向量的维度相同,即128维。

图片

三、自注意力计算

接下来,我们使用生成的Q、K、V向量来计算自注意力分数。
  • 计算Q与K的点积

    • 对于句子中的每个token,我们将其Q向量与句子中所有token的K向量进行点积运算,以计算它们之间的相似度。

    • 例如,对于“creature”的Q向量Q_creature,我们将其与句子中所有token的K向量(包括自身)进行点积,得到一个相似度分数列表。

    • creature相似度分数列表中注意力分数最高的是fluffy、blue。

图片

  1. 缩放点积注意力:
    • 为了防止点积结果过大导致的梯度消失问题,我们将点积结果除以K向量的维度开方,即128开方)。

  2. 应用Softmax函数:

    • 将缩放后的相似度分数通过Softmax函数进行归一化处理,使得所有分数的和为1,从而得到每个token对当前token的注意力权重。
  3. 加权求和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)机制,即并行地执行多个自注意力过程,并将结果拼接起来,以进一步增强模型的表达能力。


参考资料

  • https://www.3blue1brown.com/




AI动画讲解 · 目录
上一篇神经网络动画讲解 - 工作原理下一篇无法解释LLM的智能涌现,可以从神经元的基本原理入手

微信扫一扫
关注该公众号

继续滑动看下一个
架构师带你玩转AI
向上滑动看下一个