所有WIKI > T字母 > 什么是Transformer模型

什么是Transformer模型

Transformer模型(直译为“变换器”)是一种采用注意力机制深度学习模型,这一机制可以按输入数据各部分重要性的不同而分配不同的权重。该模型主要用于自然语言处理(NLP)与 计算机视觉(CV)领域。

循环神经网络(RNN)一样,Transformer模型旨在处理自然语言等顺序输入数据,可应用于 翻译API文本摘要API 等任务。而与RNN不同的是,Transformer模型能够一次性处理所有输入数据。注意力机制 可以为输入序列中的任意位置提供上下文。如果输入数据是自然语言,则Transformer不必像RNN一样一次只处理一个单词,这种架构允许更多的并行计算,并以此减少训练时间。

Transformer模型于2017年由谷歌大脑的一个团队推出,现已逐步取代长短期记忆(LSTM)等RNN模型成为了NLP问题的首选模型。并行化优势允许其在更大的数据集上进行训练。这也促成了BERTGPT等预训练模型的发展。这些系统使用了维基百科、Common Crawl等大型语料库进行训练,并可以针对特定任务进行微调。Transformer模型架构图如下:

Transformer模型

Transformer模型出现的背景

在Transformer模型之前,大多数最先进的NLP系统都依赖于诸如LSTM门控循环单元(GRU)等门控RNN模型,并在此基础上增加了注意力机制。Transformer正是在注意力机制的基础上构建的,但其没有使用RNN结构,这表明仅依靠注意力机制就能在性能上比肩加上了注意力机制的RNN模型。

顺序处理

门控RNN模型按顺序处理每一个标记(token)并维护一个状态向量,其中包含所有已输入数据的表示。如要处理第𝑛{\textstyle n}个标记,模型将表示句中到第𝑛−1{\textstyle n-1}个标记为止的状态向量与最新的第𝑛{\textstyle n}个标记的信息结合在一起创建一个新的状态向量,以此表示句中到第𝑛{\textstyle n}个标记为止的状态。从理论上讲,如果状态向量不断继续编码每个标记的上下文信息,则来自一个标记的信息可以在序列中不断传播下去。但在实践中,这一机制是有缺陷的:梯度消失问题使得长句末尾的模型状态会缺少前面标记的精确信息。此外,每个标记的计算都依赖于先前标记的计算结果,这也使得其很难在现代深度学习硬件上进行并行处理,这导致了RNN模型训练效率低下。

自注意力机制

注意力机制解决了上述这些问题。这一机制让模型得以提取序列中任意先前点的状态信息。注意力层能够访问所有先前的状态并根据学习到的相关性度量对其进行加权,从而提供相距很远的标记的相关信息。

翻译API 是一个能够突显注意力机制优势的例子,其中上下文对于句子中单词的含义至关重要。例如在一个将英语翻译为法语的系统中,法语输出的第一个词很可能取决于英语输入的前几个词。然而在经典的LSTM模型中,为了产生法语输出的第一个单词,模型需要访问处理完最后一个英语单词后得到的状态向量。理论上这个向量包含了整个英语句子的信息,从而为模型提供所有必要的知识。

然而在实践中,LSTM通常无法很好地保存这些信息。可以通过添加注意力机制来解决这个问题:解码器可以访问每个英语输入单词的状态向量,而不仅仅是最后一个单词。同时模型可以学习注意力权重,这些权重决定了对每个英语输入状态向量的关注程度。

在RNN模型中添加注意力机制能提高模型的性能。而Transformer架构的发展表明,注意力机制本身就足够强大,并且不需要像RNN模型一样再对数据进行顺序循环处理。Transformer模型采用了没有RNN模型的注意力机制,它能够同时处理所有标记并计算它们之间的注意力权重。由于注意力机制仅使用来自之前层中其他标记的信息,因此可以并行计算所有标记以提高训练速度。

Transformer 概览

我们假定在机器翻译任务中,将一种语言的一个句子作为输入,然后将其翻译成另一种语言的一个句子作为输出,在这个过程中看看相关技术的作用。

编码器-解码器/Encoder-Decoder

原始的Transformer模型使用编码器-解码器(encoder–decoder)架构。编码器由逐层迭代处理输入的编码层组成,而解码器则由对编码器的输出执行相同操作的解码层组成。

其中,编码组件由多层编码器(Encoder)组成(在论文中作者使用了 6 层编码器,在实际使用过程中你可以尝试其他层数)。解码组件也是由相同层数的解码器(Decoder)组成(在论文也使用了 6 层)。

编码器/解码器组成

每个编码层的功能是确定输入数据的哪些部分彼此相关。它将其编码作为输入再传递给下一个编码层。每个解码层的功能则相反,读取被编码的信息并使用集成好的上下文信息来生成输出序列。为了实现这一点,每个编码层和解码层都使用了注意力机制。

每个编码器由两个子层组成:

  • Self-Attention层(自注意力层)
  • Position-wise Feed Forward Network(前馈网络,缩写为 FFN

如下图所示:每个编码器的结构都是相同的,但是它们使用不同的权重参数

编码器的输入会先流入 Self-Attention 层。它可以让编码器在对特定词进行编码时使用输入句子中的其他词的信息(可以理解为:当我们翻译一个词时,不仅只关注当前的词,而且还会关注其他词的信息)。

注:关注词语的上下文环境,不仅仅是词语本身

后面我们将会详细介绍 Self-Attention 的内部结构。然后,Self-Attention 层的输出会流入前馈网络。

解码器也有编码器中这两层,但是它们之间还有一个注意力层(即 Encoder-Decoder Attention),其用来帮忙解码器关注输入句子的相关部分(类似于 seq2seq 模型中的注意力)

引入张量

和通常的 NLP 任务一样,首先,我们使用词嵌入算法(Embedding) 将每个词转换为一个词向量。

在 Transformer 论文中,词嵌入向量的维度是 512

词嵌入仅发生在最底层的编码器中。所有编码器都会接收到一个大小为 512 的向量列表:

  • 底部编码器接收的是词嵌入向量
  • 其他编码器接收的是上一个编码器的输出。

这个列表大小是我们可以设置的超参数——基本上这个参数就是训练数据集中最长句子的长度

对输入序列完成嵌入操作后,每个词都会流经编码器的两层。上面我们提到,编码器会接收一个向量作为输入。编码器首先将这些向量传递到 Self-Attention 层,然后传递到前馈网络,最后将输出传递到下一个编码器。

多头注意力机制(Multi-head Attention)

一组(𝑊𝑄,𝑊𝐾,𝑊𝑉){\displaystyle \left(W_{Q},W_{K},W_{V}\right)}矩阵称为一个注意力头(attention head),Transformer模型中每一层都包含多个注意力头。每个注意力头都表示不同标记相互之间的注意力,而多个注意力头则可以针对不同的“相关性”计算不同的注意力权重。许多注意力头编码的相关性信息是人类可以理解的,例如某个注意力头可能主要关注下一个单词,而另一个注意力头则可能主要关注动词与其直接宾语之间的关系。每个注意力头的计算可以并行执行,这使得处理速度得以加快。注意力层的输出被连接起来传递到前馈神经网络层。

现在让我们重新回顾一下前面的例子,看看在对示例句中的“it”进行编码时,不同的注意力头关注的位置分别在哪。

当我们对it进行编码时,一个注意力头关注The animal,另一个注意力头关注tired。从某种意义上来说,模型对it的表示,融入了animaltired的部分表达。

Multi-head Attention 的本质是:在参数总量保持不变的情况下,将同样的Query,Key,Value 映射到原来的高维空间的不同子空间中进行Attention的计算,在最后一步再合并不同子空间中的Attention信息。

这样降低了计算每个 head 的 Attention 时每个向量的维度,在某种意义上防止了过拟合

位置前馈网络(Position-wise Feed-Forward Networks)

位置前馈网络就是一个全连接前馈网络,每个位置的词都单独经过这个完全相同的前馈神经网络。

其由两个线性变换组成,即两个全连接层组成,第一个全连接层的激活函数为 ReLU 激活函数。

在每个编码器和解码器中,虽然这个全连接前馈网络结构相同,但是不共享参数。整个前馈网络的输入和输出维度都是,第一个全连接层的输出和第二个全连接层的输入维度为2048。

残差连接和层归一化

编码器结构中有一个需要注意的细节:每个编码器的每个子层(Self-Attention 层和 FFN 层)都有一个残差连接,再执行一个层标准化操作,整个计算过程可以表示为:

将向量和自注意力层的层标准化操作可视化,如下图所示:

位置编码

到目前为止,我们所描述的模型中缺少一个东西:表示序列中词顺序的方法。为了解决这个问题,Transformer 模型为每个输入的词嵌入向量添加一个向量。

这些向量遵循模型学习的特定模式,有助于模型确定每个词的位置,或序列中不同词之间的距离。

Transformer模型应用

Transformer模型在自然语言处理(NLP)领域获取了巨大成功,例如 机器翻译 与 时间序列 预测任务,Transformer模型已在TensorFlow、PyTorch等标准深度学习框架中实现。

包括GPT-2、GPT-3、BERT、XLNet与RoBERTa在内的许多预训练模型展示了Transformer模型执行各种NLP相关任务的能力,并有很多潜在实际应用。这些应用包括:

2020年,Transformer架构(更具体地说是GPT-2)被证明可以通过微调执行下象棋的任务。Transformer模型也已应用于 图像处理 ,其结果可与卷积神经网络相媲美。

参考资料

1、维基百科 https://zh.wikipedia.org/wiki/Transformer%E6%A8%A1%E5%9E%8B
2、AI科技在线 Transformer架构图解最强教程