Transformer介绍(Youtube介绍视频的翻译)

此文是Youtube中Illustrated Guide to Transformers Neural Network: A step by step explanationhttps://www.youtube.com/watch?v=4Bdc55j80l8视频文案的翻译。

(总体使用ChatGPT翻译,自己改了一些有问题的地方。视频中给出的例子没有翻译)是我自己学习中使用的,希望可以帮助其他需要的人。

Transformers是一种基于注意力机制的编码器-解码器 (attention based encoder-decoder type) 架构

编码器将输入序列映射为一个抽象的连续表示,该表示包含了输入中所有的所学习到的信息。解码器然后逐步地使用这个连续表示生成单个输出,并且同时将其馈送给之前的输出。

编码器层Encodered Layer

以下1-4的操作用于将输入编码转化为带有注意力信息的连续表示,这有助于解码器在解码过程中集中注意力于输入中的某些适当的单词。可以堆叠编码器N次以进一步编码信息,其中每个层都有机会学习不同的注意力表示,从而潜在地提高Transformer网络的预测能力。

1. 输入嵌入Input Embedding

第一步是将输入送到一个词嵌入层(word embedding layer)。可以将词嵌入层视为查找表,用于获取每个单词的学习表示向量。神经网络通过数字进行学习,因此将每个单词映射到一个具有连续值的向量来表示该单词。

2. 位置编码Positional Encoding

向嵌入(embeddings)中注入位置信息。由于Transformer编码器没有循环,因此我们必须将有关位置的信息添加到输入嵌入中。这是通过使用位置编码实现的。使用了正弦余弦函数来实现。

3. 编码器层Encoder Layer

编码器层的作用是将所有的输入序列映射到一个抽象的连续表示中,该表示包含了整个序列的学习信息。它包含两个子模块:多头注意力(multi-headed attention)和全连接网络(fully connected network)。每个子模块周围还有残差连接,后面跟着一层归一化处理(normalization)。

3.1 多头注意力Multi-headed Attention

3.1.1 自注意力Self-Attention

多头注意力是Transformer网络中的一个模块,用于计算输入的注意力权重,并产生一个包含关于每个单词如何关注序列中所有其他单词的编码信息的输出向量。

自注意力使模型能够将输入中的每个单词与其他单词关联起来。为了实现自注意力,我们将输入馈送到三个不同的全连接层,以创建查询(query)、键(key)和值(value)向量。查询query和键key经过矩阵乘法得到一个得分矩阵(score matrix)。得分矩阵决定了每个单词对其他单词的关注程度,因此每个单词都会有一个与时间步(time step)中其他单词对应的得分。得分越高,关注度越高,这这是查询映射到键的方式。然后通过将得分除以查询和键的维度的平方根来缩小得分。这样做是为了使梯度更加稳定,因为乘法可能会导致梯度爆炸。接下来,将缩放后的得分进行Softmax操作,得到注意力权重,它将给出介于0和1之间的概率值。通过进行Softmax操作,较高的得分将被放大,较低的得分将被抑制,这使得模型能够更确定要关注哪个单词。然后,将注意力权重与值向量相乘,得到一个输出向量。较高的Softmax得分将保留模型认为更重要的单词的值,较低的得分将成为无关的单词。将输出向量馈送到线性层进行处理。为了将其变成多头注意力计算,需要将查询、键和值分割成添加向量,然后分别进行自注意力处理。每个自注意力过程被称为一个头(head)。每个头产生一个输出向量,这些向量在最终的线性层之前被连接成一个单一的向量。理论上,每个头都会学到不同的东西,从而赋予编码器模型更多的表示能力。

4. 残差连接Residual Connection, 归一化层Layer Normalization & 逐点前馈Pointwise Feed Forward

多头注意力的输出与原始输入相加,这被称为残差连接。残差连接的输出经过归一化层。归一化后的残差输出被馈送到逐点前馈网络中进行进一步处理。 逐点前馈网络由一些线性层和激活函数(reluctivation)组成。其输出再次与逐点前馈网络的输入相加,并进行进一步的归一化。残差连接有助于通过网络直接传播梯度,从而帮助网络训练。归一化层用于稳定网络,可以显著减少训练时间的需要。逐点前馈层用于进一步处理注意力输出,可能使其表示更丰富。

解码器Decoder:

解码器的作用是生成文本序列。解码器具有和编码器类似的子层。它有两个多头注意力层,一个逐点前馈层,在每个子层之后有残差连接和归一化层。这些子层的行为与编码器中的层类似,但每个多头注意力层有不同的任务。最后使用一个线性层作为分类器,并使用Softmax函数获取单词概率。解码器是自回归的。它将之前的输出列表作为输入,同时还利用包含输入的注意力信息的编码器输出。当生成结束标记作为输出时,解码器停止解码。

解码器可以叠加N层,每一层都从编码器和前面的层接收输入。通过叠加层,模型可以学习提取并专注于注意力头中不同组合的注意力,从而提升其预测能力。

5. 输出嵌入Output Embedding和位置编码Positional Encoding

输入经过一个嵌入层和位置编码层,以获取位置嵌入。位置嵌入被馈送到第一个多头注意力层中,该层计算解码器输入的注意力得分。这个多头注意力层的操作略有不同。由于解码器是自回归的,并逐个单词生成序列,需要防止其依赖于未来的标记。

6. 解码器多头注意力Decoder Multi-headed Attention

6.1 前瞻掩码Look-Ahead Mask

掩码(masking)防止解码器查看未来的标记(tokens)。掩码是在计算 Softmax 之前和缩放得分之后。掩码是一个与注意力得分大小相同的矩阵,值为零和负无穷大。将掩码添加到缩放后的注意力得分中,会得到一个得分矩阵,其中右上角三角区域填充有负无穷大。因为一旦对掩码处理过的得分进行 Softmax 操作,负无穷大将被置零,也就是将未来tokens的注意力得分标为0。

这种掩码是第一个多头注意力层计算注意力得分时的唯一区别。这些层仍然具有多个头,在这些头被连接之前应用掩码,并通过线性层进行进一步处理。第一个多头注意力的输出是一个带有关于模型如何关注解码器输入的信息的掩码输出向量。第二个多头注意力层编码器的输出是查询(queries)和键(keys),而第一个多头注意力层的输出是值(values)。这个过程将编码器的输入与解码器的输入匹配,允许解码器决定哪些编码器输入与之相关,并将注意力集中在这些输入上。第二个多头注意力的输出经过一个逐点前馈层进行进一步处理。最终逐点前馈层(pointwise feed forward)的输出通过最后一个线性层传递给分类器。

分类器的大小与类的数量相同。分类器的输出进入一个 Softmax 层,为每个类别生成介于0和1之间的概率分数。取最高概率分数的索引,即可得到一个预测的单词。然后,解码器将输出添加到解码器输入列表中,并继续解码,直到预测出结束标记为止。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值