NIPS-2017-原始变压器: Attention Is All You Need 阅读笔记

论文地址:
https://proceedings.neurips.cc/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf
代码地址:
https://github.com/tensorflow/tensor2tensor

整体架构:

在这里插入图片描述
在这里插入图片描述

编码器(Encoder):

编码器由N = 6个相同层的Encoders堆叠组成。每个Encoder两个子层。第一个是多头自注意机制,第二个是简单的、按位置全连接的前馈网络。我们在两个子层周围使用残差连接,然后紧接归一化层。即,每个子层的输出是LayerNorm(x + Sublayer(x)),其中Sublayer(x)是子层本身实现的函数。为了进行剩余连接,模型中的所有子层以及嵌入层都是产生维度dmodel = 512的输出。

解码器(Decoder):

解码器也由N = 6个相同的Decoders堆叠组成。除了每个编码器层中的两个子层之外,解码器还插入了第三个子层,该子层对编码器堆栈的输出执行多头关注(交叉注意)。与编码器类似,我们在每个子层周围使用残差连接,然后进行层归一化。我们还修改了解码器堆栈中的自注意子层,以防止位置关注后续的位置。这种屏蔽与输出嵌入偏移一个位置相结合,确保了位置i的预测只能依赖于小于i的位置处的已知输出。

Scaled Dot-Product Attention:

在这里插入图片描述
在这里插入图片描述
√dk是K向量的维度的平方根,除以K向量的维度的平方根可以使梯度更加稳定。softmax主要将分数标准化,使他们都是正数并且加起来等于1。将V向量乘上softmax的结果,这个思想主要是突出想要关注的信息,而掩盖掉那些不相关的信息(例如将他们乘上很小的数字)。

Multi-Head Attention:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
原始的Transformer中,使用了8个head,因为dk = dv = dmodel/h = 64。

Position-wise Feed-Forward Networks:

除了注意子层之外,我们的编码器和解码器中的每一层都包含一个完全连接的前馈网络,该网络独立且相同地应用于每个位置。这由两个线性转换组成,中间有一个ReLU激活。
在这里插入图片描述
虽然不同位置的线性变换是相同的,但是它们在层与层之间使用不同的参数。

Positional Encoding:

由于我们的模型不包含递归性和卷积,为了使模型利用序列的顺序,我们必须注入一些关于序列中标记的相对或绝对位置的信息。为此,我们在输入中嵌入 “位置编码”
我们选择不同频率的正弦和余弦函数,如下,pos是位置,i是维度,位置编码的每个维度对应于一个正弦曲线。
在这里插入图片描述

Conclusion:

In this work, we presented the Transformer, thefirst sequence transduction model based entirely on attention, replacing the recurrent layers most commonly used in encoder-decoder architectures with multi-headed self-attention.

参考:

https://www.jiqizhixin.com/articles/2018-11-06-10
https://zhuanlan.zhihu.com/p/82312421
https://github.com/harvardnlp/annotated-transformer

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值