游乐游手机版
首页/AI热点日报/热点详情

Transformer原理解析注意力机制与模型结构

类型:热点整理2026-07-19
Transformer架构看起来可能有点复杂,网上虽然有不少教程,但本文将通过一个完整的数学实例,一步一步拆解其核心原理。话不多说,直接进入主题。 输入数据与位置编码计算 从最基础的部分开始:先确定输入数据,然后计算每个单词的位置编码。这一步是整个处理流程的起点。 第一步:定义数据集 首先构建一个小

Transformer架构看起来可能有点复杂,网上虽然有不少教程,但本文将通过一个完整的数学实例,一步一步拆解其核心原理。话不多说,直接进入主题。

输入数据与位置编码计算

从最基础的部分开始:先确定输入数据,然后计算每个单词的位置编码。这一步是整个处理流程的起点。

第一步:定义数据集

首先构建一个小的语料库(数据集)。

这个数据集包含三个句子,全部来自《权力的游戏》——虽然规模很小,但足以帮助我们理解后面涉及的所有数学公式。

第二步:统计词汇量

要确定词汇量,需要先统计数据集里一共有多少个不重复的单词。这是将文本转换为数字编码的前提步骤。

将所有单词整理成一个列表,每个单词作为一个 token。把数据集拆分为 token 列表,记为 N。

得到 token 列表 N 之后,就可以用公式计算词汇量。原理如下:

通过 set 操作去除重复项,再统计唯一单词的数量。最终词汇量为 23——因为列表里共有 23 个不同的单词。

第三步:编码与嵌入向量

接下来为每个不重复的单词分配一个唯一的整数编号。

完成整个数据集的编码后,选取一个句子作为输入实例。这里从语料库中挑选:“When you play game of thrones”。

每个输入单词用一个编码表示,每个整数对应一个嵌入向量。嵌入向量可以通过 Google Word2vec 等工具生成,不过在本例中,我们直接用 0 到 1 之间的随机数填充。

原始论文中嵌入向量的维度是 512,这里为了计算方便,将维度压缩到 5。

每个单词的嵌入向量都是 5 维的,使用 Excel 的 RAND() 函数填充随机数。

第四步:位置嵌入计算

先看第一个单词 "when",计算它的位置嵌入向量。位置嵌入使用两个公式:

"when" 的 pos 值为 0(序列起始位置)。i 的值决定使用哪个公式(偶数或奇数)。维度为 5,即嵌入向量的长度。

接着给下一个单词 "you" 赋值 pos=1,后续单词依次递增。

算出位置嵌入后,将其与原始单词嵌入相加:

得到的结果向量依次为 e1+p1、e2+p2、e3+p3…… 以此类推。

Transformer 架构第一部分的输出,就是接下来编码器的输入。

编码器详解

在编码器内部,需要执行 Query、Key、Value 矩阵的复杂运算——正是这些操作将输入数据转换为有意义的表示形式。

多头注意力机制内部,单个注意力层由几个关键组件构成:

注意,黄色框代表的是单头注意力。多个黄色框叠加起来就形成了多头注意力。这里为了演示,只考虑单头注意力,如上图所示。

第一步:执行单头注意力

注意力层有三个输入:Query、Key、Value。

上图中的三个粉色输入矩阵,实际上是上一步得到的“单词嵌入+位置嵌入”矩阵的转置。而黄色、蓝色、红色的线性权重矩阵,就是注意力机制中用到的权重。这些矩阵的列数可以任意,但行数必须与输入矩阵的列数一致。这里我们假设这些线性矩阵包含随机权重(实际训练时它们会随机初始化,然后通过反向传播、梯度下降等方法调整)。接下来计算 Query、Key、Value 矩阵:

有了 Query、Key、Value 矩阵之后,继续执行矩阵乘法:

现在,将结果矩阵与之前算出的 Value 矩阵相乘:

如果有多头注意力,每个头都会生成一个 6×3 的矩阵,接下来将它们拼接起来。

最后一步,对拼接后的矩阵再做一次线性变换——与之前生成 Query、Key、Value 矩阵的过程类似。

来源:https://m.elecfans.com/article/2237105.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。