0. 前言
Transformer实际上就是一个带有“self-attention”的sequence-to-sequence模型。
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. 应用



本文详细介绍了Transformer模型,这是一种基于自注意力机制的序列到序列模型,能够实现高效并行计算,相较于传统的RNN和CNN模型,在训练速度和模型效果上有显著优势。文章深入解析了Self-attention机制的工作原理,并解释了如何通过Multi-head Self-attention来处理不同长度的信息依赖。
2734

被折叠的 条评论
为什么被折叠?



