Transformer:为什么要在计算机视觉领域使用Transformer?(二)

二. Transformer原理分析

在这里插入图片描述
上图描述的是一个seq2seq的model,左侧为 Encoder block,右侧为 Decoder block。Encoder 和 Decoder 分别用来解决上游问题和下游问题。什么是上游问题呢?就是一个预训练的过程。比如我们培养一个士兵,一定是先学习基础知识,然后才能上战场。
黄色圈中的部分为Multi-Head Attention,是由多个Self-Attention组成的,可以看到 Encoder block 包含一个 Multi-Head Attention,而 Decoder block 包含两个 Multi-Head Attention (其中有一个用到 Masked)。Multi-Head Attention 上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) 用于防止网络退化,Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化。

1. Encoder

  1. 首先输入 X 通过一个Input Embedding(词嵌入)的转移矩阵 W X {W}^{X} WX 变为了一个张量,也就是通过查表将一个文字变为一个向量表达。再加上一个表示位置的Positional Encoding E {E} E ,得到一个张量。(Positional Encoding在上一篇博文中有介绍,主要目的是获得序列信息
  2. 然后,它进入了绿色的block中,并且重复 N 次,绿色block的第1层是一个multi-head的attention。输入一个sequence I {I} I ,经过一个multi-head的attention,会得到另外一个sequence O {O} O
  3. 下一个Layer是Add & Norm,这个意思是说:把multi-head的attention的layer的输入 I {I} I 和输出 O {O} O 进行相加以后,再做Layer Normalization。
    在这里插入图片描述
  4. 接着是一个Feed Forward的前馈网络和一个Add & Norm Layer。

2. Decoder

  1. 首先输入 X 通过一个Input Embedding的转移矩阵 W X {W}^{X} WX 变为了一个张量,再加上一个表示位置的Positional Encoding E {E} E ,得到一个张量。
  2. 然后,它进入了绿色的block中,并且重复 N 次。绿色block的第1层是一个Masked Multi-Head Self-attention,masked的意思是使attention只会attend on已经产生的sequence,确保预测第 i {i} i 个位置时不会接触到未来的信息。然后Add & Norm Layer。
  3. 下一个Layer是另一个Multi-Head Attention层。输入是: E n c o d e r {Encoder} Encoder 的输出 和 对应 i − 1 {i-1} i1 位置decoder的输出。所以中间的attention不是self-attention,它的Key和Value来自encoder,Query来自上一位置 D e c o d e r {Decoder} Decoder 的输出;输出是:对应 i {i} i 位置的输出词的概率分布。 然后Add & Norm Layer。
  4. 最后有一个 Softmax 层计算下一个翻译单词的概率。
    注:Encoder可以并行计算,而Decoder要用上一个位置的输入当作attention的query,故是像RNN一样一个一个解出来的。

3. Masked Multi-Head Self-attention

在这里插入图片描述
Masked在Scale操作之后,softmax操作之前。
Mask的作用是:一个下三角矩阵,避免获取到超前信息。
下面以 “我有一只猫” 翻译成 “I have a cat” 为例,了解一下 Masked 操作。Decoder 可以在训练的过程中使用 Teacher Forcing 并且并行化训练,即将正确的单词序列 ( I have a cat) 和对应输出 (I have a cat ) 传递到 Decoder。
在这里插入图片描述

  1. 输入矩阵包含 " I have a cat" (0, 1, 2, 3, 4) 五个单词的表示向量,Mask是一个 5×5 的矩阵。输入矩阵 X {X} X 经过transformation matrix变为3个矩阵:Query Q {Q} Q,Key K {K} K 和Value V {V} V
  2. Q T ⋅ K {Q}^{T}\cdot{K} QTK 得到 Attention矩阵 A {A} A ,此时先不急于做softmax的操作,而是先与一个 M s ∈ R N × N {M}_{s}\in{R}_{N}\times_{N} MsRN×N 矩阵相乘( M s {M}_{s} Ms 矩阵是个下三角矩阵),使得Attention矩阵的有些位置归0,得到Masked Attention矩阵 A M {A}_{M} AM
  3. Masked Attention矩阵进行 Softmax,每一行的和都为 1。但是单词 0 在单词 1, 2, 3, 4 上的 attention score 都为 0。得到的结果再与 V {V} V 矩阵相乘得到最终的self-attention层的输出结果 Z 1 {Z}_{1} Z1
  4. Z 1 {Z}_{1} Z1 只是某一个head的结果,将多个head的结果concat在一起之后再最后进行Linear Transformation得到最终的Masked Multi-Head Self-attention的输出结果 Z {Z} Z
    在这里插入图片描述

4. Decoder中两个Multi-Head Self-attention区别

第1个Masked Multi-Head Self-attention的 V 、 Q 、 K {V}、{Q}、{K} VQK 均来自Output Embedding。
第2个Multi-Head Self-attention的 V 、 K {V}、{K} VK 来自Encoder的输出 , Q {Q} Q 来自第1个Self-attention layer的输出。
V 、 K {V}、{K} VK 来自Transformer Encoder的输出,所以可以看做句子(Sequence)/图片(image)的内容信息(content,比如句意是:“我有一只猫”,图片内容是:“有几辆车,几个人等等”)。
Q {Q} Q表达了一种诉求:希望得到什么,可以看做引导信息(guide)
通过Multi-Head Self-attention结合在一起的过程就相当于是把我们需要的内容信息指导表达出来

5. Transformer整体结构

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

注:本文源于梳理一片博文

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值