图解Transformer:它包含几个层级?

一、overview

在第一部分已经介绍过Transformer的整体架构:

1. 数据在输入编码器和解码器之前,都要经过:

  • 词嵌入层

  • 位置编码层

2. 编码器堆栈包含若干个编码器。每个编码器都包含:

  • 多头注意层

  • 前馈层

3. 解码器堆栈包含若干个解码器。每个解码器都包含:

  • 两个多头注意层

  • 前馈层

4. 输出产生最终输出:

  • 线性层

  • Softmax层

为了深入理解每个组件的作用,在翻译任务中step-by-step地训练Transformer。使用只有一个样本的训练数据,其中包括一个输入序列(英语的“You are welcome”)和一个目标序列(西班牙语的 “De nada”)


二、词嵌入层与位置编码

Transformer的输入需要关注每个词的两个信息:该词的含义和它在序列中的位置。

1. 第一个信息,可通过嵌入层对词的含义进行编码。

2. 第二个信息,可通过位置编码层表示该词的位置。

Transformer通过添加两个层来完成两种不同的信息编码。

1. 嵌入层(Embedding)

Transformer的编码器和解码器各有一个嵌入层(Embedding )

在编码器中,输入序列被送入编码器的嵌入层,被称为输入嵌入(Input Embedding)

在解码器中,目标序列右移一个位置,然后在第一个位置插入一个Start token后被送入解码器的嵌入层。注意,在推理过程中,我们没有目标序列,而是循环地将输出序列送入解码器的嵌入层,正如第一篇文章所言。这个过程被称为 “输出嵌入”(Output Embedding)

每个文本序列在输入嵌入层之前,都已被映射成词汇表中单词ID的数字序列。嵌入层再将每个数字序列射成一个嵌入向量,这是该词含义一个更丰富的表示。

2. 位置编码(Position Encoding)

RNN在循环过程中,每个词按顺序输入,因此隐含地知道每个词的位置。

然而,Transformer一个序列中的所有词都是并行输入的。这是其相对于RNN架构的主要优势;但同时也意味着位置信息会丢失,必须单独添加回来。

解码器堆栈和编码器堆栈各有一个位置编码层。位置编码的计算是独立于输入序列的,是固定值,只取决于序列的最大长度。

1. 第一项是一个常数代码,表示第一个位置。

2. 第二项是一个表示第二位置的常量代码。

pos是该词在序列中的位置,d_model是编码向量的长度(与嵌入向量相同)和i是这个向量的索引值。公式表示的是矩阵第pos行、第2i列和(2i+1)列上的元素。

换句话说,位置编码交织了一系列正弦曲线和一系列余弦曲线,对于每个位置pos,当i为偶数时,使用正弦函数计算;当i为奇数时,使用余弦函数计算。

三、矩阵维度(Matrix Dimensions)

深度学习模型一次处理一批训练样本。嵌入层和位置编码层对一批序列样本的矩阵进行操作。嵌入层接受一个(samples,sequence_length)形状的二维单词ID矩阵,将每个单词ID编码成一个单词向量,其大小为embedding_size,从而得到一个(samples, sequence_length,embedding_size)形状的三维输出矩阵。位置编码使用的编码尺寸等于嵌入尺寸。所以它产生一个类似形状的矩阵,可以添加到嵌入矩阵中。

由嵌入层和位置编码层产生的(samples, sequence_length,embedding_size)形状在模型中被保留下来,随数据在编码器和解码器堆栈中流动,直到它被最终的输出层改变形状。(实际上变成了(samples, sequence_length,vocab_size))

以上对Transformer中的矩阵维度有了一个形象的认识。为了简化可视化,从这里开始,暂时放弃第一个维度(samples维度),并使用单个样本的二维表示。

四、Encoder

编码器和解码器堆栈分别由几个(通常是6个)编码器和解码器组成,按顺序连接。

1. 堆栈中的第一个编码器从嵌入和位置编码中接收其输入。堆栈中的其他编码器从前一个编码器接收它们的输入。

2. 当前编码器接受上一个编码器的输入,并将其传入当前编码器的自注意力层。当前自注意力层的输出被传入前馈层,然后将其输出至下一个编码器。

3. 自注意力层和前馈网络都会接入一个残差连接,之后再送入正则化层。注意,上一个解码器的输入进入当前解码器时,也有一个残差连接。

4. 参考:在李沐老师的书《动手学深度学习》中,P416页有对“基于位置的前馈网络”的详细解释。具体来说,该前馈网络由一个线性层,一个激活函数和另外一个线性层组成。并且这个前馈网络同样不会改变输入的形状。

5. 编码器堆栈中的最后一个编码器的输出,会送入解码器堆栈中的每一个解码器中。

五、Decoder

解码器的结构与编码器的结构非常类似,但有一些区别。

1. 与编码器一样,解码器堆栈中的第一个解码器从嵌入层(词嵌入+位置编码)中接受输入;堆栈中的其他解码器从上一个解码器接受输入。

2. 在一个解码器内部,输入首先进入自注意力层,这一层的运行方式与编码器自注意力层的区别在于:

训练过程中,解码器的自注意力层接收整个输出序列。但为了避免在生成每个输出时看到未来的数据(即避免信息泄露),使用所谓的“掩码”技术,确保在生成第i个词时,模型只能看到第1个到第i个词。

推理过程中,每个时间步的输入,是直到当前时间步所产生的整个输出序列。

3. 解码器与编码器的另一个不同在于,解码器有第二个注意层层,即编码器-解码器注意力层(Encoder-Decoder-attention)。其工作方式与自注意力层类似,只是其输入来源有两处:位于其前的自注意力层及解码器堆栈的输出。

4. 编码器-解码器注意力层的输出被传入前馈层,然后将其输送至下一个解码器。

5. 解码器中的每一个子层,包括自注意力层、编码器-解码器注意力层、前馈层,均由一个残差连接,并进行层规范化。

六、注意力:Attention

在第一部分中,我们谈到了为什么在注意力机制是如此重要。Transformer中,注意力被用在三个地方:

1. Encoder中的Self-attention:输入序列对自身的注意力计算;

2. Decoder中的Self-attention:目标序列对自身的注意力计算;

3. Decoder中的Encoder-Decoder-attention:目标序列对输入序列的注意力计算。

注意力层通过三个参数进行计算,这三个参数称为查询(Query)、键(Key)和值(Value)

1. 在Encoder中的Self-attention,编码器的输入与相应的参数矩阵相乘,得到Query、Key和Value三个参数。

2. 在Decoder中的Self-attention,解码器的输入通过相同的方式得到Query、Key和Value。

3. 在解码器的Encoder-Decoder-attention中,编码器堆栈中最后一个编码器的输出被传递给Value和Key参数。位于Encoder-Decoder-attention的Self-attention和Layer Norm模块的输出被传递给Query参数。

七、多头注意力(Multi-head Attention)

Transformer将每个注意力计算单元称为注意力头(Attention Head)。多个注意力头并行运算,即所谓的多头注意力:Multi-head Attention。它通过融合几个相同的注意力计算,使注意力计算具有更强大的分辨能力。

通过每个独立线性层自己的权重参数,即Query,Key和Value,与输入进行矩阵乘法运算,得到Q、K、V。这些结果通过如下所示的注意力公式组合在一起,产生注意力分数(Attention Score)

需要注意的重要一点是,Q、K、V的值是对序列中每个词的编码表示。注意力计算将每个词与序列中的其他词联系起来,这样注意力分数就为序列中的每个词编码了一个分数。

八、注意力掩码(Attention Masks)

在计算Attention Score的同时,Attention模块应用了一个掩码操作。掩码操作有两个目的:

1. 在Encoder Self-attention和Encoder-Decoder-attention中:掩码的作用是,在输入序列padding对应的位置,将输出的注意力分数(Attention Score)归零,以确保padding对Self-attention的计算没有贡献。

2. padding的作用:由于输入序列可能有不同的长度,因此会像大多数NLP方法一样,使用padding作为填充标记,以得到固定长度的向量,从而可以将一个样本的序列作为矩阵被输入到Transform中。

当计算注意力分数(Attention Score)时,在Softmax计算之前的分子上进行了掩码。被屏蔽的元素(白色方块)设置为负无穷大,这样Softmax就会把这些值变成零。

对padding掩码操作的图示:

Encoder-Decoder-attention中的掩码操作也是这样:

2. 在Decoder中的Self-attention中:掩蔽的作用是,防止解码器在当前时间步预测时,“偷看”目标句余下几个时间步的部分:

解码器处理源序列source sequence中的单词,并利用它们来预测目标序列中的单词。训练期间,这个过程是通过Teacher Forcing进行的,完整的目标序列被作为解码器的输入。因此,在预测某个位置的词时,解码器可以使用该词之前的目标词以及该词之后的目标词。这使得解码器可以通过使用未来 “时间步”的目标词来“作弊”。

举例,如下图所示,当预测 “Word3”时,解码器应该只参考目标词的前三个输入词,而不含第四个单词“Ketan”。因此,Decoder中的Self-attention掩码操作掩盖了序列中位于当前时间步之后的目标词。

九、产生输出(Generate Output)

解码器堆栈(Decoder stack)中的最后一个解码器(Decoder)将其输出传给输出组件,输出组件将其转换为最终目标句子。

1. 线性层将解码器向量投射到单词分数(Word Scores)中,目标词汇中的每个独特的单词在句子的每个位置都有一个分数值。例如,如果我们的最终输出句子有7个词,而目标西班牙语词汇有10000个独特的词,我们为这7个词中的每一个生成10000个分数值。分数值表示词汇中的每个词在句子的那个位置出现的可能性。

2. Softmax层将这些分数变成概率(加起来为1.0)。在每个位置,我们找到概率最高的单词索引(贪婪搜索),然后将该索引映射到词汇表中的相应单词。这些词就构成了Transformer的输出序列。

十、训练与损失函数(Training and Loss Function)

训练中使用交叉熵作为损失函数,比较生成的输出概率分布和目标序列。概率分布给出了每个词在该位置出现的概率。

假设我们的目标词汇只包含四个词。我们的目标是产生一个与我们预期的目标序列“De nada END”相符的概率分布。

这意味着第一个词位的概率分布中,“De”的概率应该是1,而词汇中所有其他词的概率都是0。同样地,在第二和第三词位中,“nada”和“END”的概率应该都是 1,而词汇表中其他词的概率都是0。

像往常一样,对损失被计算梯度,通过反向传播来训练模型。

本文来自微信公众号:Afunby的 AI Lab(ID:AI_Lab_of_Afunby),作者:Afunby

声明: 该内容为作者独立观点,不代表新零售资讯观点或立场,文章为网友投稿上传,版权归原作者所有,未经允许不得转载。 新零售资讯站仅提供信息存储服务,如发现文章、图片等侵权行为,侵权责任由作者本人承担。 如对本稿件有异议或投诉,请联系:wuchangxu@youzan.com
(0)
上一篇 2024年3月28日
下一篇 2024年3月28日

相关推荐

  • 水温80度:AI行业真假繁荣的临界点

    我们从来没拥有过这么成功的AI主导的产品。

    (这种分析统计并不那么准,但大致数量级是差不多的)

    这两个产品碰巧可以用来比较有两个原因:

    一个是它们在本质上是一种东西,只不过一个更通用,一个更垂直。

    蓝海的海峡

    未来成功的AI产品是什么样,大致形态已经比较清楚了,从智能音箱和Copilot这两个成功的AI产品上已经能看到足够的产品特征。

    未来科技 2024年6月5日
  • ChatGPT、Perplexity、Claude同时“罢工”,全网打工人都慌了

    美西时间午夜12点开始,陆续有用户发现自己的ChatGPT要么响应超时、要么没有对话框或提示流量过载,忽然无法正常工作了。

    因为发现AI用久了,导致现在“离了ChatGPT,大脑根本无法运转”。”

    等等,又不是只有一个聊天机器人,难道地球离了ChatGPT就不转了。

    大模型连崩原因猜想,谷歌躺赢流量激增6成

    GPT归位,人们的工作终于又恢复了秩序。

    未来科技 2024年6月5日
  • ChatGPT宕机8小时,谷歌Gemini搜索量激增60%

    ChatGPT一天宕机两次

    谷歌Gemini搜索量激增近60%

    ChatGPT在全球拥有约1.8亿活跃用户,已成为部分人群工作流程的关键部分。

    过去24小时内提交的关于OpenAI宕机的问题报告

    图片来源:Downdetector

    ChatGPT系统崩溃后,有网友在社交媒体X上发帖警告道:“ChatGPT最近发生的2.5小时全球中断,为我们所有依赖AI工具来支持业务的人敲响了警钟。

    未来科技 2024年6月5日
  • ChatGPT、Perplexity、Claude同时大崩溃,AI集体罢工让全网都慌了

    接着OpenAI也在官网更新了恢复服务公告,表示“我们经历了一次重大故障,影响了所有ChatGPT用户的所有计划。Generator调查显示,在ChatGPT首次故障后的四小时内,谷歌AI聊天机器人Gemini搜索量激增60%,达到327058次。

    而且研究团队表示,“Gemini”搜索量的增长与“ChatGPT故障”关键词的搜索趋势高度相关,显示出用户把Gemini视为ChatGPT的直接替代选项。

    未来科技 2024年6月5日
  • 深度对话苹果iPad团队:玻璃的传承与演变

    iPad最为原始的外观专利

    没错,这就是iPad最初被设想的样子:全面屏,圆角矩形,纤薄,就像一片掌心里的玻璃。

    2010年发布的初代iPad

    好在乔布斯的遗志,并未被iPad团队遗忘。

    初代iPad宣传片画面

    乔布斯赞同这一想法,于是快速将资源投入平板电脑项目,意欲打造一款与众不同的「上网本」,这就是iPad早年的产品定义。

    iPad进化的底色

    苹果发布会留下过很多「名场面」,初代iPad发布会的末尾就是一例。

    未来科技 2024年6月5日
  • 底层逻辑未通,影视业的AI革命正在褪色…

    GPT、Sora均为革命性产品,引发了舆论风暴,但它在上个月发布的“多模态语音对谈”Sky语音,却由于声音太像电影明星斯嘉丽·约翰逊,被正主强烈警告,被迫下架。

    华尔街日报也在唱衰,认为“AI工具创新步伐正在放缓,实用性有限,运行成本过高”:

    首先,互联网上已经没有更多额外的数据供人工智能模型收集、训练。

    03、

    如果说训练“数字人”、使用AI配音本质上瞄向的仍是影视行业固有的发展方向,那么还有另外一群人试图从根本上颠覆影视行业的生产逻辑和产品形态。

    但分歧点正在于此,电影公司希望通过使用AI技术来降低成本,但又不希望自己的内容被AI公司所窃取。

    未来科技 2024年6月5日
  • KAN会引起大模型的范式转变吗?

    “先变后加”代替“先加后变”的设计,使得KAN的每一个连接都相当于一个“小型网络”, 能实现更强的表达能力。

    KAN的主要贡献在于,在当前深度学习的背景下重新审视K氏表示定理,将上述创新网络泛化到任意宽度和深度,并以科学发现为目标进行了一系列实验,展示了其作为“AI+科学”基础模型的潜在作用。

    KAN与MLP的对照表:

    KAN使神经元之间的非线性转变更加细粒度和多样化。

    未来科技 2024年6月5日
  • 这个国家,也开始发芯片补贴了

    //mp.weixin.qq.com/s/tIHSNsqF6HRVe2mabgfp6Q
    [4]中国安防协会:欧盟批准430亿欧元芯片补贴计划:2030年产量占全球份额翻番.2023.4.19.https。//mp.weixin.qq.com/s/VnEjzKhmZbuBUFclzGFloA
    [6]潮电穿戴:印度半导体投资大跃进,一锤砸下1090亿,政府补贴一半.2024.3.5https。

    未来科技 2024年6月5日
  • 大模型的电力经济学:中国AI需要多少电力?

    这些报告研究对象(数字中心、智能数据中心、加密货币等)、研究市场(全球、中国与美国等)、研究周期(多数截至2030年)各不相同,但基本逻辑大同小异:先根据芯片等硬件的算力与功率,计算出数据中心的用电量,再根据算力增长的预期、芯片能效提升的预期,以及数据中心能效(PUE)提升的预期,来推测未来一段时间内智能数据中心的用电量增长情况。

    未来科技 2024年6月5日
  • 你正和20万人一起接受AI面试

    原本客户还担心候选人能否接受AI面试这件事,但在2020年以后,候选人进行AI面试的过程已经是完全自动化的,包括面试过程中AI面试官回答候选人的问题,AI面试官对候选人提问以及基于候选人的回答对候选人进行至多三个轮次的深度追问。

    以近屿智能与客户合作的校验周期至少3年来看,方小雷认为AI应用不太可能一下子爆发,包括近屿智能在内的中国AI应用企业或许要迎来一个把SaaS做起来的好机会。

    未来科技 2024年6月4日