网站备案机构,wordpress商城主体,如何建立手机网站,北京高端网站建设费用一、说明 在上一篇文章中#xff0c;我们详细介绍了变压器模型的编码器块的工作原理。如果您还没有读过那篇文章#xff0c;我建议您在开始这篇文章之前先阅读它#xff0c;因为本文中介绍了其中涵盖的概念。您可以前往#xff1a; 【Bert101】变压器模型背后的复杂数学【… 一、说明 在上一篇文章中我们详细介绍了变压器模型的编码器块的工作原理。如果您还没有读过那篇文章我建议您在开始这篇文章之前先阅读它因为本文中介绍了其中涵盖的概念。您可以前往 【Bert101】变压器模型背后的复杂数学【02/4】 如果你已经读过它太棒了让我们开始深入了解解码器块以及与之相关的复杂数学。
二、变压器解码器 与转换器模型的编码器块一样解码器块由 N 个堆叠解码器组成这些解码器按顺序运行并接受来自前一个解码器的输入。但是这不是解码器接受的唯一输入。编码器块生成的句子表示形式将馈送到解码器块中的每个解码器。因此我们可以得出结论每个解码器接受两个不同的输入
来自编码器块的句子表示上一个解码器的输出 图1.编码器和解码器模块一起工作图片来自作者 在我们深入研究构成解码器的不同组件之前必须对解码器通常如何生成输出句子或目标句子有一个直觉。
三、目标句子是如何生成的 在时间步长 t1 时只有 sos 标记或句子的开头作为输入传递到解码器块。基于sos目标句子的第一个单词由解码器块生成。 在下一个时间戳中即t2解码器块的输入包括sos令牌以及解码器块生成的第一个单词。下一个单词基于此输入生成。 同样随着时间戳的增量解码器块的输入长度随着在上一个时间戳中生成的单词添加到当前输入句子中而增加。 当解码器块完成整个目标句子的生成时将生成eos或句子末尾标记。您可以将其视为递归过程 图2 使用解码器递归生成输出令牌图片来自作者 现在当输入被提供给变压器模型并且我们期待输出时这就是应该发生的情况。但是在训练/微调转换器模型时我们已经在训练数据集中有了目标句子。那么它是如何工作的呢 它给我们带来了解码器的一个极其重要的概念蒙面多头注意力。听起来很耳熟当然确实如此。在上一部分我们了解了编码器块中使用的多头注意力的概念。现在让我们了解这两者的不同之处。
四、Mask多头注意力 解码器块逐字生成目标句子因此必须对模型进行类似的训练以便即使使用有限的标记集也可以做出准确的预测。 因此顾名思义我们在计算自我注意矩阵之前屏蔽了句子右侧尚未预测的所有标记。这将确保自我注意机制仅考虑在预测的每个递归步骤中可供模型使用的令牌。 让我们举一个简单的例子来理解它 图3.遮罩多头注意力矩阵表示图片来自作者 计算自我注意力矩阵的步骤和公式将与我们在编码器块中所做的相同。我们将在本文中简要介绍这些步骤。为了更深入地了解请随时前往本系列文章的前一部分。
为目标句子生成嵌入并获取目标矩阵 Y通过将随机权重矩阵 Wq、Wk 和 Wv 与目标矩阵 Y 相乘将目标句子转换为 Q、K 和 V计算 Q 和 K 转置的点积通过将点积除以嵌入维度的平方根 dk 来缩放点积)通过将所有单元格替换为 mask 来对缩放矩阵应用掩码 — inf现在在矩阵上应用 softmax 函数并将其与 Vi 矩阵相乘以生成注意力矩阵 Zi将多个注意力矩阵 Zi 连接成单个注意力矩阵 M
此注意力矩阵将与编码器块生成的输入句子表示形式一起馈送到解码器块的下一个组件。现在让我们了解解码器块如何使用这两个矩阵。
五、多头注意力
解码器块的这个子层也称为“编码器-解码器注意层”因为它接受屏蔽的注意力矩阵M和编码器R的句子表示。 图4.多头注意力机制图片来自作者
自我注意矩阵的计算与上一步中的计算方式非常相似只是略有改动。由于我们有两个输入矩阵因此它们被转换为QK和V如下所示
Q 使用 Wq 和 M 生成KV矩阵使用WkWv和R生成
到现在为止您必须已经了解变压器模型背后的每个步骤和计算都有一个非常具体的原因。同样这些矩阵中的每一个都是使用不同的输入矩阵生成的也是有原因的。你能猜到吗
快速提示答案在于如何计算自我注意力矩阵......
是的你做对了
如果你还记得当我们使用输入句子理解自我注意的概念时我们谈到了它如何在将源句子映射到自身时计算注意力分数。将源句子中的每个单词与同一句子中的每个其他单词进行比较以量化关系并理解上下文。
在这里我们也在做同样的事情唯一的区别是我们将输入句子的每个单词K-转置与目标句子单词Q进行比较。它将帮助我们量化这两个句子之间的相似程度并理解单词之间的关系。 图5.带有输入句子和目标句子的注意力矩阵表示图片来自作者
最后生成的注意力矩阵 Zi 将是维度 N X 1其中 N 目标句子的字数。
由于这也是一个多头注意力层为了生成最终的注意力矩阵将多个注意力矩阵串联起来。
有了这个我们已经涵盖了解码器块的所有独特组件。但是其他一些组件的功能与编码器块中的功能相同。让我们也简要地看一下它们
位置编码 — 就像编码器块一样为了保留目标句子的词序我们在将目标嵌入添加到目标嵌入之前将其馈送到屏蔽多注意力层。前馈网络 — 解码器块中的这个子层是具有两个密集层和 ReLU 激活的经典神经网络。它接受来自多头注意力层的输入对同一层执行一些非线性变换最后生成上下文化向量。添加和规范组件 — 这是一个残差层然后是层规范化。它有助于加快模型训练同时确保不会丢失来自子层的信息。
我们在第 1 部分中详细介绍了这些概念。
有了这个我们也完成了解码器块的内部工作。正如您可能已经猜到的那样编码器和解码器块都用于处理和生成输入句子的上下文化向量。那么谁来执行实际的下一个单词预测任务呢让我们来了解一下。
六、线性和softmax层 它位于解码器网络的顶部接受堆栈中最后一个解码器生成的输出矩阵作为输入。此输出矩阵将转换为与词汇表大小相同大小的 logit 向量。然后我们在此 logit 向量上应用 softmax 函数以生成对应于每个单词的概率。概率最高的单词被预测为下一个单词。该模型使用 Adam 优化器针对交叉熵损失进行了优化。 为了避免过度拟合在编码器/解码器网络的每个子层之后都添加了dropout层。 这就是整个变压器模型的全部内容。至此我们用最简单的语言完成了变压器模型架构的深入演练。
七、结论 既然您已经了解了变压器模型的所有知识那么在此基础上构建知识并深入研究更复杂的LLM模型架构如BERTGPT等应该不难。 您可以参考以下资源
BERT 101 - State Of The Art NLP Model ExplainedThe Illustrated GPT-2 (Visualizing Transformer Language Models) – Jay Alammar – Visualizing machine learning one concept at a time. 我希望这篇由两部分组成的文章能让变压器模型不那么令人生畏。