AI 101
什么是 Transformer 神经网络?
Transformer 神经网络描述
变压器 是一种机器学习模型,专门处理和解释顺序数据,使其成为自然语言处理任务的最佳选择。为了更好地了解机器学习 Transformer 是什么以及它们如何运行,让我们仔细研究一下 Transformer 模型以及驱动它们的机制。
本文将涵盖:
- 序列到序列模型
- Transformer 神经网络架构
- 注意力机制
- Transformer 和 RNN/LSTM 之间的差异
序列到序列模型
序列到序列模型是 NLP 模型的一种,用于将一种类型的序列转换为另一种类型的序列。 序列到序列模型有多种类型,例如 递归神经网络 模型和 长短期记忆 (LSTM) 楷模。
RNN 和 LSTMS 等传统的序列到序列模型不是本文的重点,但有必要了解它们,以了解 Transformer 模型的运行方式以及它们为何优于传统的序列到序列模型。
简而言之,RNN 模型和 LSTM 模型由编码器和解码器网络组成,用于分析不同时间步长的输入数据。编码器模型负责形成输入数据中单词的编码表示。在每个时间步,编码器网络都会从该系列中的前一个时间步获取输入序列和隐藏状态。当数据通过网络时,隐藏状态值会更新,直到最后一个时间步,生成“上下文向量”。然后,上下文向量被传递到解码器网络,解码器网络用于通过预测与各个时间步长的输入单词配对的最可能的单词来生成目标序列。
这些模型可以通过使用“注意机制”。 注意力机制定义了网络应该关注输入向量的哪些部分以生成正确的输出。 换句话说,注意力机制让 Transformer 模型处理一个输入单词,同时也关注其他输入单词包含的相关信息。 注意力机制还会掩盖不包含相关信息的单词。
Transformer 神经网络架构
稍后我们将更详细地讨论注意力机制,但现在让我们看一下 Transformer 神经网络的架构 在更高的层次上。
一般来说,变压器神经网络如下所示:
虽然这种一般结构可能会在网络之间发生变化,但核心部分将保持不变:位置编码、词向量、注意力机制、前馈神经网络。
位置编码和词向量
变压器神经网络的运行 通过获取一系列输入并将这些输入转换为另外两个序列。 转换器生成一系列词向量嵌入和位置编码。
词向量嵌入 只是以神经网络可以处理的数字格式表示的文本。 同时,位置编码是矢量化表示,包含有关当前单词在输入句子中相对于其他单词的位置的信息。
其他基于文本的神经网络模型(例如 RNN 和 LSTM)使用向量来表示输入数据中的单词。 这些向量嵌入将单词映射到常量值,但这有限制,因为单词可以在不同的上下文中使用。 变压器网络通过使单词值更加灵活来解决这个问题,使用正弦函数让单词向量根据单词在句子中的位置采用不同的值。
这使得神经网络模型能够保留有关输入单词相对位置的信息,即使在向量穿过变压器网络的各层之后也是如此。
位置编码和词向量嵌入相加,然后传递到编码器和解码器网络。 虽然 Transformer 神经网络像 RNN 和 LSTM 一样使用编码器/解码器模式,但它们之间的一个主要区别是所有输入数据同时输入网络,而在 RNN/LSTM 中,数据按顺序传递。
编码器网络负责将输入转换为网络可以学习的表示,而解码器网络则相反,将编码转换为概率分布,用于生成输出句子中最可能的单词。 至关重要的是,编码器和解码器网络都有注意力机制。
由于 GPU 能够并行处理,因此并行使用多个注意力机制,计算所有输入单词的相关信息。 这种同时关注多个单词的能力(称为“多头”注意力)有助于神经网络学习句子中单词的上下文,这是 Transformer 网络相对于 RNN 和 LSTM 的主要优势之一。
注意力机制
注意力机制是变压器网络最重要的部分。 注意力机制使 Transformer 模型能够超越典型 RNN 或 LSTM 模型的注意力限制。 传统的序列到序列模型在初始化解码器网络以生成有关输入序列的预测时会丢弃所有中间状态,并仅使用最终状态/上下文向量。
当输入序列相当小时,丢弃除最终上下文向量之外的所有内容都可以。 然而,随着输入序列长度的增加,使用此方法时模型的性能将会下降。 这是因为将长输入序列总结为单个向量变得非常困难。 解决方案是增加模型的“注意力”并利用中间编码器状态为解码器构建上下文向量。
注意力机制定义了在为任何给定标记创建编码时其他输入标记对模型的重要性。 例如,“it”是一个通用代词,通常在性别未知时用来指代动物。 注意力机制可以让变压器模型确定在当前上下文中“it”指的是松鼠,因为它可以检查输入句子中的所有相关单词。
注意力机制可以以三种不同的方式使用:编码器到解码器、仅编码器、仅解码器。
编码器-解码器注意力机制让解码器在生成输出时考虑输入序列,而仅编码器和仅解码器注意力机制让网络分别考虑先前序列和当前序列的所有部分。
注意力机制的构建可以分为五个步骤:
- 计算所有编码器状态的分数。
- 计算注意力权重
- 计算上下文向量
- 使用先前时间步输出更新上下文向量
- 使用解码器生成输出
第一步是让解码器计算所有编码器状态的分数。 这是通过训练解码器网络来完成的,解码器网络是一个基本的前馈神经网络。 当解码器在输入序列中的第一个字上进行训练时,尚未创建内部/隐藏状态,因此编码器的最后状态通常用作解码器的先前状态。
为了计算注意力权重,使用 softmax 函数生成注意力权重的概率分布。
一旦计算了注意力权重,就需要计算上下文向量。 这是通过将每个时间步的注意力权重和隐藏状态相乘来完成的。
计算出上下文向量后,它将与前一个时间步骤中生成的单词一起使用,以生成输出序列中的下一个单词。 由于解码器在第一个时间步中没有先前的输出可供参考,因此通常使用特殊的“开始”标记来代替。
Transformer 与 RNN/LSTM 之间的差异
让我们快速了解一下 RNN 和 LSTM 之间的一些差异。
RNN 按顺序处理输入,而隐藏状态向量则由输入单词在网络中移动时维护和更改。 RNN 的隐藏状态通常包含很少的有关早期输入的相关信息。 新输入通常会覆盖当前状态,这会导致信息丢失并随着时间的推移降低性能。
相比之下,变压器模型会立即处理整个输入序列。 注意力机制允许每个输出单词都受到每个输入和隐藏状态的通知,从而使网络对于长文本片段更加可靠。
LSTM 是 RNN 的修改版本,经过调整以处理更长的输入序列。 LSTM架构使用一种称为“门”的结构,具有“输入门”、“输出门”和“遗忘门”。 门控设计处理 RNN 模型常见的信息丢失问题。 数据仍然按顺序处理,并且该架构的循环设计使得 LSTM 模型难以使用并行计算进行训练,从而使得整体训练时间更长。
LSTM 工程师经常向网络添加注意力机制,众所周知,这可以提高模型的性能。 然而,最终发现仅靠注意力机制就可以提高准确性。 这一发现催生了 Transformer 网络的创建,该网络使用注意力机制和 GPU 的并行计算。