Transformer 如何工作:Transformer 架构的详细探索

  • Transformer 如何工作:Transformer 架构的详细探索
    • 什么是 Transformer?
      • 什么是 Transformer 模型?
      • 历史背景
      • 从 RNN 模型(如 LSTM)到 Transformer 模型在 NLP 问题上的转变
    • Transformer 架构
      • 概述
      • 编码器工作流程
        • 步骤 1 - 输入嵌入
        • 步骤 2 - 位置编码
        • 步骤 3 - 编码器层堆栈
        • 步骤 3.1 多头自注意力机制
          • 矩阵乘法 (MatMul) - 查询和键的点积
          • 降低注意力分数的大小
          • 对调整后的分数应用 Softmax
          • 将 Softmax 结果与值向量相结合
        • 步骤 3.2 归一化和残差连接
        • 步骤 3.3 前馈神经网络
        • 步骤 4 - 编码器的输出
      • 解码器工作流程
        • 步骤 1 - 输出嵌入
        • 步骤 2 - 位置编码
        • 步骤 3 - 解码器层堆栈
          • 步骤 3.1 掩码自注意力机制
          • 步骤 3.2 - 编码器-解码器多头注意力或交叉注意力
          • 步骤 3.3 前馈神经网络
        • 步骤 4 线性分类器和 Softmax 用于生成输出概率
          • 归一化和残差连接
          • 解码器的输出
    • 现实生活中的 Transformer 模型
      • BERT
      • LaMDA
      • GPT 和 ChatGPT
      • 其他变体
    • 基准和性能
      • 机器翻译任务
      • 问答基准
      • NLI 基准
    • 与其他架构的比较
      • 循环层
      • 卷积层
    • 结论

翻译:《How Transformers Work: A Detailed Exploration of Transformer Architecture》

Transformer 如何工作:Transformer 架构的详细探索

探索 Transformer 的架构,这种模型通过自注意力机制彻底改变了数据处理方式。


得益于 Transformer 模型的出现和快速发展,深度学习领域正在经历一场巨变。

这些开创性的架构不仅重新定义了自然语言处理(NLP)的标准,还将其视野拓宽到彻底改变人工智能的众多方面。

Transformer 模型以其独特的注意机制和并行处理能力为特点,证明了在理解和生成人类语言方面取得了前所未有的准确性和效率的创新飞跃。

Transformer 架构最早出现在谷歌 2017 年的论文《Attention is all you need》中,它是像 ChatGPT 这样的开创性模型的核心,在人工智能社区引发了新一轮的热潮。它们在 OpenAI 的尖端语言模型中发挥了重要作用,并在 DeepMind 的 AlphaStar 中扮演了关键角色。

在这个人工智能的变革时代,Transformer 模型对于有抱负的数据科学家和 NLP 从业者的重要性怎么强调都不为过。

作为大多数最新技术飞跃的核心领域之一,本文旨在揭开这些模型背后的秘密。

什么是 Transformer?

Transformer 最初是为了解决序列转导问题或神经机器翻译而开发的,这意味着它们旨在解决任何将输入序列转换为输出序列的任务。这就是为什么它们被称为“Transformer”。

但让我们从头说起。

什么是 Transformer 模型?

Transformer 模型是一种神经网络,它学习序列数据的上下文并从中生成新数据。

简单地说:

Transformer 是一种人工智能模型,它通过分析大量文本数据中的模式来学习理解和生成类似人类的文本。

Transformer 是当前最先进的 NLP 模型,被认为是编码器-解码器架构的演进。然而,虽然编码器-解码器架构主要依赖循环神经网络(RNN)来提取序列信息,但 Transformer 完全没有这种循环性。

那么,它们是如何做到的呢?

它们专门设计用于通过分析不同元素之间的关系来理解上下文和意义,并且几乎完全依赖于一种称为“注意力”的数学技术来实现这一点。

Transformer 架构的黑盒图示
图片由作者提供。

历史背景

Transformer 模型源于谷歌 2017 年的一篇研究论文,是机器学习领域最新、最有影响力的发展之一。第一个 Transformer 模型在影响深远的论文《Attention is All You Need》中进行了解释。

这个开创性的概念不仅是理论上的进步,而且还得到了实际应用,特别是在 TensorFlow 的 Tensor2Tensor 包中。此外,哈佛 NLP 小组通过提供一份带注释的论文指南,并附有 PyTorch 实现,为这个新兴领域做出了贡献。您可以在我们的另一篇教程中了解更多关于如何从头开始实现 Transformer 的信息。

它们的推出极大地推动了该领域的发展,通常被称为 Transformer AI。这个革命性的模型为后续大型语言模型领域的突破(包括 BERT)奠定了基础。到 2018 年,这些发展已经被誉为 NLP 的一个分水岭。

2020 年,OpenAI 的研究人员宣布了 GPT-3。几周之内,人们就用它来创作诗歌、程序、歌曲、网站等等,迅速展示了 GPT-3 的多功能性,激发了全球用户的想象力。

在 2021 年的一篇论文中,斯坦福大学的学者们恰当地将这些创新称为基础模型,强调了它们在重塑人工智能方面的基础性作用。他们的工作凸显了 Transformer 模型不仅如何彻底改变了该领域,而且还推动了人工智能可实现目标的边界,预示着一个充满可能性的新时代。

我们正处在一个简单的神经网络等方法为我们带来新功能爆炸式增长的时代,” Ashish Vaswani,一位企业家,前谷歌高级研究科学家。

从 RNN 模型(如 LSTM)到 Transformer 模型在 NLP 问题上的转变

在 Transformer 模型推出之时,RNN 是处理序列数据的首选方法,其特点是输入具有特定的顺序。

RNN 的功能类似于前馈神经网络,但它按顺序逐个元素处理输入。

Transformer 的灵感来自于 RNN 中的编码器-解码器架构。然而,Transformer 模型完全基于注意力机制,而不是使用循环。

除了提高 RNN 性能外,Transformer 还提供了一种新的架构来解决许多其他任务,例如文本摘要、图像字幕和语音识别。

那么,RNN 的主要问题是什么?它们在 NLP 任务中效率低下的主要原因有两个:

  • 它们按顺序处理输入数据,一个接一个。这种循环过程无法利用专为并行计算设计的现代图形处理单元 (GPU),因此使得此类模型的训练速度相当慢。
  • 当元素彼此相距较远时,它们变得相当低效。这是因为信息在每一步都会传递,链条越长,信息在链条中丢失的可能性就越大。

从循环神经网络 (RNN)(如 LSTM)到 Transformer 在 NLP 中的转变是由这两个主要问题以及 Transformer 利用注意力机制改进来评估这两个问题的能力所驱动的:

  • 关注特定的单词,无论它们相距多远。
  • 提高性能速度。

因此,Transformer 成为 RNN 的自然改进。

接下来,让我们看看 Transformer 是如何工作的。


Transformer 架构

概述

Transformer 最初是为序列转导或神经机器翻译而设计的,擅长将输入序列转换为输出序列。它是第一个完全依赖自注意力来计算其输入和输出表示的转导模型,而无需使用序列对齐的 RNN 或卷积。Transformer 架构的核心特征是它们保留了编码器-解码器模型。

如果我们将用于语言翻译的 Transformer 视为一个简单的黑匣子,它会接收一种语言(例如英语)的句子作为输入,并输出其英语翻译。

将用于语言翻译的 Transformer 架构视为一个将英语翻译成西班牙语的黑匣子
图片由作者提供。

如果我们再深入一点,我们会发现这个黑匣子由两个主要部分组成:

  • 编码器接收我们的输入并输出该输入的矩阵表示。例如,英语句子“How are you?”
  • 解码器接收该编码表示并迭代生成输出。在我们的例子中,是翻译后的句子“¿Cómo estás?”

带有两个通用模块(编码器和解码器)的语言翻译 Transformer 架构
图片由作者提供。编码器-解码器的全局结构。

然而,编码器和解码器实际上都是一个具有多层(每层数量相同)的堆栈。所有编码器都具有相同的结构,输入进入每个编码器并传递给下一个。所有解码器也具有相同的结构,并从最后一个编码器和前一个解码器获取输入。

最初的架构由 6 个编码器和 6 个解码器组成,但我们可以根据需要复制任意数量的层。所以我们假设每种有 N 层。

带有两个通用模块(编码器和解码器)的语言翻译 Transformer 架构,每个模块重复 N 次
图片由作者提供。编码器-解码器的全局结构。多层结构。

现在我们对整个 Transformer 架构有了一个大概的了解,让我们专注于编码器和解码器,以更好地理解它们的工作流程:

编码器工作流程

编码器是 Transformer 架构的基本组成部分。编码器的主要功能是将输入标记转换为上下文化的表示。与早期独立处理标记的模型不同,Transformer 编码器捕获每个标记相对于整个序列的上下文。

其结构组成如下:

Transformer 编码器的架构
图片由作者提供。编码器的全局结构。

让我们将其工作流程分解为最基本的步骤:

步骤 1 - 输入嵌入

嵌入仅发生在最底层的编码器中。编码器首先使用嵌入层将输入标记(单词或子词)转换为向量。这些嵌入捕获标记的语义含义并将其转换为数值向量。

所有编码器都接收一个向量列表,每个向量的大小为 512(固定大小)。在最底层的编码器中,这将是词嵌入,但在其他编码器中,它将是其正下方编码器的输出。

编码器工作流程:输入嵌入如何工作
图片由作者提供。编码器工作流程。输入嵌入。

步骤 2 - 位置编码

由于 Transformer 没有像 RNN 那样的循环机制,它们使用添加到输入嵌入中的位置编码来提供有关序列中每个标记位置的信息。这使它们能够理解句子中每个单词的位置。

为此,研究人员建议采用各种正弦和余弦函数的组合来创建位置向量,从而使该位置编码器能够用于任何长度的句子。

在这种方法中,每个维度都由波的唯一频率和偏移表示,值范围从 -1 到 1,有效地表示每个位置。

编码器工作流程:位置编码如何工作
图片由作者提供。编码器工作流程。位置编码。

步骤 3 - 编码器层堆栈

Transformer 编码器由一堆相同的层组成(在原始 Transformer 模型中为 6 层)。

编码器层用于将所有输入序列转换为一个连续的、抽象的表示,该表示封装了从整个序列中学到的信息。该层包括两个子模块:

  • 一个多头注意力机制。
  • 一个全连接网络。

此外,它还在每个子层周围加入了残差连接,然后进行层归一化。

编码器工作流程:编码器层堆栈
图片由作者提供。编码器工作流程。编码器层堆栈

步骤 3.1 多头自注意力机制

在编码器中,多头注意力利用一种称为自注意力的专门注意力机制。这种方法使模型能够将输入中的每个单词与其他单词关联起来。例如,在给定的示例中,模型可能会学习将单词“are”与“you”联系起来。

这种机制允许编码器在处理每个标记时关注输入序列的不同部分。它根据以下内容计算注意力分数:

  • 查询(Query)是一个向量,表示注意力机制中输入序列中的特定单词或标记。
  • 键(Key)也是注意力机制中的一个向量,对应于输入序列中的每个单词或标记。
  • 每个值(Value)都与一个键相关联,并用于构建注意力层的输出。当查询和键匹配良好时(基本上意味着它们具有高注意力分数),相应的值将在输出中得到强调。

第一个自注意力模块使模型能够从整个序列中捕获上下文信息。查询、键和值不是执行单个注意力函数,而是线性投影 h 次。在这些查询、键和值的每个投影版本上,注意力机制并行执行,产生 h 维输出值。

详细架构如下:

编码器工作流程:多头注意力机制

矩阵乘法 (MatMul) - 查询和键的点积

一旦查询、键和值向量通过线性层,就会在查询和键之间执行点积矩阵乘法,从而创建分数矩阵。

分数矩阵确定每个单词应对其他单词施加多大程度的强调。因此,每个单词都被分配一个相对于同一时间步内其他单词的分数。分数越高表示关注度越高。

这个过程有效地将查询映射到其相应的键。

编码器工作流程:注意力机制 - 矩阵乘法
图片由作者提供。编码器工作流程。注意力机制 - 矩阵乘法。

降低注意力分数的大小

然后通过将分数除以查询和键向量维度的平方根来缩小分数。实施此步骤是为了确保更稳定的梯度,因为值的相乘可能导致过大的影响。

编码器工作流程:降低注意力分数
图片由作者提供。编码器工作流程。降低注意力分数。

对调整后的分数应用 Softmax

随后,对调整后的分数应用 softmax 函数以获得注意力权重。这会产生介于 0 和 1 之间的概率值。softmax 函数强调较高的分数,同时减弱较低的分数,从而增强模型有效确定哪些单词应获得更多注意力的能力。

编码器工作流程:对调整后的分数应用 Softmax
图片由作者提供。编码器工作流程。Softmax 调整后的分数。

将 Softmax 结果与值向量相结合

注意力机制的下一步是将从 softmax 函数导出的权重乘以值向量,从而产生一个输出向量。

在此过程中,仅保留具有高 softmax 分数的单词。最后,将此输出向量输入线性层进行进一步处理。

编码器工作流程:将 Softmax 结果与值向量相结合
图片由作者提供。编码器工作流程。将 Softmax 结果与值向量相结合。

我们最终得到了注意力机制的输出!

那么,您可能想知道为什么它被称为多头注意力?

请记住,在所有过程开始之前,我们将查询、键和值分成 h 次。这个称为自注意力的过程在每个较小的阶段或“头”中独立发生。每个头都独立发挥其魔力,产生一个输出向量。

这个集合通过一个最终的线性层,就像一个微调它们集体性能的过滤器。这里的美妙之处在于每个头的学习多样性,从而使编码器模型具有强大而多方面的理解能力。

步骤 3.2 归一化和残差连接

编码器层中的每个子层之后都有一个归一化步骤。此外,每个子层的输出都与其输入相加(残差连接),以帮助缓解梯度消失问题,从而允许更深的模型。这个过程在进入前馈神经网络之后也会重复。

编码器工作流程:多头注意力之后的归一化和残差连接
图片由作者提供。编码器工作流程。多头注意力之后的归一化和残差连接。

步骤 3.3 前馈神经网络

归一化残差输出的旅程继续,它会通过一个逐点前馈网络,这是进行额外细化的关键阶段。

将此网络想象成一对线性层,中间夹着一个 ReLU 激活函数,充当桥梁。处理完毕后,输出会走一条熟悉的路径:它会循环回来并与逐点前馈网络的输入合并。

这次重聚之后是另一轮归一化,确保一切都得到良好调整并为接下来的步骤做好同步。

编码器工作流程:前馈神经网络子层
图片由作者提供。编码器工作流程。前馈神经网络子层。

步骤 4 - 编码器的输出

最终编码器层的输出是一组向量,每个向量都代表具有丰富上下文理解的输入序列。然后,该输出将用作 Transformer 模型中解码器的输入。

这种仔细的编码为解码器铺平了道路,引导它在解码时注意输入中的正确单词。

可以把它想象成建造一座塔,你可以堆叠 N 个编码器层。这个堆栈中的每一层都有机会探索和学习注意力的不同方面,就像知识的层次一样。这不仅使理解多样化,而且可以显着增强 Transformer 网络的预测能力。

解码器工作流程

解码器的作用集中在制作文本序列上。与编码器类似,解码器也配备了一组类似的子层。它拥有两个多头注意力层、一个逐点前馈层,并在每个子层之后都加入了残差连接和层归一化。

编码器的全局结构
图片由作者提供。编码器的全局结构。

这些组件的功能方式类似于编码器的层,但有一个转折:解码器中的每个多头注意力层都有其独特的任务。

解码器过程的最后一步涉及一个线性层,用作分类器,最后再用一个 softmax 函数来计算不同单词的概率。

Transformer 解码器具有专门设计的结构,可以通过逐步解码编码信息来生成此输出。

值得注意的是,解码器以自回归方式运行,以一个开始标记启动其过程。它巧妙地使用先前生成的输出列表作为其输入,并与来自编码器的、富含来自初始输入的注意力信息的输出协同工作。

这种解码的顺序舞蹈一直持续到解码器达到一个关键时刻:生成一个标志着其输出创建结束的标记。

步骤 1 - 输出嵌入

在解码器的起跑线上,该过程与编码器的过程相似。在这里,输入首先通过一个嵌入层。

步骤 2 - 位置编码

在嵌入之后,再次像编码器一样,输入通过位置编码层。此序列旨在产生位置嵌入。

然后,这些位置嵌入被输送到解码器的第一个多头注意力层,在那里,针对解码器输入的注意力分数被仔细计算。

步骤 3 - 解码器层堆栈

解码器由一堆相同的层组成(在原始 Transformer 模型中为 6 层)。每个层都有三个主要子组件:

步骤 3.1 掩码自注意力机制

这类似于编码器中的自注意力机制,但有一个关键区别:它阻止位置关注后续位置,这意味着序列中的每个单词都不会受到未来标记的影响。

例如,在计算单词“are”的注意力分数时,重要的是“are”不能窥视序列中后续的单词“you”。

解码器工作流程:第一个多头注意力掩码
图片由作者提供。解码器工作流程。第一个多头注意力掩码。

这种掩码确保了对特定位置的预测只能依赖于其之前位置的已知输出。

步骤 3.2 - 编码器-解码器多头注意力或交叉注意力

在解码器的第二个多头注意力层中,我们看到了编码器和解码器组件之间的独特相互作用。在这里,来自编码器的输出同时扮演查询和键的角色,而来自解码器第一个多头注意力层的输出则充当值。

这种设置有效地将编码器的输入与解码器的输入对齐,使解码器能够识别和强调编码器输入中最相关的部分。

在此之后,来自第二个多头注意力层的输出然后通过一个逐点前馈层进行细化,从而进一步增强了处理。

解码器工作流程:编码器-解码器注意力
图片由作者提供。解码器工作流程。编码器-解码器注意力。

在这个子层中,查询来自前一个解码器层,而键和值来自编码器的输出。这使得解码器中的每个位置都可以关注输入序列中的所有位置,从而有效地将来自编码器的信息与解码器中的信息集成在一起。

步骤 3.3 前馈神经网络

与编码器类似,每个解码器层都包含一个全连接的前馈网络,该网络分别且相同地应用于每个位置。

步骤 4 线性分类器和 Softmax 用于生成输出概率

数据通过 Transformer 模型的旅程最终以通过一个最终的线性层而告终,该线性层充当分类器。

该分类器的大小对应于所涉及的总类别数(词汇表中包含的单词数)。例如,在一个有 1000 个不同类别代表 1000 个不同单词的场景中,分类器的输出将是一个包含 1000 个元素的数组。

然后将此输出引入 softmax 层,该层将其转换为一系列概率分数,每个分数都介于 0 和 1 之间。这些概率分数中最高的一个是关键,其对应的索引直接指向模型预测为序列中下一个的单词。

解码器工作流程:Transformer 的最终输出
图片由作者提供。解码器工作流程。Transformer 的最终输出。

归一化和残差连接

每个子层(掩码自注意力、编码器-解码器注意力、前馈网络)之后都有一个归一化步骤,并且每个子层周围还包含一个残差连接。

解码器的输出

最后一层的输出通过一个线性层和一个 softmax 层转换为一个预测序列,以生成词汇表上的概率。

解码器在其操作流程中,将新生成的输出合并到其不断增长的输入列表中,然后继续解码过程。这个循环重复进行,直到模型预测出一个特定的标记,标志着完成。

以最高概率预测的标记被指定为结束类别,通常由结束标记表示。

再次记住,解码器不限于单个层。它可以由 N 个层构成,每个层都在从编码器及其前一层接收到的输入的基础上构建。这种分层架构允许模型使其焦点多样化,并在其注意力头之间提取不同的注意力模式。

这种多层方法可以显着增强模型的预测能力,因为它对不同的注意力组合有了更细致的理解。

最终的架构类似于这样(来自原始论文):

Transformer 的原始结构
图片由作者提供。Transformer 的原始结构。

为了更好地理解这个架构,我建议您按照用 PyTorch 构建 Transformer 的教程从头开始应用 Transformer。

现实生活中的 Transformer 模型

BERT

谷歌于 2018 年发布的 BERT 是一个开源的自然语言处理框架,它以其独特的双向训练彻底改变了 NLP,这使得模型能够对下一个单词应该是什么做出更具上下文信息的预测。

通过从一个单词的各个方面理解上下文,BERT 在问答和理解模糊语言等任务上的表现优于以前的模型。其核心使用 Transformer,动态连接每个输出和输入元素。

BERT 在维基百科上进行了预训练,在各种 NLP 任务中表现出色,促使谷歌将其集成到其搜索引擎中以实现更自然的查询。这项创新引发了一场开发先进语言模型的竞赛,并显着提高了该领域处理复杂语言理解的能力。

要了解有关 BERT 的更多信息,您可以查看我们介绍 BERT 模型的另一篇文章。

LaMDA

LaMDA(对话应用语言模型)是谷歌开发的基于 Transformer 的模型,专为对话任务设计,并在 2021 年谷歌 I/O 主题演讲中发布。它们旨在生成更自然、更具上下文相关性的响应,从而增强各种应用中的用户交互。

LaMDA 的设计使其能够理解和响应广泛的主题和用户意图,使其成为聊天机器人、虚拟助手以及其他动态对话至关重要的交互式 AI 系统应用的理想选择。

这种对对话理解和响应的关注标志着 LaMDA 在自然语言处理和 AI 驱动的通信领域取得了重大进步。

如果您有兴趣进一步了解 LaMDA 模型,可以通过 LaMDA 的文章获得更好的理解。

GPT 和 ChatGPT

由 OpenAI 开发的 GPT 和 ChatGPT 是先进的生成模型,以其生成连贯且上下文相关的文本的能力而闻名。GPT-1 是其于 2018 年 6 月发布的第一个模型,而最具影响力的模型之一 GPT-3 则于两年后的 2020 年发布。

这些模型擅长各种任务,包括内容创作、对话、语言翻译等。GPT 的架构使其能够生成与人类写作非常相似的文本,使其在创意写作、客户支持甚至编码辅助等应用中非常有用。ChatGPT 是为对话上下文优化的变体,擅长生成类似人类的对话,从而增强了其在聊天机器人和虚拟助手中的应用。

其他变体

基础模型,特别是 Transformer 模型的领域正在迅速扩大。一项研究确定了 50 多个重要的 Transformer 模型,而斯坦福大学的小组评估了其中的 30 个,承认该领域的快速发展。NLP Cloud 是一家创新的初创公司,是 NVIDIA Inception 计划的一部分,它在商业上利用大约 25 个大型语言模型为航空公司和药店等各个行业服务。

将这些模型开源的趋势越来越明显,像 Hugging Face 的模型中心这样的平台处于领先地位。此外,还开发了许多基于 Transformer 的模型,每个模型都专门用于不同的 NLP 任务,展示了该模型在不同应用中的多功能性和效率。

您可以在另一篇关于基础模型的文章中了解更多关于所有现有基础模型的信息,该文章讨论了它们是什么以及哪些是使用最广泛的。

基准和性能

对 NLP 中 Transformer 模型的性能进行基准测试和评估涉及一种系统的方法来评估其有效性和效率。

根据任务的性质,有不同的方法和资源可以做到这一点:

机器翻译任务

在处理机器翻译任务时,您可以利用 WMT(机器翻译研讨会)等标准数据集,其中机器翻译系统会遇到各种语言对,每种语言对都带来独特的挑战。

BLEU、METEOR、TER 和 chrF 等指标可作为导航工具,引导我们实现准确性和流畅性。

此外,跨新闻、文学和技术文本等不同领域进行测试可确保机器翻译系统的适应性和多功能性,使其成为数字世界中真正的多语言专家。

问答基准

为了评估问答模型,我们使用特殊的问题和答案集合,例如 SQuAD(斯坦福问答数据集)、Natural Questions 或 TriviaQA。

每一个都像一个有自己规则的不同游戏。例如,SQuAD 是关于在给定文本中寻找答案,而其他的则更像一个来自任何地方的问题的问答游戏。

为了看看这些程序做得如何,我们使用精确率、召回率、F1 分数,有时甚至使用完全匹配分数等分数。

NLI 基准

在处理自然语言推理 (NLI) 时,我们使用 SNLI(斯坦福自然语言推理)、MultiNLI 和 ANLI 等特殊数据集。

这些就像是语言变体和棘手案例的大型图书馆,帮助我们了解我们的计算机对不同类型句子的理解程度。我们主要检查计算机在理解陈述是否一致、矛盾或不相关方面的准确性。

研究计算机如何解决棘手的语言问题也很重要,例如当一个词指代前面提到的东西时,或者理解“不”、“所有”和“一些”。

与其他架构的比较

在神经网络的世界中,通常将两种突出的结构与 Transformer 进行比较。它们各自提供了独特的优势和挑战,专为特定类型的数据处理而量身定制。RNN(在本文中已经多次出现)和卷积层。

循环层

循环层是循环神经网络 (RNN) 的基石,擅长处理序列数据。这种架构的优势在于其执行顺序操作的能力,这对于语言处理或时间序列分析等任务至关重要。在循环层中,前一步的输出作为下一步的输入反馈到网络中。这种循环机制使网络能够记住以前的信息,这对于理解序列中的上下文至关重要。

然而,正如我们已经讨论过的,这种顺序处理有两个主要含义:

  • 由于每一步都依赖于前一步,因此并行处理具有挑战性,这可能导致更长的训练时间。
  • 由于梯度消失问题,它们通常难以处理长期依赖关系,即网络在学习序列中相距较远的数据点时效率降低。

Transformer 模型与使用循环层的架构有很大不同,因为它们缺乏循环性。正如我们之前所见,Transformer 的注意力层评估了这两个问题,使其成为用于 NLP 应用的 RNN 的自然演进。

卷积层

另一方面,卷积层是卷积神经网络 (CNN) 的构建块,以其处理图像等空间数据的效率而闻名。

这些层使用在输入数据上扫描以提取特征的内核(过滤器)。这些内核的宽度可以调整,允许网络根据手头的任务专注于小或大特征。

虽然卷积层在捕获数据的空间层次结构和模式方面异常出色,但它们在处理长期依赖关系方面面临挑战。它们本身不考虑序列信息,因此不太适合需要理解序列顺序或上下文的任务。

这就是为什么 CNN 和 Transformer 专为不同类型的数据和任务而设计的原因。CNN 因其处理空间信息的效率而在计算机视觉领域占据主导地位,而 Transformer 因其理解远程依赖关系的能力而成为复杂顺序任务(尤其是在 NLP 中)的首选。

结论

总之,Transformer 已成为人工智能、NLP 领域的一项重大突破。

通过其独特的自注意力机制有效地管理序列数据,这些模型已经超越了传统的 RNN。它们能够更有效地处理长序列并并行化数据处理,从而显着加快了训练速度。

谷歌的 BERT 和 OpenAI 的 GPT 系列等开创性模型体现了 Transformer 在增强搜索引擎和生成类似人类文本方面的变革性影响。

因此,它们已成为现代机器学习中不可或缺的一部分,推动了人工智能的边界,并在技术进步方面开辟了新的途径。

如果您想深入了解 Transformer 及其用法,我们关于 Transformer 和 Hugging Face 的文章是一个完美的开始!您还可以通过我们的深度指南学习如何用 PyTorch 构建 Transformer。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/93522.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93522.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/93522.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS安全和逆向系列教程 第20篇:Objective-C运行时机制深度解析与Hook技术

iOS安全和逆向系列教程 第20篇:Objective-C运行时机制深度解析与Hook技术 引言 在上一篇文章中,我们深入学习了ARM64汇编语言的基础知识,掌握了从寄存器操作到指令分析的完整技能体系。现在,我们将把这些底层知识与iOS应用的高层逻辑联系起来,深入探讨Objective-C运行时…

IDEA中全局搜索快捷键Ctrl+Shift+F为何失灵?探寻原因与修复指南

在软件开发中,高效地查找和管理代码是提升生产力的关键。IntelliJ IDEA,作为一款功能强大的集成开发环境(IDE),提供了丰富的搜索功能,帮助开发者迅速定位代码、资源、甚至是IDE功能本身。 在 IntelliJ IDE…

【学习笔记】Lean4 定理证明 ing

文章目录概述Lean4 定理证明初探示例:证明 1 1 2示例:证明 2 * (x y) 2 * x 2 * yLean4 定理证明基础命题与定理命题(Proposition)定理(Theorem)量词策略概述 Lean证明是指在Lean环境中,通…

墨者:SQL注入漏洞测试(HTTP头注入)

墨者学院:SQL注入漏洞测试(HTTP头注入)🚀 1. 什么是HTTP头注入?🔍 HTTP头注入是指攻击者通过篡改HTTP请求头部的字段(如User-Agent、Referer、Cookie、Host等),将恶意SQL代码插入到后端数据库查…

linux_前台,后台进程

*在用户访问端口时,操作系统会形成对应的session,在其的内部进一步形成bash等进程 *一个会话只有一个前台进程,可以有多个后台进程,前台与后台进程的区别在于谁拥有键盘的使用权*前台与后台进程都可以访问显示器但是后台无法访问标准输入获取…

spring data mongodb 入门使用手册

<!--pom.xml引入依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>文档映射类Student.java import lombok.Data; import lombok.NoArgsCons…

Fastjson2常用操作大全:对象、字符串、集合、数组、Map与JSON互转实战

高性能&#xff1a; 核心解析器和生成器经过深度优化&#xff0c;性能远超许多同类库。 功能丰富&#xff1a; 支持标准JSON、JSONPath查询、泛型处理、日期格式化、自定义序列化/反序列化等。 易用性&#xff1a; API 设计简洁直观&#xff0c;JSON 工具类提供了最常用的 toJS…

大模型——字节Coze重磅开源!Dify何去何从

大模型——字节Coze重磅开源!Dify何去何从 想必很多人盼了很久,就在昨晚,字节Coze终于开源了!Coze Studio 是字节跳动新一代 AI Agent 开发平台扣子(Coze)的开源版本。 提供 AI Agent 开发所需的全部核心技术:Prompt、RAG、Plugin、Workflow,使得开发者可以聚焦创造 A…

NaVid——基于单目RGB捕获的视频让VLM规划「连续环境中VLN」的下一步:无需地图/里程计/深度信息(含MP3D/R2R/RxR,及VLN-CE的详解)

前言 因为我司「七月在线」准备于25年7月底复现下NaVILA&#xff0c;而在研究NaVILA的过程中&#xff0c;注意到了这个NaVid 虽然NaVid目前已经不是VLN sota了&#xff0c;但其首次展示了VLM在无需地图、里程计或深度输入的情况下&#xff0c;能够实现优秀的导航性能且对后来…

【Vue2】结合chrome与element-ui的网页端条码打印

所有文章都是免费查看的&#xff0c;如果有无法查看的情况&#xff0c;烦请联系我修改哈~ 序言 为什么要做这个呢&#xff1f;因为所需要的条码打印功能比较简单&#xff0c;符合需要即可&#xff0c;但是呢网上查看了发现并没有合适的开源项&#xff0c;其他成熟的软件收费又超…

循环神经网络——动手学深度学习7

环境&#xff1a;PyCharm python3.8 &#x1f449;【循环神经网络】(recurrent neural network&#xff0c;RNN) RNN通过 引入状态变量存储过去的信息和当前的输入&#xff0c;从而可以确定当前的输出。状态变量捕捉序列的时序依赖&#xff0c;是处理文本、时间序列等数据的…

Java面试宝典:MySQL8新特性底层原理

一、降序索引的革新 1.1 降序索引的核心概念 MySQL 8.0 实现了真正的降序索引(Descending Index) 支持,这是数据库引擎层面的重大改进: 存储引擎支持:仅 InnoDB 存储引擎支持降序索引,且仅适用于 B+Tree 索引结构 语法显式声明:通过 DESC 关键字显式指定字段的排序方向…

前端-html+CSS基础到高级(三)html基础和开发工具

一、html语法规范什么是注释?在同学上课学习时&#xff0c;我们会在书本段落间记录内容的注解&#xff0c;方便下次看到此处理解。问题&#xff1a;我们在书本段落间记录下的注解是为了给谁看的&#xff1f; 下次的阅读课本者&#xff08;自己&#xff09;。程序员在写代码时也…

-Dspring.output.ansi.enabled=ALWAYS 设置彩色日志不生效

-Dspring.output.ansi.enabledALWAYS 设置彩色日志不生效 问题原因&#xff1a;使用的自定义的 logback-spring.xml日志需要改一下 <?xml version"1.0" encoding"UTF-8"?> <configuration><appender name"STDOUT" class"c…

C# 判断语句深度解析

C# 判断语句深度解析 引言 在编程领域,C# 是一种广泛使用的面向对象的编程语言,常用于构建各种应用程序,从桌面到移动应用,再到网站服务。C# 的核心特性之一是其强大的控制流机制,其中包括条件判断。本文将深入探讨 C# 中的判断语句,包括它们的类型、使用场景以及最佳实…

Ambari 3.0.0 全网首发支持 Ubuntu 22!

本月我们团队带来了一个重磅进展&#xff1a;Ambari 3.0.0 全网首发支持 Ubuntu 22&#xff01; 经过数月筹备和持续迭代&#xff0c;终于让 Ambari 以及大数据基础组件可以顺利运行在 Ubuntu 22 上。 需求来源&#xff1a;用户呼声决定研发方向 年初有位小伙伴私信我们&#x…

Android Camera capture

序 想了下还是挤挤时间&#xff0c;把相机这基础流程写完吧&#xff0c;前面每篇写的都还是挺耗时的&#xff08;就是累了&#xff0c;想偷偷懒&#xff0c;哈哈哈哈&#xff09;&#xff0c;那接着前面的几篇文章&#xff0c;给这一些列写上一个中规中矩的结局吧~ APP层 以下是…

落霞归雁思维框架应用(十) ——在职考研 199 管综 + 英语二 30 周「顺水行舟」上岸指南

落霞归雁思维框架应用&#xff08;十&#xff09; ——在职考研 199 管综 英语二 30 周「顺水行舟」上岸指南 CSDN 首发 | 作者&#xff1a;落霞归雁 | 2025-08-01 开场&#xff1a;把 199英二 从“两座大山”变成“两条顺流” 在职党最怕两句话&#xff1a; “管综题量太大…

自动调优 vLLM 服务器参数(实战指南)

1. 操作步骤 该脚本能够自动搜索最优的vLLM服务器参数组合&#xff08;包括max-num-seqs和max-num-batched-tokens&#xff09;&#xff0c;在满足端到端延迟和前缀缓存命中率等要求的同时&#xff0c;实现吞吐量最大化。 1.1 前提条件 克隆 vLLM 并切到目标分支git clone http…

【腾讯云】EdgeOne免费版实现网站加速与安全防护

作为一名个人站长&#xff0c;我深知在有限的预算下如何为网站提供稳定、快速的服务是关键。腾讯云推出了 EdgeOne免费版 https://edgeone.ai/zh/redemption已经有一段时间。结合我的实际体验&#xff0c;我想从国内备案域名的角度&#xff0c;分享一下如何利用这个工具提升网站…