解锁 Transformers 架构之谜:全面数字示例解读

143 阅读6分钟

图片创作不易,方便的话点点关注,谢谢

文章结尾有最新热度的文章,感兴趣的可以去看看。

本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身

文章有点长(1700字阅读时长:5分),期望您能坚持看完,并有所收获。

图片我知道Transformers结构可能看起来很吓人,您可能在 YouTube 或博客上看到过各种解释。不过,在我的博客中,我将通过提供一个全面的数字示例来努力澄清它。通过这样做,我希望能简化对Transformers架构的理解。

输入和位置编码

让我们来解决初始部分的问题,在这一部分中,我们将确定我们的输入并计算它们的位置编码。图片

步骤 1(定义数据)

第一步是确定我们的数据集 在我们的数据集中,有 3 个摘自《权力的游戏》电视剧的句子(对话)。虽然这个数据集看起来很小,但它的规模实际上有助于我们利用即将到来的数学公式找出结果。

步骤 2(查找词汇量)

要确定词汇量的大小,我们需要确定数据集中唯一词语的总数。这对编码(即把数据转换成数字)至关重要。图片

其中,N 是一个包含所有单词的列表,每个单词都是一个单独的标记。图片

在获得以 N 表示的词块列表后,我们就可以运用公式计算词汇量的大小了。图片

使用集合操作有助于去除重复词,然后我们就可以计算唯一词的数量来确定词汇量。因此,词汇量为 23,因为给定列表中有 23 个唯一的单词。

步骤 3(编码和嵌入)

我们为数据集中的每个单词分配一个整数。图片

对整个数据集进行编码后,就是选择输入的时候了。我们先从语料库中选择一个句子:“When you play game of thrones”图片

输入的每个单词都将表示为一个编码整数,每个相应的整数值都将附加一个相关的嵌入。图片

这些嵌入可以通过 Google Word2vec(词的向量表示法)找到。在我们的数字示例中,我们假设每个词的嵌入向量都填充了介于(0 和 1)之间的随机值。

此外,原论文使用了 512 维的嵌入向量,而我们将考虑非常小的维度,即 5 维作为数值示例。图片

现在,每个词的嵌入都由一个维数为 5 的嵌入向量表示,其值由 Excel 函数 RAND() 用随机数填充。

步骤 4(位置嵌入)

让我们考虑第一个单词,即 "When",并计算它的位置嵌入向量。 位置嵌入有两个公式:图片

第一个词 "When "的 POS 值将为零,因为它对应的是序列的起始索引。此外,i 的值是偶数还是奇数,决定了计算 PE 值所使用的公式。维度值代表嵌入向量的维度,在本例中为 5。图片

继续计算位置嵌入,我们将为下一个单词 "you "赋予 1 的 pos 值,并继续递增序列中后续每个单词的 pos 值。图片

找到位置嵌入后,我们就可以将其与原始单词嵌入连接起来。图片

我们得到的结果向量是 e1+p1、e2+p2、e3+p3 的和,以此类推。图片

Transformers结构初始部分的输出是编码器的输入。

编码器

在编码器中,我们执行涉及查询、键和值矩阵的复杂操作。这些操作对于转换输入数据和提取有意义的表述至关重要。图片

在多头注意力机制中,单个注意力层由几个关键组件组成。这些组件包括图片

请注意,黄色方框代表单一注意力机制。之所以是多头注意,是因为存在多个黄色方框。在本数字示例中,我们只考虑上图中的一种(即单头注意力)。

步骤 1(进行单头注视)

注意层有三个输入端: Query 查询 Key 钥匙 Value 价值图片

在上图中,三个输入矩阵(粉色矩阵)代表的是上一步将位置嵌入添加到单词嵌入矩阵后得到的转置输出。

另一方面,线性权重矩阵(黄色、蓝色和红色)代表注意力机制中使用的权重。这些矩阵的列数不限,但行数必须与输入矩阵的列数相同,以便进行乘法运算。

在我们的例子中,我们将假设线性矩阵(黄色、蓝色和红色)包含随机权重。这些权重通常是随机初始化的,然后在训练过程中通过反向传播和梯度下降等技术进行调整。

因此,让我们计算一下(查询、键和值度量):图片

一旦我们在注意力机制中得到了查询、键和值矩阵,我们就可以继续进行额外的矩阵乘法运算。图片图片图片

现在,我们将结果矩阵与之前计算的值矩阵相乘:图片

如果我们有多个头部关注点,每个关注点产生一个维度为 (6x3) 的矩阵,那么下一步就是将这些矩阵连接起来。图片

下一步,我们将再次进行线性变换,与获取查询、键和值矩阵的过程类似。这种线性变换适用于从多头关注中获得的连接矩阵。

图片

点个“在看”不失联

最新热门文章推荐:

国外Rust程序员分享:Rust与C++的完美结合

国外C++程序员分享:2024/2025年C++是否还值得学习?

外国人眼中的贾扬清:从清华到阿里,再创业LeptonAI

白宫关注下,C++的内存安全未来走向何方?

国外Python程序员分享:如何用Python构建一个多代理AI应用

本地部署六款大模型:保护隐私、节省成本,特定环境首选

国外CUDA程序员分享:2024年GPU编程CUDA C++(从环境安装到进阶技巧)

我卸载了VSCode,我的生产力大幅提升

国外Python程序员分享:2024年NumPy高性能计算库(高级技巧)

外国人眼中的程明明:从“电脑小白”到CV领域领军者

外国人眼中的周志华:人工智能奖获得者、人工智能学院院长

国外C++程序员分享:C++多线程实战掌握图像处理高级技巧

外国人眼中的卢湖川:从大连理工到全球舞台,他的科研成果震撼世界!

外国人眼中的张祥雨:交大90后男神博士,3年看1800篇论文,还入选福布斯精英榜

参考文献:《图片来源网络》《Understanding Transformers: A Step-by-Step Math Example — Part 1》

本文使用 文章同步助手 同步