您的位置:首页 > 游戏 > 手游 > QKV 归一化步及多层感知机 MLP

QKV 归一化步及多层感知机 MLP

2024/10/6 18:27:06 来源:https://blog.csdn.net/hanghangaidoudou/article/details/141001296  浏览:    关键词:QKV 归一化步及多层感知机 MLP

在 Transformer 模型中,QKV 输出的值通常会经过一个归一化步骤,随后通过一个多层感知机(MLP)来进一步处理。以下是这些步骤的详细说明:

计算输出

首先,我们根据注意力概率和值向量 V 计算每个词的输出。这里,我们使用之前计算的 Softmax 概率:

  • 输出(你好) = Softmax(你好) · [V(你好), V(我), …, V(世界)]
  • 输出(我) = Softmax(我) · [V(你好), V(我), …, V(世界)]
  • 输出(美丽) = Softmax(美丽) · [V(你好), V(我), …, V(世界)]
  • 输出(的) = Softmax(的) · [V(你好), V(我), …, V(世界)]
  • 输出(编程) = Softmax(编程) · [V(你好), V(我), …, V(世界)]
  • 输出(世界) = Softmax(世界) · [V(你好), V(我), …, V(世界)]
    由于这些输出向量可能会因为加权求和而变得很大,我们通常会在通过 MLP 之前对它们进行归一化。

归一化

归一化通常采用以下两种方式之一:

  1. Layer Normalization:对每个输出向量独立进行归一化,计算其均值和标准差,然后进行缩放和平移。
    • 均值(μ) = (输出(你好) + 输出(我) + … + 输出(世界)) / 6
    • 标准差(σ) = sqrt(Σ[(输出(你好) - 均值)² + … + (输出(世界) - 均值)²] / 6)
    • 归一化输出 = (输出 - 均值) / (σ + ε) * γ + β
      其中,ε 是一个小的常数以避免除以零,γ 和 β 是可学习的参数。
  2. Batch Normalization:如果我们的数据是以批次形式处理的,我们可以使用批归一化。不过,这在 Transformer 模型中不常见。

多层感知机(MLP)

归一化之后,输出向量会通过一个 MLP,通常包括两个全连接层,第一个后面跟着一个激活函数(如 ReLU)。

  • 第一层全连接:[输出向量] → Z = W₁ × [输出向量] + b₁
  • 激活函数:A = ReLU(Z)
  • 第二层全连接:[MLP输出] = W₂ × A + b₂
    这里的 W₁、W₂、b₁ 和 b₂ 是可学习的参数。

完整的例子

让我们以“你好”的输出为例,展示这个过程:

  1. 假设“你好”的输出向量是 [o_你好]。
  2. 归一化 [o_你好] 得到 [n_你好]。
  3. 通过 MLP 处理 [n_你好] 得到最终的输出。
    以下是伪代码:
# 假设输出向量
o_你好 = Softmax(你好) · [V(你好), V(), ..., V(世界)]
# Layer Normalization
mean = np.mean(o_你好)
std = np.std(o_你好)
n_你好 = (o_你好 - mean) / (std + ε) * γ + β
# MLP
Z = W₁ @ n_你好 + b₁
A = ReLU(Z)
final_output_你好 = W₂ @ A + b₂

这里的 @ 表示矩阵乘法,ReLU 是激活函数,εγβ 是 Layer Normalization 的参数,W₁W₂b₁b₂ 是 MLP 的权重和偏置。通过这个过程,我们得到了“你好”的最终输出,其他词的输出也以相同的方式计算。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com