自然言语处理中的序列建模:transformer分析

图灵汇官网

工夫老人背负着一个巨大的布袋,里面装满了被世人遗忘的丰功伟绩。这些伟大的成就很快就会被人遗忘,正如莎士比亚所说。

概述

本文是一篇关于Transformer论文及其相关研究的读书笔记。主要内容包括:

  • 序列建模:从CNN、RNN(如LSTM)到Transformer的发展历程,以及它们在速度和依赖长度上的表现。
  • 模型架构:介绍了layer normalization和残差网络的作用,使深度学习在序列建模中更加可行。
  • 几种注意力机制:对几种注意力机制进行了分析和可视化,特别是位置编码的概念。

序列建模

自然语言处理中的文本可以视为词的序列。在序列建模中,通常需要考虑上下文信息,例如RNN、LSTM和GRU等模型。这些模型的核心思想是当前的状态不仅取决于当前的输入值,还取决于历史状态值。相比之下,LSTM和GRU模型可以更好地处理较长时间跨度的历史信息。然而,基于RNN的网络在计算时需要逐步进行,这限制了其并行化能力,因此计算速度相对较慢。

注意力机制(Attention)是目前机器翻译的标准配置。它允许在解码阶段根据不同的权重关注源序列中的不同词。Transformer模型抛弃了RNN逐步计算的思路,但仍保留了捕捉上下文信息的能力,并能够实现注意力机制的功能,从而更容易并行化和降低计算复杂度。

模型架构

编码器(Encoder)

编码器本质上是一个将序列特征化的过程,即将(B, T)大小的离散输入词序列转换为(B, T, d_model)大小的嵌入表示,然后再通过Transformer模型转换为同样大小的表示。

解码器(Decoder)

解码器本质上是一个考虑背景信息的语言模型。通过注意力机制,将编码器的输入(上下文信息)绑定到语言模型上。

残差网络(Residual Net)

残差网络的设计解决了深层网络训练困难的问题。在NLP领域,残差网络的设计也确保了当前输入Q不会被注意力机制淹没。为了实现残差连接,需要满足dembedding = dk = dv = dmodel。此外,F(x)需要包含非线性操作,否则这种设计将失去意义。

层归一化(Layer Normalization)

层归一化(LN)与批量归一化(BN)不同,它在每一层的不同位置进行统计,而不依赖于批大小。与BN相比,LN在样本绑定方面表现更好。

注意力机制

自注意力(Self-Attention)

自注意力机制将一个序列特征化,可以捕捉任意位置的依赖关系。

编码器-解码器注意力(Encoder-Decoder Attention)

在解码阶段,解码器需要考虑编码器的信息。

多头注意力(Multi-Head Attention)

多头注意力机制将输入映射到不同的子空间,分别进行注意力操作,然后合并结果。

位置编码

Transformer模型中没有RNN机制,如何利用序列的位置信息?

  • 一种方法是位置嵌入,但这种方法需要训练,并且存在OOV问题。
  • Transformer提出的正弦/余弦位置编码不需要训练,且具有更好的泛化能力。这种方法利用了正弦和余弦函数的周期性,可以在任意位置上进行外推。

从位置嵌入的角度来看,每个位置t被映射为一个嵌入向量,这与正弦波和余弦波上的位置相对应。这种方法避免了训练位置嵌入的需求,并且具有更好的泛化性能。

本文来源: 图灵汇 文章作者: 赵春孟