深度学习-详细讲解Transformer


参考:
Jay Alammar:The Illustrated Transformer

1.关于Transformer

Transformer 是在论文Attention is All You Need 中提出的。在这篇文章中,我们将介绍The Transformer——一种使用注意力来提高这些模型训练速度的模型。Transformers 在特定任务中的表现优于 Google 神经机器翻译模型。然而,最大的好处来自 The Transformer 如何将其自身用于并行化。因此,让我们尝试分解模型并看看它是如何运作的。

2.宏观视角分析

让我们首先将模型视为单个黑匣子。在机器翻译应用程序中,它会用一种语言输入一个句子,然后用另一种语言输出它的翻译。
在这里插入图片描述
打开黑匣子我们会看到一个编码组件、一个解码组件以及它们之间的连接。
在这里插入图片描述
编码组件是一堆编码器(下图将其中的六个堆叠在一起——数字 6 没有什么神奇之处,人们绝对可以尝试其他安排)。解码组件是一堆相同数量的解码器。
在这里插入图片描述
编码器在结构上都是相同的(但它们不共享权重)。每一层又分为两个子层——自注意力模块和前馈神经网络:
在这里插入图片描述
编码器的输入首先流经自注意力层——该层帮助编码器在编码特定单词时关注输入句子中的其他单词。我们将在后面的文章中仔细研究 self-attention。
自注意力层的输出被馈送到前馈神经网络。完全相同的前馈网络独立应用于每个位置。
解码器具有这两层,但它们之间是一个注意力层,帮助解码器专注于输入句子的相关部分(类似于seq2seq 模型中的注意力)。
在这里插入图片描述

3.将张量带入图片

现在我们已经看到了模型的主要组件,让我们开始看看各种向量/张量,以及它们如何在这些组件之间流动以将训练模型的输入转换为输出。
与 NLP 应用的一般情况一样,我们首先使用嵌入算法将每个输入词转换为向量。
在这里插入图片描述每个单词都嵌入到一个大小为 512 的向量中。我们将用这些简单的框表示这些向量。
嵌入仅发生在最底层的编码器中。所有编码器都有一个相同的特点:它们接收一个向量列表,每个向量的大小为 512。 在底部编码器中,这将是词嵌入,但在其他编码器中,它将是直接位于下方的编码器的输出. 这个列表的大小是我们可以设置的超参数——基本上它是我们训练数据集中最长句子的长度。
在我们的输入序列中嵌入单词后,它们中的每一个都流经编码器的两层中的每一层。
在这里插入图片描述
在这里,我们开始看到 Transformer 的一个关键属性,即每个位置的单词在编码器中都流经自己的路径。self-attention 层中这些路径之间存在依赖关系。然而,前馈层没有这些依赖关系,因此各种路径可以在流经前馈层时并行执行。
接下来,我们将示例切换为更短的句子,并查看编码器的每个子层中发生的情况。

4.开始“编码”

正如我们已经提到的,编码器接收一个向量列表作为输入。它通过将这些向量传递到一个“自我注意”层,然后传递到一个前馈神经网络,然后将输出向上发送到下一个编码器来处理这个列表。
在这里插入图片描述
每个位置的单词都经过一个自注意力过程。然后,它们每个都通过一个前馈神经网络——完全相同的网络,每个向量都会流过它。

5.宏观角度的Self-Attention

通过《Attention is All You Need》一文,让我们提炼它是如何工作的。
假设以下句子是我们要翻译的输入句子:
” The animal didn’t cross the street because it was too tired”
这句话中的“it ”指的是什么?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值