计算机视觉"新"范式:Transformer | NLP和CV能用同一种范式来表达吗?

自从Transformer出来以后 , Transformer便开始在NLP领域一统江湖 。
而Transformer在CV领域反响平平 , 一度认为不适合CV领域 , 直到最近计算机视觉领域出来几篇Transformer文章 , 性能直逼CNN的SOTA , 给予了计算机视觉领域新的想象空间 。
本文不拘泥于Transformer原理和细节实现(知乎有很多优质的Transformer解析文章 , 感兴趣的可以看看) , 着重于Transformer对计算机视觉领域的革新 。
首先简略回顾一下Transformer , 然后介绍最近几篇计算机视觉领域的Transformer文章 , 其中ViT用于图像分类 , DETR和Deformable DETR用于目标检测 。
从这几篇可以看出 , Transformer在计算机视觉领域的范式已经初具雏形 , 可以大致概括为:Embedding->Transformer->Head
一些有趣的点写在最后~~
1 Transformer
Transformer详解:
下面以机器翻译为例子 , 简略介绍Transformer结构 。
1. Encoder-Decoder
Transformer结构可以表示为Encoder和Decoder两个部分
计算机视觉"新"范式:Transformer | NLP和CV能用同一种范式来表达吗?文章插图
Encoder和Decoder主要由Self-Attention和Feed-Forward Network两个组件构成 , Self-Attention由Scaled Dot-Product Attention和Multi-Head Attention两个组件构成 。
Scaled Dot-Product Attention公式:
Multi-Head Attention公式:
Feed-Forward Network公式:
2. Positional Encoding
计算机视觉"新"范式:Transformer | NLP和CV能用同一种范式来表达吗?文章插图
如图所示 , 由于机器翻译任务跟输入单词的顺序有关 , Transformer在编码输入单词的嵌入向量时引入了positional encoding , 这样Transformer就能够区分出输入单词的位置了 。
引入positional encoding的公式为:
是位置 ,是维数 ,是输入单词的嵌入向量维度 。
3. Self-Attention
3.1 Scaled Dot-Product Attention
计算机视觉"新"范式:Transformer | NLP和CV能用同一种范式来表达吗?文章插图
在Scaled Dot-Product Attention中 , 每个输入单词的嵌入向量分别通过3个矩阵,和 来分别得到Query向量 , Key向量和Value向量 。
计算机视觉"新"范式:Transformer | NLP和CV能用同一种范式来表达吗?文章插图
如图所示 , Scaled Dot-Product Attention的计算过程可以分成7个步骤:

  1. 每个输入单词转化成嵌入向量 。
  2. 根据嵌入向量得到 ,,三个向量 。
  3. 通过 , 向量计算 :。
  4. 对 进行归一化 , 即除以。
  5. 通过 激活函数计算。
  6. 点乘Value值, 得到每个输入向量的评分。
  7. 所有输入向量的评分 之和为 :。
上述步骤的矩阵形式可以表示成:
计算机视觉"新"范式:Transformer | NLP和CV能用同一种范式来表达吗?文章插图
与Scaled Dot-Product Attention公式一致 。
3.2 Multi-Head Attention
计算机视觉"新"范式:Transformer | NLP和CV能用同一种范式来表达吗?文章插图
如图所示 , Multi-Head Attention相当于h个不同Scaled Dot-Product Attention的集成 , 以h=8为例子 , Multi-Head Attention步骤如下:
  1. 将数据 分别输入到8个不同的Scaled Dot-Product Attention中 , 得到8个加权后的特征矩阵。
  2. 将8个 按列拼成一个大的特征矩阵 。
  3. 特征矩阵经过一层全连接得到输出。
Scaled Dot-Product Attention和Multi-Head Attention都加入了short-cut机制 。


推荐阅读