手把手详解Transformer模型:深入浅出Transformer

2024/12/13 21:03:26

本文主要是介绍手把手详解Transformer模型:深入浅出Transformer,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

探索 transformer 强大之处的细节

我们小区最近有了新的情况。

我儿子喜欢叫它“Robo-Truck”,这个东西搬到了我们街上。一个像卡车一样的机器人。

这是一辆特斯拉的Cyber Truck,我多次向儿子解释过这个名称,但他就是不肯改口,非要说成Robo-Truck。每当我看到Robo-Truck或者听到这个名字时,我就会想起电影《变形金刚》里的那些能变成汽车的机器人。

这不是很奇怪吗,我们今天所熟知的Transformer有可能正在为这些Robo-Trucks提供动力?这不就像是一个圆满的循环吗?我到底想说什么呢,这些话题?

嗯,我正要前往目的地——Transformers(转换器)。不是那种机器人汽车,而是神经网络的版本。你也被邀请哦!

![](https://imgapizh:imooczh: com/675a7fca0909393f12800720.jpg)

这张图片是我拍的(我们的Transformer——‘罗提姆斯·普莱姆’。颜色由我的艺术家儿子选定。)

什么是Transformer模型?

变换器其实是一种神经网络模型。这类神经网络模型专门从数据中学习语境。

但真正使它们特别的是,存在这样的机制可以消除对带有标签的数据集和卷积或递归操作的需求。

这些特别的机制是干嘛的?

有很多因素或机制。但真正使变压器成为可能的两个机制是注意力权重和前向网络(FFN)。

什么是注意力权重?

注意力权重是一种技术,通过这种技术,模型学会聚焦于输入序列的哪一部分。可以把它想象成《指环王》中的“索伦之眼”,时刻扫描一切,并将光线投射到相关的部分。

你知道吗:研究人员差点把Transformer模型命名为“Attention-Net”,因为注意力机制太重要了。

FFN是什么呢?

在使用变压器的场景下,FFN(即全连接网络)本质上是一个多层前馈神经网络,处理一批独立的数据向量。与注意力机制结合使用,它生成正确的“位置-维度”组合。

注意力和全连接(前馈网络)到底是如何工作的?

所以,不说废话,让我们来探讨一下注意力权重FFN是如何让变压器如此强大的秘密。

此讨论基于汤姆·耶教授的精彩《动手学AI》系列,特别是关于Transformers的章节。(下面的所有图片,除非另有声明,均来自汤姆·耶教授上述的领英帖子,已获得其许可进行编辑。)

那我们就开始吧:

这里的关键点有:注意力权重和前馈网络(FFN)

记住这一点,假设我们得到了。

这是来自前一个块的 5 个输入特征(即一个 3x5 的矩阵,其中 X1、X2、X3、X4 和 X5 是特征,每一行表示这些特征的特点)。

[1] 获取注意力权重矩阵A

第一步是获取注意力权重矩阵A,这一步骤中,自注意力机制开始起效,它试图找到输入序列中最为相关的元素。

我们通过将输入特征送入QK查询键模块来完成。在这里我们不详细说明QK模块的细节。

[2] 注意力权重

当我们得到注意力权重矩阵A(5x5),我们就与输入特征(3x5)相乘,从而得到带有注意力权重的特征Z

重要的是,这些特性是按位置 P1、P2 和 P3 的顺序按横向组合的。

更详细地分解如下,例如考虑逐行进行的这个计算:

P1 × A1 = Z1 等于 位置 [1, 1] = 11 的结果

P1 X A2 = Z2, → 值 [1,2] = 6

P1 X A3 等于 位置值 [1,3] 等于 7

P1 X A4 = Z4 → 格子 [1,4] = 7

P1 X A5 = Z5 → 位置 [1,5] 坐标应为 5

.

.

.

P2 X A4 = Z4 → 结果为位置 P2 X A4 = 3

P3 X A5 = Z5 → 位置[3,5] = 1

比如说:

虽然一开始可能会觉得有点枯燥,但是只要一行一行地做乘法运算,结果就相当简单直接。

酷的是,我们的注意力权重矩阵A的排列方式,使得新特征Z实际上是X的这种组合方式。

公式如下:
Z1 = X1 + X2

其中,Z1、X1、X2分别表示具体的数值或变量。

在下面的公式中:Z2 = X2 + X3

Z3 = X3 + X4 注:Z3等于X3加上X4

Z4 = X4 + X5 (这是一个公式)

或译为:Z4 等于 X4 加 X5。(这是一个公式)

Z5 = X5 + X1

Z5 等于 X5 加上 X1

(提示信息:观察矩阵A中0和1的分布情况。)

[3] FFN简称:第一层

下一步是将带有注意力权重的特征送入前馈神经网络。

然而,这里的不同在于把不同维度上的值结合起来,而不是像上一步那样根据位置来组合。具体方法如下:

它换个角度来看数据。

在注意步骤中,我们根据原始特征将输入的合并来得到新的特征。

- 在这个FFN步骤中,我们考虑它们的特征,即垂直整合特征以得到新的矩阵。

例如:P1 (1,1) * Z1 (1,1)

  • P2 (1,2) * Z1 (2,1)

  • P3 (1,3) * Z1 (3,1) + b1 = 11,其中 b 为偏置项。

再次,逐元素行操作发挥了作用。注意,新矩阵的维度增加到了4维。

[4] ReLU(一种常用的激活函数,其输出值大于零的输入保持不变,小于或等于零的输入则输出为零)

我们最喜欢的一步是ReLU(ReLU是一个将上一步得到的矩阵中的负值变为零,并且正值则保持不变的过程),以此完成ReLU的转换。

[5] FFN:下一层

最后,它会通过第二层,让结果矩阵的维度从4降到3。

这里的输出已经准备好输入到下一个区块(它与原矩阵相似),整个过程从头开始重新开始。

这里要记住的两个要点是:

  1. 注意力层在不同位置之间(水平方向)进行组合。
  2. 前馈层在维度间(垂直方向)进行组合。

而这正是 transformer 强大的秘密所在——能够从多个角度分析数据。

以下总结了上述想法的关键点:

  1. Transformer架构可以看作是由注意力层和前馈层组成。
  2. 注意力层将特征结合起来以生成新的特征。例如,把两个机器人Robo-Truck和Optimus Prime结合成一个新的机器人RoboPrime。
  3. 前馈(FFN)层将特征的各个部分或特性结合起来,生成新的部分或特性。例如,Robo-Truck的车轮和Optimus Prime的离子激光可以结合成一种带有车轮的激光武器。
强大的Transformers(即指那种强大的人工智能模型)

神经网络已经存在了一段时间。卷积神经网络(CNN)和循环神经网络(RNN)一度独领风骚,但自2017年引入Transformer以来,情况发生了戏剧性的变化。从那时起,人工智能领域以指数级的速度发展着——每天都有新的模型、基准和发现。只有时间才能证明这个非凡的想法是否会引领我们走向一个更加伟大的未来——真正的“Transformer”。

但现在说一个想法真的能转变我们的生活方式,也不为过。

作者供图

顺便说一下:如果你想自己做这个练习,这里有一个空白模板,你可以用它来做练习。

手部练习空白模板链接:

现在去玩吧,创造自己的Robtimus Prime



这篇关于手把手详解Transformer模型:深入浅出Transformer的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程