李宏毅深度学习笔记(十四)Transformer

0. 前言

Transformer实际上就是一个带有“self-attention”的sequence-to-sequence模型。

Attention Is All You Need 原文

1.Transformer的提出

一般的sequence-to-sequence模型是用RNN来做的,但这样构成的模型不能进行平行计算,例如下图中左边的模型就是RNN结构的sequence-to-sequence模型,想要求出 b 4 b^4 b4就得先从 a 1 a^1 a1输入开始一步一步往后求,直到求出 b 4 b^4 b4,而不能对 a 1 , a 2 , a 3 , a 4 a^1,a^2,a^3,a^4 a1,a2,a3,a4一起计算。
在这里插入图片描述为了能够进行并行计算,提出了使用CNN代替RNN的方法,如上图右侧基于CNN的sequence-to-sequence模型。这个模型中每个三角形的底部是m个输入,顶部是n个输出,n<m,这样的话这个模型就可以并行计算了,但它的感受野与每个CNN的输入尺寸有关,也与CNN的层数有关。但不管怎么样,CNN都无法像RNN一样看的无限远。

也就是说RNN结构的sequence-to-sequence模型和CNN结构的sequence-to-sequence模型都有其优缺点,所以就有了Transformer。Transformer是用Self-Attention Layer来替代RNN的sequence-to-sequence模型。

Transformer模型在质量上更优越,同时更具可并行性,并且需要更少的训练时间。

在这里插入图片描述
Transformer中的 b i b^i bi是由所有的输入决定的,比如上图中的 b 2 b^2 b2是由 a 1 , a 2 , a 3 , a 4 a^1,a^2,a^3,a^4 a1,a2,a3,a4共同决定的,且 b 1 , b 2 , b 3 , b 4 b^1,b^2,b^3,b^4 b1,b2,b3,b4能够被平行计算。

2. Self-attention

第一步:

在这里插入图片描述

第二步:

在这里插入图片描述

第三步:

在这里插入图片描述

第四步:

计算 b 1 b^1 b1的时候可以如果让 α ^ \hat{\alpha} α^都不为0,那么 b 1 b^1 b1就考虑了全局的输入,如果计算 b 1 b^1 b1的时候让 α ^ 1 , 1 , α ^ 1 , 2 , α ^ 1 , 3 \hat{\alpha}_{1,1},\hat{\alpha}_{1,2},\hat{\alpha}_{1,3} α^1,1,α^1,2,α^1,3为0,但 α ^ 1 , 4 \hat{\alpha}_{1,4} α^1,4不为0,则 b 1 b^1 b1只考虑了局部输入。下图中的“×”代表乘。

在这里插入图片描述在这里插入图片描述
用上面的方法就可以计算出所有的 b b b
在这里插入图片描述

用矩阵的形式来看:

在这里插入图片描述
框着 k k k的橘色方框横过来代表转置
在这里插入图片描述
α \alpha α进行softmax变为 α ^ \hat{\alpha} α^
在这里插入图片描述
在这里插入图片描述

整个过程

在这里插入图片描述

3. Multi-head Self-attention(以双头为例)

其实就是把多个自注意力连起来,这样的一来就可以分工协作了,比如有的头可以把注意力放在长期信息上,有的头可以把注意力放在短期信息上,然后再进行集合。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4. 位置编码

因为在Transformer中没有rnn,所以如果直接将数据输入模型的话是没有位置信息的,所以需要位置编码。

p i p^i pi进行独热编码,编码完为一个向量,这个向量只有第i个值为1,其余都为0,这样再将输入 x i x^i xi p i p^i pi拼接起来就可以表示value和position了。
在这里插入图片描述
W p W^p Wp是人为设置的,绘制出来如下所示:
在这里插入图片描述

5.seq2seq with attention

就是将普通的seq2seq模型中的rnn换位Self-Attention

在这里插入图片描述

6. Transformer

在这里插入图片描述
编码器部分的Multi-Head Attention是让 a a a经过Self-Attention Layer变成 b b b;Add&Norm是让 a a a b b b先加起来再通过Layer Norm。
在这里插入图片描述
解码器部分粉色框里面的输入是上一次计算产生的输出。

Masked表示decoder会append到已经产生出来的sequence。

7. 可视化

一个句子中的每两个单词都有连接,连接的线条越粗说明attention的权重越大。
在这里插入图片描述
下图中第一句话中的it分给animal的注意力最多,因为it代指的就是这个animal,第二句话的it分给street的注意力最多,因为这个it代指street。
在这里插入图片描述
下图中绿色的代表Multi-head Attention
在这里插入图片描述

8. 应用

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

参考1:Transformer 详解

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

comli_cn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值