Connect with us

AI 入门 101

什么是 Transformer 神经网络?

mm

Transformer 神经网络描述

Transformers 是一种专门用于处理和解释序列数据的机器学习模型,使其适合用于自然语言处理任务。为了更好地了解什么是机器学习 Transformer 以及它们如何操作,让我们更详细地了解 Transformer 模型和驱动它们的机制。

本文将涵盖:

  • 序列到序列模型
  • Transformer 神经网络架构
  • 注意力机制
  • Transformer 和 RNNs/LSTMs 之间的区别

序列到序列模型

序列到序列模型是一种用于将一种类型的序列转换为另一种类型序列的 NLP 模型。序列到序列模型有多种类型,例如 循环神经网络 模型和 长短期记忆(LSTM) 模型。

传统的序列到序列模型,如 RNN 和 LSTM,不是本文的重点,但了解它们对于理解 Transformer 模型如何操作和为什么优于传统序列到序列模型至关重要。

简而言之,RNN 模型和 LSTM 模型由编码器和解码器网络组成,它们分析输入数据的各个时间步。编码器模型负责形成输入数据中单词的编码表示。在每个时间步,编码器网络接收输入序列和前一个时间步的隐藏状态。隐藏状态值会在数据通过网络时更新,直到最后一个时间步,生成一个“上下文向量”。然后将上下文向量传递给解码器网络,用于通过预测每个时间步的输入单词最可能的单词来生成目标序列。

这些模型可以通过使用“注意力机制”来增强。注意力机制定义了网络应该关注输入向量的哪些部分来生成正确的输出。换句话说,注意力机制允许 Transformer 模型处理一个输入单词,同时也关注其他输入单词中的相关信息。注意力机制还可以屏蔽不包含相关信息的单词。

Transformer 神经网络架构

我们稍后将更详细地介绍注意力机制,但现在让我们从更高的层次上了解一下 Transformer 神经网络的架构

一般来说,Transformer 神经网络的结构如下:

虽然这种一般结构可能会在不同网络之间变化,但核心部分将保持相同:位置编码、单词向量、注意力机制、前馈神经网络。

位置编码和单词向量

Transformer 神经网络 通过将输入序列转换为两个其他序列来操作。Transformer 生成单词向量嵌入和位置编码的序列。

单词向量嵌入 只是将文本表示为神经网络可以处理的数字格式。同时,位置编码是包含有关当前单词在输入句子中相对于其他单词的位置信息的向量化表示。

其他基于文本的神经网络模型,如 RNN 和 LSTM,使用向量来表示输入数据中的单词。这些向量嵌入将单词映射到固定值,但这限制了单词可以在不同上下文中使用。Transformer 网络通过使用正弦函数使单词值更加灵活来解决这个问题,从而使单词向量可以根据单词在句子中的位置取不同的值。

这允许神经网络模型保留有关输入单词相对位置的信息,即使向量通过 Transformer 网络的层传递。

位置编码和单词向量嵌入相加,然后传递给编码器和解码器网络。虽然 Transformer 神经网络使用编码器/解码器模式,就像 RNN 和 LSTM 一样,但它们之间的一个主要区别是所有输入数据同时被输入到网络中,而 RNN 和 LSTM 则是顺序输入数据。

编码器网络负责将输入转换为网络可以学习的表示,而解码器网络则执行相反的操作,将编码转换为用于生成输出句子中最可能单词的概率分布。编码器和解码器网络都有注意力机制。

由于 GPU 能够进行并行处理,多个注意力机制并行运行,计算所有输入单词的相关信息。这使得神经网络能够学习单词在句子中的上下文,并且这是 Transformer 网络相对于 RNN 和 LSTM 的主要优势之一。

注意力机制

注意力机制是 Transformer 网络中最重要的部分。注意力机制使得 Transformer 模型超越了典型的 RNN 或 LSTM 模型的注意力限制。传统的序列到序列模型丢弃所有中间状态,只使用最终状态/上下文向量来初始化解码器网络以生成输入序列的预测。

丢弃所有内容,只使用最终上下文向量,在输入序列较短时效果还可以。但是,当输入序列的长度增加时,使用这种方法的模型性能会下降。这是因为将长输入序列总结为一个向量非常困难。解决方案是增加模型的“注意力”,并利用中间编码器状态来为解码器构建上下文向量。

注意力机制定义了其他输入标记在为任何给定标记创建编码时对模型的重要性。例如,“it”是一个常见的代词,通常用于指代动物时不知道其性别。注意力机制将使 Transformer 模型确定在当前上下文中“it”指的是一只松鼠,因为它可以检查输入句子中的所有相关单词。

注意力机制可以以三种不同的方式使用:编码器到解码器、编码器仅、解码器仅。

编码器-解码器注意力使解码器在生成输出时考虑输入序列,而编码器仅和解码器仅注意力机制使网络分别考虑前一个和当前序列的所有部分。

注意力机制的构造可以分为五个步骤:

  1. 计算所有编码器状态的分数。
  2. 计算注意力权重
  3. 计算上下文向量
  4. 使用前一个时间步的输出更新上下文向量
  5. 使用解码器生成输出

第一步是让解码器计算所有编码器状态的分数。这是通过训练解码器网络来完成的,解码器网络是一个基本的前馈神经网络。当解码器在输入序列的第一个单词上训练时,尚未创建内部/隐藏状态,因此通常使用编码器的最后一个状态作为解码器的前一个状态。

为了计算注意力权重,使用 softmax 函数生成注意力权重的概率分布。

一旦计算了注意力权重,就需要计算上下文向量。这是通过将注意力权重和隐藏状态相乘来完成的,每个时间步都这样做。

计算上下文向量后,它与前一个时间步生成的单词一起用于生成输出序列中的下一个单词。由于解码器在第一个时间步没有前一个输出可以参考,因此通常使用一个特殊的“开始”标记代替。

Transformer 与 RNNs/LSTMs 之间的区别

让我们快速介绍一下 RNN 和 LSTMs 之间的一些区别。

RNN 按顺序处理输入,同时保持和修改一个隐藏状态向量。RNN 的隐藏状态通常包含很少与早期输入相关的信息。新的输入通常会覆盖当前状态,从而导致信息丢失并随时间降低性能。

相比之下,Transformer 模型一次处理整个输入序列。注意力机制允许每个输出单词都能从每个输入和隐藏状态中获取信息,使得网络对于长文本更加可靠。

LSTM 是 RNN 的一种修改版本,用于处理更长的输入序列。LSTM 架构使用一种称为“门”的结构,具有“输入门”、“输出门”和“忘记门”。门控设计解决了 RNN 模型中常见的信息丢失问题。数据仍然是顺序处理的,架构的递归设计使得 LSTM 模型难以使用并行计算进行训练,从而使得训练时间更长。

LSTM 工程师经常将注意力机制添加到网络中,这被认为可以提高模型的性能。然而,后来发现注意力机制本身可以提高准确性。这一发现导致了使用注意力机制和并行计算(感谢 GPU)的 Transformer 网络的创建。

博客作者和程序员,专攻 Machine Learning Deep Learning 领域。Daniel 希望帮助他人利用 AI 的力量为社会做好事。