这样图解Transformer应该没人看不懂了吧!

近年来,Transformer模型 引起了广泛关注,它在近几年的 自然语言处理(NLP) 领域掀起了一场风暴。Transformer是一种利用注意力机制(Attention)显著提升深度学习NLP翻译模型性能的架构。

它最初在**《Attention is All You Need》**这篇论文中被提出,并迅速确立为大多数文本数据应用中的主流架构。

自那之后,包括谷歌的 BERT和OpenAI的GPT 系列在内的众多项目都在此基础上进行了拓展,并发布了远远超越现有最先进基准的性能结果。

本文内容:Transformer的应用场景、为何优于RNN、架构组件以及训练和推理过程中的行为表现。

什么是Transformer

Transformer架构在处理本质上具有序列特性的文本数据方面表现出色。

它以一个文本序列作为输入,并产生另一个文本序列作为输出,例如将输入的英文句子翻译成西班牙语。

其核心由多层编码器(Encoder)和解码器(Decoder)堆叠而成。

为避免混淆,我们将单个层称为编码器或解码器,而将一组编码器层称为编码器栈(Encoder Stack),一组解码器层称为解码器栈(Decoder Stack)。

编码器栈和解码器栈各自为其输入配备了相应的嵌入层(Embedding Layer)。

最后,有一个输出层来生成最终输出。

所有编码器之间是完全相同的,同样,所有解码器之间也是如此。

  • 编码器包含至关重要的自注意力层(Self-Attention Layer),用于计算序列中不同单词之间的关系,以及一个前馈层(Feed-Forward Layer)。

  • 解码器则包含自注意力层、前馈层,以及一个额外的编码器-解码器注意力层(Encoder-Decoder Attention Layer)。

  • 每个编码器和解码器都有自己的一套权重。

编码器是一个可复用的模块,是所有Transformer架构的标志性组件。

除了上述两层外,它还在两层周围配备了残差跳跃连接(Residual Skip Connections)和两个层归一化层(LayerNorm Layers)。

Transformer架构存在多种变体,其中一些完全不需要解码器,仅依赖编码器工作。

注意力机制的作用是什么?

Transformer之所以取得突破性表现,关键在于其使用的注意力机制。

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

例如,“球”(Ball)与“蓝色”(blue)和“拿着”(holding)紧密相关,但“蓝色”(blue)与“男孩”(boy)则不相关。

Transformer架构通过让每个输入序列中的单词与序列中的其他所有单词建立关系,从而实现自注意力机制。

可以看下面两个句子:

  • 猫喝了牛奶因为它饿了。

  • 猫喝了牛奶因为它很甜。

在第一个句子中,“它”指的是“猫”,而在第二个句子中则指的是“牛奶”。

当模型处理单词“它”时,自注意力机制为模型提供更多关于其意义的信息,以便将“它”与正确的单词相关联。

为了使Transformer能够更细致地处理句子的意图和语义,它为每个单词计算多个注意力得分。

例如,在处理单词“它”时,第一个得分突出显示“猫”,而第二个得分则突出显示“饿了”。

因此,在将“它”翻译成另一种语言时,模型会将“猫”和“饿了”的某些方面融入到翻译后的单词中。

训练Transformer

Transformer在训练和推理过程中的工作方式略有不同。

首先,我们来看训练过程中的数据流。训练数据由两部分组成:

  • 源或输入序列(例如,对于翻译问题,英文的“You are welcome”)

  • 目标或输出序列(例如,西班牙文的“De nada”)

Transformer的目标是通过使用输入和目标序列来学习如何输出目标序列。

Transformer处理数据的过程如下:

  • 输入序列首先会被转换为嵌入向量(并附加位置编码),然后送入编码器进行处理。

  • 编码器层叠结构会对这些嵌入向量进行处理,并生成输入序列的编码表示。

  • 目标序列在开头会添加一个句子起始标记,随后被转换为嵌入向量(并附加位置编码),然后送入解码器。

  • 解码器层叠结构会结合编码器的编码表示,共同处理这些信息,以生成目标序列的编码表示。

  • 输出层将这些编码表示转换为单词概率,从而得到最终的输出序列。

  • Transformer的损失函数会将这一输出序列与训练数据中的目标序列进行比较。通过反向传播,这一损失值被用来生成梯度,以训练Transformer模型。

推理过程

在推理阶段,我们只有输入序列,没有目标序列作为解码器的输入。

Transformer的目标是仅根据输入序列生成目标序列。

类似于Seq2Seq模型,我们通过一个循环生成输出,将上一时间步的输出序列作为下一时间步解码器的输入,直到遇到句子结束标记。

但与Seq2Seq模型不同的是,在每个时间步,我们都重新输入到目前为止生成的所有输出序列,而不仅仅是最后一个单词。

推理过程中的数据流为:

  • 输入序列被转换成嵌入向量(并加入位置编码),送入编码器。

  • 编码器堆叠层处理这些嵌入向量,生成输入序列的编码表示。

  • 我们使用一个仅包含句子开始标记的空序列代替目标序列,将其转换成嵌入向量(并加入位置编码),送入解码器。

  • 解码器堆叠层结合编码器的编码表示,对空序列的嵌入向量进行处理,开始生成目标序列的编码表示。

  • 输出层将编码表示转换为单词概率,并生成输出序列。

  • 取输出序列的最后一个单词作为预测单词,将其填充到解码器输入序列的第二个位置,此时解码器输入序列包含句子开始标记和第一个预测单词。

  • 重复步骤3至6,直到预测出句子结束标记。注意,由于编码器序列在每次迭代中都不变,因此我们不需要重复步骤1和2(感谢Michal Kučírka指出这一点)。

Teacher Forcing

在训练过程中,我们将目标序列作为解码器的输入,这种方法被称为教师强制。

为什么采用这种方法,以及这个术语的含义是什么呢?

在训练时,我们本可以采用与推理时相同的方法,即通过一个循环,取输出序列的最后一个单词,附加到解码器输入,并送入解码器进行下一轮迭代。

但这样做不仅会使训练过程耗时更长,还会增加模型训练的难度。

因为模型需要基于可能错误的第一个预测单词来预测第二个单词,以此类推。

相反,通过给解码器提供目标序列作为输入,我们实际上是在给模型一个提示,就像老师指导学生一样。

即使模型预测的第一个单词是错误的,它也能利用正确的第一个单词来预测第二个单词,从而避免错误不断累积。

此外,Transformer能够并行输出所有单词,无需循环,这大大加快了训练速度。

Transformer的用途及其优势

Transformer的多种用途,Transformer是一种极其灵活的模型,广泛应用于自然语言处理(NLP)的各个领域,如语言模型构建、文本分类等。

在序列到序列(Sequence-to-Sequence)的模型中,Transformer更是大放异彩,被用于机器翻译、文本摘要、问答系统、命名实体识别以及语音识别等多种应用场景。

针对不同的问题,Transformer架构有不同的变体。

其基本编码器层(Encoder Layer)作为这些架构的通用构建块,通过添加针对特定应用领域的“头”(heads)来适应不同的解决方案需求。

Transformer的分类架构

以情感分析为例,该应用将文本文档作为输入。分类头(Classification head)接收Transformer的输出,并预测文本的类别标签,如正面或负面情感。

Transformer的语言模型架构

在语言模型架构中,模型接受输入序列(如文本句子)的初始部分,并通过预测后续句子来生成新文本。

语言模型头(Language Model head)利用Transformer的输出,为词汇表中的每个单词生成一个概率。

概率最高的单词即成为句子中下一个单词的预测输出。

为何Transformer优于RNN?

在Transformer出现之前,递归神经网络(RNN)及其变种(如长短期记忆网络LSTM和门控循环单元GRU)是NLP应用的标配架构。

然而,Transformer的出现彻底改变了这一格局。

虽然基于RNN的序列到序列模型表现不俗,且注意力机制(Attention Mechanism)的引入进一步提升了其性能,但RNN仍存在两大局限:

  • 难以处理长句中相隔较远的单词之间的长距离依赖关系。

  • 必须按顺序逐个处理输入序列中的单词,即只有完成前一个时间步的计算后,才能进行下一个时间步的计算,这导致训练和推理速度较慢。

相比之下,卷积神经网络(CNN)能够并行计算所有输出,从而提高卷积速度。

但在处理长距离依赖方面,CNN也有其局限性:在卷积层中,只有足够接近以至于能够被卷积核覆盖的图像部分(或文本数据中的单词)才能相互作用。

对于距离较远的元素,则需要更深的网络层数。

而Transformer架构则巧妙地解决了上述问题。它彻底摒弃了RNN,完全依赖于注意力机制的优势:

  • 并行处理序列中的所有单词,极大地加速了计算过程。

  • 无论输入序列中单词之间的距离如何,Transformer都能有效计算它们之间的依赖关系,无论是相邻单词还是相隔较远的单词。

现在,我们对Transformer有了初步的了解,后续我们将深入探讨其内部工作原理,以便更全面地理解Transformer是如何运作的。

那么,如何系统的去学习大模型LLM?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

篇幅有限,部分资料如下:

👉LLM大模型学习指南+路线汇总👈

💥大模型入门要点,扫盲必看!
在这里插入图片描述
💥既然要系统的学习大模型,那么学习路线是必不可少的,这份路线能帮助你快速梳理知识,形成自己的体系。

路线图很大就不一一展示了 (文末领取)
在这里插入图片描述

👉大模型入门实战训练👈

💥光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉国内企业大模型落地应用案例👈

💥两本《中国大模型落地应用案例集》 收录了近两年151个优秀的大模型落地应用案例,这些案例覆盖了金融、医疗、教育、交通、制造等众多领域,无论是对于大模型技术的研究者,还是对于希望了解大模型技术在实际业务中如何应用的业内人士,都具有很高的参考价值。 (文末领取)
在这里插入图片描述

👉GitHub海量高星开源项目👈

💥收集整理了海量的开源项目,地址、代码、文档等等全都下载共享给大家一起学习!
在这里插入图片描述

👉LLM大模型学习视频👈

💥观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 (文末领取)
在这里插入图片描述

👉640份大模型行业报告(持续更新)👈

💥包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

👉获取方式:

这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Transformers是一种用于自然语言处理和其他相关领域的深度学习模型。它是通过编码器-解码器结构实现的。编码器将输入序列转换为一系列隐藏状态,而解码器则根据编码器的输出和之前的上下文生成输出序列。 关于图解transformer,引用中提到的图显示了Transformer的位置编码方法,其中将两个信号交织在一起。这个图可以帮助我们更好地理解位置编码的实现方式。 此外,引用中还展示了一个包含两个堆叠编码器和解码器的Transformer结构的图示。这个图可以帮助我们了解多层Transformer的组织结构。 最后,引用中提到的训练模型的直觉可以帮助我们更好地理解Transformer的工作原理。这个直觉的图示可能显示了一些与训练有关的信息,可以帮助我们更好地理解整个前向传递过程。 综上所述,通过引用中提到的图示,我们可以更好地理解Transformer模型的一些关键概念和操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Transformer图解 Transformer](https://blog.csdn.net/sikh_0529/article/details/128968765)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值