图解Transformer:它能用来干嘛?

一、引言

随着大型语言模型如 ChatGPT 的横空出世,我们进入了自然语言处理(NLP)的一个新纪元。在这个纪元中,Transformer 架构扮演着至关重要的角色。其独特之处不仅在于技术上的突破,更在于它彻底改变了我们对语言模型潜力的理解。

Transformer 是一种深度学习架构,它使用注意力来显著提高深度学习 NLP 翻译模型的性能,首次出现是在论文《Attention is all you need》中。其问世标志着模型的建构从序列建模的传统方法(如长短期记忆网络和门控循环单元)转变到一个更加高效、更能捕捉复杂语言模式的新框架,它允许模型同时处理输入序列的所有元素,并捕捉它们之间的复杂关系。这种全面的注意力机制使得 Transformer 在处理长序列时,相比于其前辈们更加高效与准确。

Transformer 的以上特点不仅提高了模型处理语言的能力,还极大增强了其学习复杂语言模式的能力。使得类 GPT 系列这样的模型,不仅能理解和生成自然语言,还能在多种任务上表现出色,如文本摘要、问答、翻译等。这种多功能性和灵活性的提升,为我们处理和理解自然语言提供了前所未有的可能性。

本文来自于 2023 年初翻译的 Ketan Doshi 博客中关于 Transformer 的系列文章。作者在系列文章中,介绍了 Transformer 的基本知识,架构,及其内部工作方式,并深入剖析了 Transformer 内部的细节。

系列文章共有四篇,本文为第一篇,主要从整体上介绍了 Transformer 的整体架构,工作过程。

二、何为Transformer?

Transformer 架构擅长处理文本数据,这些数据本身是有顺序的。它们将一个文本序列作为输入,并产生另一个文本序列作为输出。例如,将一个输入的英语句子翻译成西班牙语。

Transformer 的核心部分,包含一个编码器层和解码器层的堆栈。为了避免混淆,我们把单个层称为编码器或解码器,并使用编码器堆栈或解码器堆栈分别表示一组编码器与一组解码器。(原文为 Encoder stack 和 Decoder stack)

在编码器堆栈和解码器堆栈之前,都有对应的嵌入层。而在解码器堆栈后,有一个输出层来生成最终的输出。

编码器堆栈中的每个编码器的结构相同。解码器堆栈亦然。其各自结构如下:

1. 编码器:一般有两个子层:包含自注意力层 self-attention,用于计算序列中不同词之间的关系;同时包含一个前馈层feed-forward。

2. 解码器:一般有三个子层:包含自注意力层 self-attention,前馈层 feed-forward,编码器-解码器注意力层 Decoder-Encoder self attention。

3. 每个编码器和解码器都有独属于本层的一组权重。

注意,编码器与解码器的自注意力层 self-attention、前馈层 feed-forward,以及解码器中的编码器-解码器注意力层 Decoder-Encoder self attention 均有残差连接以及正则化层。

基于 Transformer 的变体有许多。一些 Transformer 架构甚至没有 Decoder 结构,而仅仅依赖 Encoder。

三、Attention在做什么?

Transformer 的突破性表现关键在于其对注意力的使用。

在处理一个单词时,注意力使模型能够关注输入中与该单词密切相关的其他单词。

例如,在以下的英文句子中,ball 与 blue、hold 密切相关。另一方面,boy 与 blue 没有关系。

Transformer 通过将输入序列中的每个词与其他词关联起来(同一序列中),形成 self-attention 机制。

考虑以下两个句子:

The cat drank the milk because it was hungry.

The cat drank the milk because it was sweet.

第一个句子中,单词“it”指“cat”;第二个句子中,“it”指“milk”。当模型处理“it”这个词时,self-attention 给了模型更多关于“it”意义的信息,这样就能把“it”与正确的词联系起来。

为了使模型能够处理有关于句子意图和语义的更多细微差别,Transformer 对每个单词都进行了注意力打分。

在处理“it”这个词时,第一个分数突出“cat”,而第二个分数突出“hungry”。因此,当模型解码“it”这个词时,即把它翻译成另一种语言的单词时,将会把“cat”和“hungry”某些语义方面的性质纳入到目标语言中。

四、Transformer训练过程

Transformer 的训练和推理有一些细微差别。

首先来看训练。每一条训练数据都包括两部分内容:

1. 输入序列,或称为“源序列”(例如对于一个翻译问题,“You are welcome”是一个输入序列)

2. 输出序列,或称为“目标序列”(上述的翻译问题“De nada”即为“You are welcome”的西班牙语翻译,为输出序列)

而 Transformer 训练的目标就是,通过对训练数据中源序列与目标序列之间规律的学习,在测试或实际的任务中,给定源序列,生成目标序列。

如上图所示,Transformer 在训练过程中,模型对数据的处理过程如下,大体可分为 6 个步骤:

1. 在送入第一个编码器之前,输入序列(src_seq)首先被转换为嵌入(同时带有位置编码),产生词嵌入表示(src_position_embed),之后送入第一个编码器。

2. 由各编码器组成的编码器堆栈按照顺序对第一步中的输出进行处理,产生输入序列的编码表示(enc_outputs)

3. 在右侧的解码器堆栈中,目标序列首先加一个句首标记,被转换成嵌入(带位置编码),产生词嵌入表示(tgt_position_embed),之后送入第一个解码器。

4. 由各解码器组成的解码器堆栈,将第三步的词嵌入表示(tgt_position_embed),与编码器堆栈的编码表示(enc_outputs)一起处理,产生目标序列的解码表示(dec_outputs)

5. 输出层将其转换为词概率和最终的输出序列(out_seq)

6. 损失函数将这个输出序列(out_seq)与训练数据中的目标序列(tgt_seq)进行比较。这个损失被用来产生梯度,在反向传播过程中训练模型。

五、Transformer推理过程

在推理过程中,我们只有输入序列,而没有目标序列作为输入传递给解码器。Transformer 推理的目标是仅通过输入序列产生目标序列

因此,与 Seq2Seq 模型类似,我们在一个时间步的完整循环中生成当前时间步的输出,并在下一个时间段将前一个时间段的输出序列传给解码器作为其输入,直到我们遇到句末标记。

但与 Seq2Seq 模型的不同之处在于,在每个时间步,我们输入直到当前时间步所产生的整个输出序列,而不是只输入上一个时间步产生的词(类似输入序列长度可变的自回归模型)

这非常重要,把原文粘过来:The difference from the Seq2Seq model is that, at each timestep, we re-feed the entire output sequence generated thus far, rather than just the last word.

推理过程中的数据流转如下:

1. 第一步与训练过程相同:输入序列(src_seq)首先被转换为嵌入(带有位置编码),产生词嵌入表示(src_position_embed),之后送入第一个编码器。

2. 第二步也与训练过程相同:由各编码器组成的编码器堆栈按照顺序对第一步中的输出进行处理,产生输入序列的编码表示(enc_outputs)

3. 从第三步开始一切变得不一样了:在第一个时间步,使用一个只有句首符号的空序列来代替训练过程中使用的目标序列。空序列转换为嵌入带有位置编码的嵌入(start_position_embed),并被送入解码器堆栈中的第一个解码器。

4. 解码器堆栈将第三步的空序列嵌入表示(start_position_embed),与编码器堆栈的编码表示(enc_outputs)一起处理,产生目标序列第一个词的编码表示(step1_dec_outputs)

5. 输出层将其(step1_dec_outputs)转换为词概率和第一个目标单词(step1_tgt_seq)

6. 将这一步产生的目标单词填入解码器输入的序列中的第二个时间步位置。在第二个时间步,解码器输入序列包含句首符号产生的 token 和第一个时间步产生的目标单词。

7. 回到第 3 个步骤,与之前一样,将新的解码器序列输入模型。然后取输出的第二个词并将其附加到解码器序列中。重复这个步骤,直到它预测出一个句末标记。需要明确的是,由于编码器序列在每次迭代中都不会改变,我们不必每次都重复第 1 和第 2 步。

六、Teacher Forcing

训练时向解码器输入整个目标序列的方法被称为 Teacher Forcing。

训练时,我们本可以使用与推理时相同的方法。即在一个时间步运行 Transformer,从输出序列中取出最后一个词,将其附加到解码器的输入中,并将其送入解码器进行下一次迭代。最后,当预测到句末标记时,Loss 函数将比较生成的输出序列和目标序列,以训练网络。

但这种训练机制不仅会导致训练时间更长,而且还会增加模型训练难度:若模型预测的第一个词错误,则会根据第一个错误的预测词来预测第二个词,以此类推。

相反,通过向解码器提供目标序列,实际上是给了一个提示。即使第一个词预测错误,在下一时间步,它也可以用正确的第一个词来预测第二个词,避免了错误的持续累加。

此外,这种机制保证了 Transformer 在训练阶段并行地输出所有的词,而不需要循环,这大大加快了训练速度。

七、Transformer应用场景

Transformer 的用途非常广泛,可用于大多数 NLP 任务,如语言模型和文本分类。它们经常被用于 Seq2Seq 的模型,如机器翻译、文本总结、问题回答、命名实体识别和语音识别等应用。

对于不同的问题,有不同的 Transformer 架构。基本的编码器层被用作这些架构的通用构件,根据所解决的问题,有不同的特定应用“头”。

1. Transformer 分类器架构

如下所示,一个情感分析程序,把一个文本文件作为输入。一个分类头接收 Transformer 的输出,并生成预测的类别标签,如正面或负面情绪。

2. Transformer Language Model architecture

Language Model architecture 架构将把输入序列的初始部分,如一个文本句子作为输入,并通过预测后面的句子来生成新的文本。一个 Language Model architecture 头接受 Transformer 的输出作为 head 的输入,产生关于词表中每个词的概率输出。概率最高的词成为句子中下一个词的预测输出。

八、与RNN类型的架构相比,为什么Transformer的效果要好?

RNNs 和 LSTMs、GRU 也是之前 NLP 常用的架构,直到 Transformer 的出现。

然而,这有两个限制:

1. 对于长句中相距较远的单词,其间的长距离依赖关系是一个挑战。

2. RNNs 每个时间步值处理输入序列的一个词。这意味着在完成时间步 T-1 计算之前,它无法进行时间步骤 T 的计算。(即无法进行并行计算)这降低了训练和推理速度。

对于 CNN 来说,所有的输出都可以并行计算,这使得卷积速度大大加快。然而,它们在处理长距离的依赖关系方面也有限制:

卷积层中,只有图像(或文字,如果应用于文本数据)中足够接近于核大小的部分可以相互作用。对于相距较远的项目,你需要一个有许多层的更深的网络。

Transformer 架构解决了这两个限制。它摆脱了 RNNs,完全依靠 Attention 的优势

1. 并行地处理序列中的所有单词,从而大大加快了计算速度。

2. 输入序列中单词之间的距离并不重要。Transformer 同样擅长计算相邻词和相距较远的词之间的依赖关系。

本文来自微信公众号:Afunby的 AI Lab(ID:AI_Lab_of_Afunby),作者:Ketan Doshi,翻译&整理:Afunby

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

相关推荐

  • 水温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日