【论文阅读-Transformer】Attention is all you need

image-20220409185225151

Title: Attention is all you need

From: NeurIPS 2017

Link: https://arxiv.org/abs/1706.03762

Code: https://github.com/tensorflow/tensor2tensor.

循环神经网络被普遍作为序列建模和转录问题的最佳模型。但是,循环模型(Recurrent models)存在两个问题:(1)其输入输出的顺序计算性阻碍了训练的并行化,序列长度越长,问题越明显。(2)而且随着序列的变长,存在长程依赖的问题。此外,注意力机制允许对依赖关系进行建模,而不考虑他们在输入或输出序列中的距离。这种机制往往和循环网络一起出现。

因此,作者提出Transformer,力图规避掉循环网络,只用attention来实现对输入输出间的全局依赖关系的建模。

重点记录下Transformer中的几个点。

1. Self-attention & Multi-head attention

Attention的三要素:Q、K、V,这三者有可能是一样的,比如你输入的句子序列x,分别乘以三个变换矩 W Q W^Q WQ W K W^K WK W V W^V WV,来作为attention的输入,这种叫做自注意力。在其他情况下,这三者有可能K和V是一样的,也有可能都不一样。

在transformer的编码器中,用的是自注意力,而解码器中,KV是一样的,来自编码器的输出,query是解码器mask attention层的输出。

image-20220409200024182

  • Scaled dot-product attention

在单头的 Dot-Product Attention中,Q和K做内积来计算相似度,再经过一层softmax,最后的输出就是对 V V V的加权和。

image-20220409185309581

和普通的点积注意力相比,这里多除了一个根号 d k d_k dk,这也是作者为什么将其称为“scaled”。这样做的原因是当 d k d_k dk 比较大的时候,容易把softmax推到梯度较小的地方,缩放后,可以缓解这种情况。

  • Mask

再补充一句mask,attention中的mask用于解码的过程。在t时刻,道理上模型应该只能看到0到t-1时刻的output,不然就算是泄漏了。所以在计算后,把t时刻之后的值都变成一个超大的负数,这样经过softmax之后,就趋近于零了,相当于把后面的信息mask掉了。

  • Multi-head attention

多头注意力,就类似于卷积里面的多通道,每个通道去识别不同的模式。

对Q、K、V乘以不同的变换矩阵 W i Q W^Q_i WiQ W i K W^K_i WiK W i V W^V_i WiV,将其投影到低维,希望学到不同的投影方法,然后在每个i中,都是原来的scaled dot-product attention,最后将结果拼接起来。(这里的拼接还是加了一个线性层的)。可以认为不同的头,学到的是不同的相似关系/位置关系/。

2. Positional Encoding

Attention是没有时序信息,因为attention的输出是value的加权和,权重是query和key之间的距离,他和序列信息是无关的。也就是说,如果把一句话中所有词的顺序打乱,比如原来的“我爱北京”,换成“北京爱我”,语义肯定是发生了变化的,但是attention对这种变化是感知不到的。所以需要把位置信息加进去,来弥补自注意力机制不能捕捉序列时序信息的缺陷。

RNN是有时序信息的,上一个位置的输出是下一个位置的输入,所以包含了时序信息。

Transformer的思路是通过 sine and cosine 函数把位置信息编码到输入里面。这样编码可以让模型感知到位置的变换。

3. Layer Normalization

batch normalization 是对特征那个维度来做。

layer normalization是对样本那个维度来做。

image-20220409204052270图片源自李沐大佬视频中的截图

实验部分,还有一些详细的分析就不写了,今天就到这里吧~

参考:

  1. https://zhuanlan.zhihu.com/p/420820453

些详细的分析就不写了,今天就到这里吧~

参考:

1.https://zhuanlan.zhihu.com/p/420820453

2.https://www.bilibili.com/video/BV1pu411o7BE?spm_id_from=333.999.0.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值