图解Transformer:它能用来干嘛?

admin 2025-11-17 阅读:35 评论:0
一、引言 随着大型语言模型如 ChatGPT 的横空出世whatsapp登录,我们进入了自然语言处理(NLP)的一个新纪元。在这个纪元中,Transformer 架构扮演着至关重要的角色。其独特之处不仅在于技术上的突破,更在于它彻底改变了我...

一、引言

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

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

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

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

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

二、何为Transformer?

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

Transformer架构原理_Transformer编码器解码器_为什么要用编码器

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

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

Transformer架构原理_为什么要用编码器_Transformer编码器解码器

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

为什么要用编码器_Transformer编码器解码器_Transformer架构原理

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编码器解码器

Transformer编码器解码器_Transformer架构原理_为什么要用编码器

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

三、Attention在做什么?

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

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

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

Transformer架构原理_为什么要用编码器_Transformer编码器解码器

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架构原理_Transformer编码器解码器

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

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

Transformer架构原理_Transformer编码器解码器_为什么要用编码器

四、Transformer训练过程

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

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

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

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

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

Transformer编码器解码器_Transformer架构原理_为什么要用编码器

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

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

2. 由各编码器组成的编码器堆栈按照顺序对第一步中的输出进行处理whatsapp官网,产生输入序列的编码表示(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.

Transformer编码器解码器_Transformer架构原理_为什么要用编码器

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

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

2. 第二步也与训练过程相同:由各编码器组成的编码器堆栈按照顺序对第一步中的输出进行处理whatsapp网页版,产生输入序列的编码表示(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 的输出,并生成预测的类别标签,如正面或负面情绪。

Transformer编码器解码器_Transformer架构原理_为什么要用编码器

2. Transformer Language Model architecture

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

为什么要用编码器_Transformer编码器解码器_Transformer架构原理

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

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

然而,这有两个限制:

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

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

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

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

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

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

Transformer架构原理_为什么要用编码器_Transformer编码器解码器

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

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

热门文章
  • 详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略

    详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略
    一、下载与安装WhatsApp WhatsApp是一款全球使用范围极广的即时通讯软件,不仅可以实现文本聊天,还能进行语音、视频通话WhatsApp中文版,发送文件等功能。由于众所周知的原因,国内用户想要下载和安装WhatsApp可能会遇到一些困难。不过,只要按照以下步骤操作,就能顺利完成WhatsApp的下载和安装。 首先,我们需要解决的是下载问题。由于WhatsApp在国内的应用商店无法直接下载,所以我们需要寻找其他的下载途径。Android用户可以选择到各大安卓市场搜索下...
  • 苹果IOS5.1.1机完美越狱

    苹果IOS5.1.1机完美越狱
    越狱工具下载:(需手动复制: http://bbs./read-htm-tid-4804612.html ) 详细的越狱教程: Absinthe 2.0.4的越狱方法与Absinthe 1.0的越狱方法完全一样,非常简单的“傻瓜一键式”。不过这里绿毒有说明,最好重新刷固件。支持越狱设备IOS5.1.1的固件下载地址请点击本站的IOS固件下载,看下图: 下载完固件之后,把设备连接iTunes,开始刷固件。你也可以选择不刷,但是在越狱的过程之中,新的系统在越狱时会比较的顺利,...
  • 电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹

    电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹
    1. 怎么找到微信聊天图片在哪个文件夹里 图片保存路径:/storage/emulated/tencent/MicroMsg/WeiXin/文件夹,这个是完整路径。而在文件夹中只需要找到/tencent/MicroMsg/WeiXinWhatsApp中文版,就可以了,前面两个文件夹是系统根目录。以下是保存及查找图片的方法步骤介绍。 第一步、找到桌面的微信APP,直接点击打开这个微信的APP。 2. 电脑微信图片保存在哪个文件夹 个人微信文件夹。 电脑版微信聊天的图片,都保存到...
  • Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式

    Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式
    Meta(最近更名为 Meta AI)悄然宣布,WhatsApp 将在 Windows 11 上放弃 UWP(WinUI)WhatsApp中文版,退回采用基于 Chromium 的容器。这意味着 WhatsApp 又回到了几年前的样子。由于 web.whatsapp.com 一直领先于 Windows 应用开发,它确实拥有一些新功能,但速度更慢,占用更多内存。 如果独立开发者因为无力维护所有平台的代码库而选择 Web 应用程序,那是一回事,但当像 Meta 这样价值万亿美元...
  • 小米下載WhatsApp的完整指南:安装与使用注意事项

    小米下載WhatsApp的完整指南:安装与使用注意事项
    综上所述,确保您的小米手机具备以上条件,将有助于您顺利下载和安装WhatsApp,享受便捷的通讯服务。在满足这些条件后,您就可以按照后续步骤进行WhatsApp的下载和安装。 2. 下载和安装WhatsApp的具体步骤 在小米手机上下载和安装WhatsApp的具体步骤相对简单,但需注意一些特殊情况。首先,确保你的手机系统已更新到最新版本,以保证最佳的兼容性。由于安卓手机商店内无法直接找到WhatsApp,你可以通过APKPure等第三方应用商店进行下载。打开APKPure应用...