【深度学习】图解!逐步理解Transformers的数学原理

作者 | Fareed Khan  翻译 | 赵鉴开,校对:赵茹萱

e2e918b3ee0bd8e9c6f9553482ab9711.png

transformer架构可能看起来很恐怖,您也可能在YouTube或博客中看到了各种解释。但是,在我的博客中,我将通过提供一个全面的数学示例阐明它的原理。通过这样做,我希望简化对transformer架构的理解。

那就开始吧!

Inputs and Positional Encoding

让我们解决最初的部分,在那里我们将确定我们的输入并计算它们的位置编码。

9825498dfa8d0c9e6b3584e3a4aa55cb.png

8ef6178cccd59340238b2bbb4cc14e31.png

Step 1 (Defining the data)

第一步是定义我们的数据集 (语料库)。

6b6f31707455ecb71d7623b2d59a9bb2.png

在我们的数据集中,有3个句子 (对话) 取自《权力的游戏》电视剧。尽管这个数据集看起来很小,但它已经足以帮助我们理解之后的数学公式。

Step 2 (Finding the Vocab Size)

为了确定词汇量,我们需要确定数据集中的唯一单词总数。这对于编码 (即将数据转换为数字) 至关重要。

ef18d1b7932fdfa92aedf72b0e5d42a9.png

3b89d5e31ce5f9e6950a4e44a2122eb8.png

其中N是所有单词的列表,并且每个单词都是单个token,我们将把我们的数据集分解为一个token列表,表示为N。

08bffe897dbf37f47af8131c5cc975ed.png

78feac7c818a58842a7c885858a574b0.png

获得token列表 (表示为N) 后,我们可以应用公式来计算词汇量。

具体公式原理如下:

4a4c3ae4a696f74203b33fe64f827c19.png6fc0b3b6c47a836f5ba138bfa19b6e46.png

使用set操作有助于删除重复项,然后我们可以计算唯一的单词以确定词汇量。因此,词汇量为23,因为给定列表中有23个独特的单词。

Step 3 (Encoding and Embedding)

接下来为数据集的每个唯一单词分配一个整数作为编号。

263f41940ab4aa5add2fc4e8d1080857.png

5d9eceb991720c9ef8e563968b9381bf.png

在对我们的整个数据集进行编码之后,是时候选择我们的输入了。我们将从语料库中选择一个句子以开始:

“When you play game of thrones”

3feca645afe10494e58a055af0df7190.png5d8ea97cc4c7552154ad20c3381b4641.png

作为输入传递的每个字将被表示为一个编码,并且每个对应的整数值将有一个关联的embedding联系到它。

02a5f2c67b34e30a354aaa58fd955c33.png

cd2ef1d81f770955cb9e9fc820b87725.png

  • 这些embedding可以使用谷歌Word2vec (单词的矢量表示) 找到。在我们的数值示例中,我们将假设每个单词的embedding向量填充有 (0和1) 之间的随机值。

  • 此外,原始论文使用embedding向量的512维度,我们将考虑一个非常小的维度,即5作为数值示例。

2dc845ec158fb6db3be3167851d26a30.png

18f248cb350ff4d2b766b671d904ed52.png

现在,每个单词embedding都由5维的embedding向量表示,并使用Excel函数RAND() 用随机数填充值。

Step 4 (Positional Embedding)

让我们考虑第一个单词,即 “when”,并为其计算位置embedding向量。位置embedding有两个公式:

f43f75359b265baed77f889cd67bffbb.png

第一个单词 “when” 的POS值将为零,因为它对应于序列的起始索引。此外,i的值 (取决于是偶数还是奇数) 决定了用于计算PE值的公式。维度值表示embedding向量的维度,在我们的情形下,它是5。

bda29568a45a4e37466f14025fd1b35d.png

24faa80b8298b9e785bc81cc8612f898.png

继续计算位置embedding,我们将为下一个单词 “you” 分配pos值1,并继续为序列中的每个后续单词递增pos值。

7756be82ce9da44670ca7935242343e7.png

6d3c670ff63fb5a5ea736806e33fb755.png

找到位置embedding后,我们可以将其与原始单词embedding联系起来。

3bf6be028db554f7acb10922ceffce51.png

3fac0a5a5ea1a7a0b64cde7afe67e876.png

我们得到的结果向量是e1+p1,e2+p2,e3+p3等诸如此类的embedding和。

b4aee4864af8df16fae09a372253fd11.png

99bf5f45a3f9c2ec2719afa03bccc6d7.png

Transformer架构的初始部分的输出将在之后用作编码器的输入。

编码器

在编码器中,我们执行复杂的操作,涉及查询(query),键(key)和值(value)的矩阵。这些操作对于转换输入数据和提取有意义的表示形式至关重要。

a2c5323fa4a6f3b804486a3dd57a3bc3.png

d9f9fb488cd00d75569920be6f419f82.png

在多头注意力(multi-head attention)机制内部,单个注意层由几个关键组件组成。这些组件包括:

12fbac20db1595ca1feb457fefe61d63.png

99f212ce64f92fabe1aec9a04f236a40.png

请注意,黄色框代表单头注意力机制。让它成为多头注意力机制的是多个黄色盒子的叠加。出于示例的考虑,我们将仅考虑一个单头注意力机制,如上图所示。

Step 1 (Performing Single Head Attention)

注意力层有三个输入

  • Query

  • Key

  • Value

887a74944864ae342b7fe5b1b6ab5749.png

d3601d2d78c6ad2d2671c3ba14ecc175.png

在上面提供的图中,三个输入矩阵 (粉红色矩阵) 表示从将位置embedding添加到单词embedding矩阵的上一步获得的转置输出。另一方面,线性权重矩阵 (黄色,蓝色和红色) 表示注意力机制中使用的权重。这些矩阵的列可以具有任意数量的维数,但是行数必须与用于乘法的输入矩阵中的列数相同。在我们的例子中,我们将假设线性矩阵 (黄色,蓝色和红色) 包含随机权重。这些权重通常是随机初始化的,然后在训练过程中通过反向传播和梯度下降等技术进行调整。所以让我们计算 (Query, Key and Value metrices):

635d7dc64168a4fd4045fcc1df78a389.png

aa1fda091f67ea5f51c654c8718e8f97.png

一旦我们在注意力机制中有了query, key, 和value矩阵,我们就继续进行额外的矩阵乘法。

24a0bb2c93c6356fa0cc8fc6d0fdbad6.pnga2e68a71057a7facadc1f939a4356c44.png

6704501af0d197eca12fbca7f5945aa5.png

215aee83a01bb0128c7136416f5cdb1b.png

c9b11c69b51f3a8ae5b3912d0ca71d09.png

7d2572ebbd6d76d714419683c4c53c81.png现在,我们将结果矩阵与我们之前计算的值矩阵相乘:

bb11b64f5ef7cce06ba62001cb088611.png

cd96589598d8e275d21568e32a8d509a.png

如果我们有多个头部注意力,每个注意力都会产生一个维度为 (6x3) 的矩阵,那么下一步就是将这些矩阵级联在一起。

99700cd777b92fbb1d5a8b207a500184.png

e14871f875d2498a8e6db2eaa6284f0f.png

在下一步中,我们将再次执行类似于用于获取query, key, 和value矩阵的过程的线性转换。此线性变换应用于从多个头部注意获得的级联矩阵。

8d58969d9e9a62ebf747c904609fc745.png

e670beb7b60f0a2f6c671b9177d51212.png

 
 
 
 

d47047d7b6f992a207ee6226c0247a22.jpeg

 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
  • 交流群

欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961)

9f95043eab1ee9eae8480227cf874a2d.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值