Attention Is All You Need
paperreading
本文字数:918 字 | 阅读时长 ≈ 3 min

Attention Is All You Need

paperreading
本文字数:918 字 | 阅读时长 ≈ 3 min

Attention Is All You Need. NIP 2017

这篇 paper 在 2017 年挂到 arXiv 上了「Paper Link」,是 Google 的一篇文章,不得不说 Google 大爹太强了,提出 Transformer 之后在 NLP 领域产生了一系列的变革,衍生出了 BERT、GPT、T5、ChatGPT 等等一系列的模型,而且 Transformer 在 CV 也有很大的影响力,这里回顾一下原 Paper,记录一下笔记

论文从 Abstract、Introduction、Method、Experiments、Conclusion 五个方面进行解读,解读不是翻译,添加了个人理解色彩,如有问题欢迎指正~

1. 摘要

目前(2017 年)主要的序列转移模型(sequence transduction models)大多是循环神经网络或者卷积神经网络,而且是 Encoder-Decoder 架构的。本文提出了一个新的网络架构 Transformer,他舍弃了之前的循环卷积等结构,新的架构能够 非常高效的并行 ,加快训练速度。在实验结果上,在 WMT 2014 English-to-German 翻译任务上达到了 28.4 BLEU,提升了 2 个点;在 WMT 2014 English-to-French 翻译任务上达到了 41.8 BLEU,也是最好的效果。

在之前 Transformer 其实是做 机器翻译任务的,可能当时也没想到能这么火?

2. 引言

在 Transformer 没出来之前,语言模型或机器翻译这种任务上大多使用的是循环神经网络、LSTM 和 GRU,在模型架构方面也比较统一,都限制在循环网络以及 Encoder-Decoder 架构中。循环神经网络的计算是有顺序的,比如在得到 t-1 时刻的隐状态$h_{t-1}$之后才能计算 t 时刻的值,这会带来两个缺点:1. 后面的状态需要等待前面计算结束,浪费了时间,做不到完全并行。2. 当序列过长时,需要大量的内存来存储之前的结果。

在注意力机制出来之后,序列任务能够做到完全并行计算了,但是大多数工作还是将其与循环网络结合来使用。而本文提出的 Transformer 完全舍弃了循环网络那一套慢而且性能差的方法,transformer 能够在序列之间构建全局的依赖关系,在所有 token 之间学习关联性,实现完全的并行化,加快计算效率的同时具有非常好的性能。

3. 主要方法

大多数的翻译任务都是 Encoder-Decoder 架构的,作者这里延续了此架构,Encoder 接受输入,Decoder 以自回归的方式进行输出。整个流程大概如下:给定一个序列$(x_{1}, …,x_{n})$,将其输入 encoder 中得到序列$(z_{1}, …,z_{n})$,此特征输入到 decoder 中生成输出$(y_{1}, …,y_{m})$

3.1 Encoder-Decoder Stacks

模型的整体结构如图所示,包含一个 Encoder 和 Decoder

Encoder:编码器是 6 个相同的 transformer block,其中每一个 block 包含 self-attention layer 以及 feed-forward layer,我们将每个 layer 称为 sublayer,计算过程为$LayerNorm(x+Sublayer(x))$,其中特征向量的维度为$d_{model}=512$

Decoder:解码器也是 6 个相同的 transformer block,但是与编码器有所区别的是加入了 mask,因为在解码阶段是以自回归的方式进行解码的,在翻译当前单词的时候是不能看到后面单词的,不然会对翻译的结果造成影响,这点会在论文最后进行说明

Transformer 代码实战

参考blog

1. 数据下载

进入下载网站,如下图所示,下载其中的包含 DE-EN 的数据集,即 Europarl v7,Common Crawl corpus 以及 News Commentary