Transformer系列:Classification --> ViT (ICLR2021)

文章地址:https://openreview.net/pdf?id=YicbFdNTTy

1. Motivation

Transformer在NLP中被广泛使用,但是在CNN中的应用就很少。attention在CNN中的应用要么是和CNN结合使用,要么是替换CNN中的某些结构。文章提出直接在image patch上用pure transformer做分类效果也很好。

2. Method

Transformer系列:Classification --> ViT (ICLR2021)_第1张图片

网络结构如上图。原始Transformer的输入是1D sequence,这里将H*W大小的图像分成N个P*P大小的patch作为sequence,N=HW/P^2,并将每个patch拉成1D,接一个全连接映射成长度为D的patch embedding。文章在patch sequence前加了一个可学的[class] embedding学习类别信息,在输出的[class] embedding后接全连接层就可以实现分类。

跟Transformer一样,positional embedding会加在每个patch embedding上,由于作者试过2D-aware positional embedding没有明显效果提升,最后还是用了1D positional embedding。

Encoder由multi-headed self-attention (MSA) 和MLP block交替组成,其中MLP包含2层全连接,激活函数为GELU。每个block前会加layer normalization,block后加residual connection。公式如下:

Transformer系列:Classification --> ViT (ICLR2021)_第2张图片

 

Inductive bias(归纳偏置)

ViT 中图像特定的归纳偏置(局部性、二维邻域结构,平移不变性)比 CNN 少得多。在 ViT 中,只有 MLP 层是局部和平移不变的,而self-attention是全局的。positional embedding对于二维邻域结构的作用也很有限,因为是在训练(或finetune)过程中逐渐学习得到的。

 

Hybrid Architecture (混合结构)

sequence除了用image patch之外,也可以和CNN结合,即用CNN输出的feature map。此时feature patch可以是1*1。

 

训练方式(pretrain and finetune)

ViT需要现在大型数据集上pretrain完,再在自己的小数据集上进行finetune。finetune的时候去掉原来的prediction head,换上零初始化的D*K prediction head (其中K是新的类别数)。在finetune的时候,如果图像大小比pretrain时的大,保持相同的patch size,这样会得到更长的sequence。但此时pretrained position embedding就没有意义了。文章表示可以根据position embedding在图像中的位置对其进行2D interpolation。

 

3.Experiment

3.1与现有方法比较

Transformer系列:Classification --> ViT (ICLR2021)_第3张图片

3.2 对pretraining data的要求

Transformer系列:Classification --> ViT (ICLR2021)_第4张图片

3.3 pre-training compute的影响

Transformer系列:Classification --> ViT (ICLR2021)_第5张图片

3.4 attention可视化

Transformer系列:Classification --> ViT (ICLR2021)_第6张图片

你可能感兴趣的:(Transformer,ICLR,Classification,算法,计算机视觉,深度学习)