[NeurIPS 2017] Attention Is All You Need
Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。
整体结构
Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。
Encoder
整体结构
Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。
位置编码 (Positional Encoding)
对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。
公式如下所示,其中指的是该词汇在整个输入句子中的位置,以及指的是该词汇的嵌入向量中的维度,指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算次位置编码。
根据三角函数的性质,对于位置的嵌入向量的某一维度(或)而言,可以表示为位置与位置的嵌入向量的与维度的线性组合,使得位置向量中蕴含了相对位置的信息。
最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。
具体结构
输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。
Decoder
Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。
自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。
非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。
Autoregressive Decoder(AT)
整体结构
词汇表(Vocabulary)
词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。
Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。
Begin符号
解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的 输出以及编码器(Encoder)的输出,直到生成序列的结束。
Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。
Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。
End符号
在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。
掩码多头自注意力机制(Masked Multi-Head Self-Attention)
掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention
观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示。