Attention Is All You Need

Introduction

本文主要介绍了 Google 于 2017 年的论文Attention Is All You Need。该论文被认为是
Transformer 架构的开出鼻祖,其中抛弃了传统 RNN 和 CNN 的循环和卷积结构,完全通过注意力机制来处理语言转导(transduction)问题。

What is Transformer

Transformer 结构是一个完全通过注意力机制来描绘输入和输出之间的依赖关系,避免类似 RNN 的循环结构和 CNN
的卷积结构,通过高效的矩阵运算来提高并行化的序列语言转导模型(sequence transduction model)。Transformer 通过
Self-Attention、Multi-Head Attention 和 Cross Attention 来实现注意力机制以及 encoder-decoder 之间的关联。

Background

大多数具有竞争力的神经序列转导模型具有 encoder-decoder 结构。在这里,encoder 将符号表示的输入序列 (x1,,xn)(x_1, \dots, x_n)
映射到连续表示序列 z=(z1,,zn)z = (z_1, \dots, z_n)。给定 zz,decoder 然后生成一个符号的输出序列 (y1,,ym)(y_1, \dots, y_m)
,一次一个元素。在每一步,模型都是自回归(auto-regressive)的,即在生成下一步时,使用先前生成的符号作为额外的输入。

Self-Attention

在论文中也被叫做 Scaled Dot-Product Attention

  1. queries and keys: dimension dkd_k
  2. values: dimension dvd_v
  3. 计算 query 和所有 keys 的内积,然后除以 dk\sqrt{d_k} , 然后通过一个 softmax 函数做归一化。从而得到了权重。
  4. 为什么添加 dk\sqrt{d_k}:常见的 attention 机制包括 dot-product 和 additive attention。后者在没有缩放的情况下,能够比前者表现的更加出色。因此本文作者怀疑是因为 dot product 的结果过大,取了 softmax 之后让结果落在了梯度较大的区间。

Multi-Head Attention

通过多个相同的 Self-Attention 叠加实现。Multi-Head Attention 允许模型共同关注来自不同位置的不同表示子空间的信息。对于单个注意力头,平均会抑制这种情况。

Application of Attention

Transformer 通过三种不同的方式使用 multi-head attention

  • Cross Attention:也就是 encoder-decoder 之间的 attention,queries 来自之前的 decoder 层,memory keys 和 values 来自 encoder 的输出。这允许 decoder 中的每个位置都关注 input sequence 中的所有位置。
  • encoder:encoder 包含 self-attention 层。keys, values 和 queries 都来自相同的地方。在本文中是 encoder 中前一层的输出。encoder 中的每个位置都可以处理 encoder 上一层中的所有位置。
  • Masked Multi-Head Attention:decoder 中的 Attention。需要防止 decoder 的信息向左流动,从而保证 auto-regressive 的属性(即只能看到自己之前的位置信息)。通过在 scaled dot-product attention 内部实现: mask softmax 函数中对应着非法连接输入(比如说 q1q_1 和位置 2 的 value 就是非法的)的 values(设置为 -\infty)。

Position-wise Feed-Forward Networks

全连接前馈网络,分别应用于每个位置。通过两个线性变换和一个 ReLU 激活函数在两个变换之间实现。(maxmax 其实就是个 ReLU)。

Position Embedding

利用 sequence 的顺序,需要注入一些有关 sequence 中 tokens 的相对或者绝对位置的信息。这就是 positional encodings。将 input embeddings 加入到 encoder 和 decoder Stack 底部的 input embeddings。

有很多种 positional encodings 的选择:可学习的或者固定的。

本文:sine 和 cosine(固定的)。

Transformer vs. CNN/RNN

Transformer 省去了 CNN 中的卷积操作和 RNN 中的循环操作,能够通过矩阵运算快速的计算注意力得分,从而得到输入输出之间的关系。Transformer 显著提高了并行化的水平,而且对于全局的注意力有着极大的提升(即无论位置多远,Transformer 架构都能够得到两个位置之间的依赖关系)。

Conclusion

Reference

  1. Attention Is All You Need
  2. Understanding and Coding Self-Attention, Multi-Head Attention, Cross-Attention, and Causal-Attention in LLMs
  3. Hung-yi Lee 2021 机器学习 国立台湾大学
文章作者: ZY
文章链接: https://zyinnju.com/2024/10/29/Attention-is-all-you-need/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZY in NJU