【论文笔记】Transformer - Attention is All You Need

https://arxiv.org/abs/1706.03762

Attention is All You Need, Google Brain, CVPR 2017

是啥


该论文提出了一个简单的网络架构 Transformer,里面用 Self-attention & Muti-Head Attention 来代替以前的序列模型( 譬如 RNN 和 LSTM),在机器翻译任务上精度比之前的方法好,且设计的网络也比之前方法容易并行化,从而计算速度也快。

在这里插入图片描述

Transformer 后续则被很多学者应用视觉等其他领域上,也取得了很好的结果,是很值得熟读的一篇经典的文章,引用达到了7万多

缺点:Transformer 架构简单,对比 CNN(平移不变性,多尺度提取特征等特性),它的假设和预置信息是比较少的,因此需要大数据量才能学习到数据中的规则

一些后续的基于 Transformer 工作都是琢磨着如何加入 CNN 中的多尺度,平移不变等特性

网上关于 Transformer 的博文有很多,在本文底部的参考链接中可以看到,我在查阅了资料后,组织了一下语言来讲解一些这篇经典的文章

模型架构


模型图如下所示,为 Encoder-Decoder 架构,第一列为 Encoder,第二列为 Decoder

在这里插入图片描述

Input Embedding:

假设输入句子为 “Attention is all you need.”,里面包含了 5 个单词,每个单词用 512 维向量(又称为 Token)表示,那么输入的 shape 为 5x512

Output Embedding

Decoder 输出的词再经过 Embedding 后即为 Output Embedding

Output Probabilities:

根据词典的大小,每个词对应的概率,每次取最大的概率对应的词拼接在一起则为翻译的结果

Encoder-Decoder

Encoder: 这里的 Nx 的意思是堆叠多少个这样组件,文中 N = 6,每个组件里包含两个子层(sub-layers),第一个子层为 Multi-head Self-attention,第二个子层为 position-wise fully connected feed-forward,两个子层都使用了残差连接来解决梯度消失的问题。

Decoder: Nx 的含义同上,与 Encoder 里的组件类似,不同的是 Decoder 除了 Encoder 的输出作为输入外,还有 Output Embedding 输入,它是 Decoder 的输出再进行词嵌入得到的,这里的 Masked 是用来屏蔽当前预测顺序之后的词,起到防止未来信息泄露的作用的。

啥是 Multi-head Self-attention

在这里插入图片描述

Multi-head 如上右图,h 即为多头(Multi)的数量,这里设计初衷是为了模拟卷积中多通道输出的效果,从而提高学习能力

Attention 中 Q, K, V 代表的是 Query,Key,Value,输出为 Output,它们都是向量。Output 是由 Value 加权求和得到如下图所示,权重的计算基于 Query 和 Key 之间的相似度,在具体实现中是 Q 和 K 做点乘后再 Softmax,如上左图

在这里插入图片描述

所谓的 Self 体现在 Query, Key, Value 三个向量是相等的,这样做优点是一层就可以看到整个句子,有助于高效学习 Token 之间的关系

在这里插入图片描述

为啥用的是 LayerNorm

这里不用 BtachNorm 的原因,因为针对序列输入的任务,输入的每个样本都是不定长的,从而导致在 BN 计算均值和方差的时候,波动会比较大,而 LN 是对单个样本计算均值和方差,相对来说就不存在这个问题

Position Encoding

在翻译句子时,词之间是有前后顺序的,顺序不同,意思也不同,为此,作者设计了 Position Embedding,让他能够在每个 Token 中加上位置信息,如下图所示

在这里插入图片描述

效果这块的话,在机器翻译这个任务上达到了 SOTA,这里不展开,具体的可以去看原文

参考链接


下面这篇文章写的很好,图文并茂

http://jalammar.github.io/illustrated-transformer

官方解读
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值