【论文笔记】Attention Is All You Need

时间:2024-03-03 11:07:54

【论文笔记】Attention Is All You Need

文章目录

  • 【论文笔记】Attention Is All You Need
    • Abstract
    • 1 Introduction
    • 2 Background
      • 补充知识:软注意力 soft attention 和硬注意力 hard attention?
      • 补充知识:加法注意力机制和点乘注意力机制
      • Extended Neural GPU 介绍
      • ByteNet 介绍
      • ConvS2S 介绍
      • End to end Memory Network 端到端内存网络介绍
    • 3 Model Architecture
      • 3.1 Encoder and Decoder Stacks
      • 3.2 Attention
        • 3.2.1 Scaled Dot-Product Attention: “缩放点积注意力”
        • 3.2.2 Multi-Head Attention
        • 3.2.3 Applications of Attention in our Model
      • 3.3 Position-wise Feed-Forward Networks
        • 3.4 Embeddings and Softmax
        • 3.5 Positional Encoding
    • 4 Why Self-Attention
    • 5 Training
      • 5.1 Training Data and Batching
      • 5.2 Hardware and Schedule
      • 5.3 Optimizer
      • 5.4 Regularization
        • 残差 Dropout
        • 标签平滑 label smoothing
      • 补充知识:标签平滑技术
    • 6 Results
      • 6.1 Machine Translation
      • 补充知识:集束搜索 beam search
      • 补充知识:模型的集成
    • 6.2 Model Variations
      • 6.3 English Constituency Parsing
    • 7 Conclusion

Abstract

当时(2017年以及之前),做 序列处理任务 的深度学习模型,都包含了由循环神经网络卷积神经网络组成的编码器解码器模块。更进一步的,表现最好的模型额外用了注意力机制来连接编码器和解码器。

We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely.

Transformer 的作者们提出了这个更加简单的序列处理模型,只包含了注意力机制,完全取消了循环和卷积神经网络模块

实验设置:WMT 2014 机器翻译比赛里面英德、英法两个翻译任务。

评估指标:BLEU 。

实验效果:

  1. 英德翻译达到 28.4 BLEU,比之前的模型提高了 2 BLEU;英法翻译达到 41.8 BLEU,成为新 sota 模型。
  2. 更好的翻译质量、更并行化的处理以及更少的训练时间。

泛化性评估:在 English constituency parsing (英语选区分析)任务中采用大量而有限的数据进行训练,也能达到效果,transformer 并非只会机器翻译,还能做其他任务。

英语选区分析是一种自然语言处理技术,用于将句子分解成其各个成分或短语的过程。这种分析有助于理解句子的结构和语法关系,可以帮助计算机更好地理解和处理自然语言文本。英语选区分析通常涉及识别句子中的主语、谓语、宾语等成分,并确定它们之间的依存关系。这种技术在机器翻译、信息检索和问答系统等领域具有重要应用,有助于提高计算机处理自然语言的准确性和效率。


1 Introduction

传统的序列建模和转导问题主要用于语言建模或者机器翻译,这些工作的SOTA模型(2017年)都是由RNN、LSTM和门控网络组成的,到现如今(2017年)也有大量的工作在推进循环语言模型(recurrent language models)以及编码器-解码器(encoder-decoder)的结构。

循环模型通常会沿着输入和输出序列的符号位置进行计算,将位置与计算时间中的步骤对齐,这句话可以解读成循环模型对序列的处理是串行。它们生成一系列隐藏状态 h t h_t ht h t h_t ht 先前隐藏状态 h t − 1 h_{t−1} ht1 和位置 t t t 输入的函数,也就是 h t = f ( h t − 1 , x t ) h_{t}=f(h_{t-1},x_{t}) ht=f(ht1,xt) 这个式子,只有当 x t x_{t} xt 计算完毕才能计算 x t + 1 x_{t+1} xt+1 也说明是串行处理的。这种固有的顺序处理本质阻碍了训练并行化,这在较长的序列做处理上变得困难,因为内存限制了示例之间的批处理。

当序列变长时,在 GPU 中记录的 中间变量 会线性增多,这就导致批次需要调小,或者使用迷你批次数据并行梯度累积等方式。

最近的(2017年)工作通过 分解技巧条件计算 显着提高了计算效率,同时后者还提高了模型的性能。然而,顺序/串行计算的本质局限仍然存在。

分解技巧就是将 LSTM 的权重矩阵分解成两个子矩阵,且子矩阵的元素数量都比原来的少;其次就是把 LSTM 权重矩阵、其输入和隐藏状态分成独立的组。这样设计的目的是提高计算效率。

分解技巧可以和现在的 LORA 微调结合起来,LORA 的特点就是在原来模型参数的基础上增加一对矩阵的乘积 A a × r B r × b A_{a\times r}B_{r\times b} Aa×rBr×b (其中 r < < a , b r<<a,b r<<a,b),且 A A A B B B 的元素数量远小于原来模型参数的数量。

是指在 LSTM 中根据输入数据的不同条件执行不同的计算。在 LSTM 中,通过门控单元(如遗忘门、输入门、输出门)来控制信息的流动,从而实现不同时间步的计算。这种条件计算使得 LSTM 能够更好地处理长序列数据,并学习长期依赖关系。通过调整门控单元的权重和偏置,LSTM 可以根据当前输入以及之前的状态来动态调整计算过程,以适应不同的条件和输入数据。

感觉可以和混合专家模型建立联系,根据样本输入动态地调整模型内组件的“工作量”。

同时可见,当年对 LSTM 的改进,主要是在不改变顺序/串行计算本质基础上进行的改进或优化,没有使用并行计算,因此在当时 LSTM 在计算上仍然低效。


注意机制已经成为各种序列建模和转导任务中的一个很好的组成部分,允许对依赖关系进行建模,而不考虑它们在输入或输出序列中的距离。这句话可以解读成即使两个内容实体在一个句子中相隔较远,注意力机制也能在训练阶段捕获到它们之间的关系。然而,这种注意机制一般与循环网络一起使用

在这篇论文中提出了 Transformer ,一个避免循环的模型架构,而是完全依赖于注意机制来描述输入和输出之间的全局依赖关系。Transformer 允许更多的并行化,在 8 个 P100 GPU 上进行了短短 12 个小时的训练后,模型获得很强的翻译能力。

循环神经网络(以 LSTM 为代表)存在:本身模型结构复杂 + 串行处理序列 + 对长序列的处理不佳等问题,然后作者认为是循环结构的本质特点造成的。

2 Background

这一部分是系统性的综述,综述主题是“如何降低序列计算”。

减少序列建模的计算量是 Extended Neural GPU 、 ByteNet 和 ConvS2S 的目标,所有的这些模型都使用了卷积神经网络循环神经网络还有一部分的注意力机制以作为基本构建块,在输入和输出位置并行计算所有隐藏表征。在这些模型中,关联来自两个任意输入或输出位置的信号所需的计算量随着位置之间的距离而增加,对于 ConvS2S 呈线性增长,这是由于中间模块是编码解码组成的互注意力,对于 ByteNet 呈对数增长。这就导致这些模型学习句子中内容距离较长的关系时候变得薄弱,内容关系相距越长需要的计算操作就越多。

补充知识:软注意力 soft attention 和硬注意力 hard attention?

软注意力和硬注意力是深度学习中用于处理序列数据的两种不同的注意力机制。软注意力是一种通过对整个输入序列进行加权求和来计算输出的方法,权重是在 0 到 1 之间连续的实数。而硬注意力则是一种只关注输入序列中特定位置的方法,即只选择一个或少数几个位置进行计算。

软注意力通常用于处理较长的序列数据,可以更好地捕捉全局信息。硬注意力则更适用于需要更精确位置信息的任务,硬注意力模型有一个缺点是不可微分,导致需要梯度流的强化学习过程难以实现。两种注意力机制在不同场景下有各自的优势和应用。

补充知识:加法注意力机制和点乘注意力机制

Additive Attention,也称为 Bahdanau Attention,使用单层前馈网络来计算注意力分数。
Attention ( h i , s j ) = v attention T tanh ⁡ ( W attention [ h i , s j ] ) \text{Attention}(h_{i},s_{j})=v_{\text{attention}}^{T}\tanh(W_{\text{attention}}[h_{i},s_{j}]) Attention(hi,sj)=vattentionTtanh(Wattention[hi,sj])
其中 v attention T v_{\text{attention}}^{T} vattentionT W attention W_{\text{attention}} Wattention 是训练得到的注意力参数。这里 h h h 指的是编码器的隐藏状态, s s s 是解码器的隐藏状态。 Attention ( h i , s j ) \text{Attention}(h_{i},s_{j}) Attention(hi,sj) 函数是一种对齐得分函数。可以使用对齐分数矩阵来显示源句子和目标句子之间的相关性。在神经网络中,一旦有了对齐分数,就使用这些对齐分数的 softmax 函数计算最终分数(确保其总和为 1 且每个项目都是正数)。

点积注意力是一种注意力机制,其中对齐分数函数被计算为:
Attention ( h i , s j ) = h i T ⋅ s j = h i T ⋅ I ⋅ s j \text{Attention}(h_{i},s_{j})=h_{i}^{T}\cdot s_{j} = h_{i}^{T}\cdot I \cdot s_{j} Attention(hi,sj)=hiTsj=hiTIsj
这相当于乘法注意力(没有可训练的权重矩阵,假设这是一个单位矩阵 I I I )。这里 h h h 指的是编码器的隐藏状态, s s s 是解码器的隐藏状态。 Attention ( h i , s j ) \text{Attention}(h_{i},s_{j}) Attention(hi,sj) 函数是一种对齐得分函数。

Extended Neural GPU 介绍

Extended Neural GPU的解说博客在这里

神经图灵机 (Neural Turing Machine, NMT)通过实验证明:神经网络模型可以通过在神经网络模型中添加内存模块(如计算机的 DRAM)并将内存读/写操作配置为可微分,从而从给定示例中学习广义算法。但是,当从序列性示例数据中学习广义算法时,常规操作都是串行学习,因为学习过程中只有一个步骤就需要用软注意力机制对整个序列至少计算一次,导致似乎没有并行学习的可能。

这篇文章为了克服上述问题(序列处理中的并行计算问题),提出了一个 Extended Neural GPU 的概念。与专门从事具有复杂控制流无序执行的 CPU 相比,GPU 具有专门用于流处理的硬件结构,具有并行化的优势。这篇文章建立一个在 NMT 中运行良好的模型,并将所提出的架构应用于序列学习问题。

传统 GRU 的实现
{ u = σ ( W ′ x + U ′ s + B ′ ) r = σ ( W ′ ′ x + U ′ ′ s + B ′ ′ ) z = tanh ⁡ ( W x + U ( r ⋅ s ) + B ) GRU ( x , s ) = u ⋅ s + ( 1 − u ) ⋅ z \begin{cases} u=\sigma(W^{\prime}x+U^{\prime}s+B^{\prime}) \\ r=\sigma(W^{\prime\prime}x+U^{\prime\prime}s+B^{\prime\prime}) \\ z=\tanh(Wx+U(r\cdot s)+B) \\ \text{GRU}(x,s)=u\cdot s+(1-u)\cdot z \\ \end{cases} u=σ(Wx+Us+B)r=σ(W′′x+U′′s+B′′)z=tanh(Wx+U(rs)+B)GRU(x,s)=us+(1u)z
Neural GPU 基本操作与 GRU 类似,它只将序列数据作为输入

1

这张图展示的是输入序列 { i 1 , 1 × 3 ⋯ i n , 1 × 3 } \{i_{1,1\times 3}\cdots i_{n,1\times 3}\} {i1,1×3in,1×3} 到输出序列 { o 1 , 1 × 3 , ⋯