欢迎光临散文网 会员登陆 & 注册

ViT论文逐段精读【论文精读】(续)

2021-12-23 15:40 作者:如果我是泡橘子  | 我要投稿

由于vision transformer这篇论文之前说了,它的预训练比用卷积神经网络便宜,所以这里就需要做更多的实验来支持它的论断,因为大家对transformer的印象都是又大又贵,很难训练,下图图五中画了两个表

图五
  • 左图的average-5就是他在五个数据集(ImageNet real、pets、flowers、CIFAR-10、CIFAR-100)上做了evaluation,然后把这个数字平均了

  • 因为ImageNet太重要了,所以作者将ImageNet单独拎出来又画了一张表,如右图所示

  • 但是其实这两张表的结果都差不多

  • 蓝色的圆点表示vit

  • 灰色的圆点表示resnet

  • 橙色的加号表示混合模型(前面是卷积神经网络,后面是transformer)

  • 图中大大小小的点就是各种配置下大小不一样的vision transformer的变体,或者说是resnet的变体

  • 左右两张图中所有的模型都是在JFT 300M数据集上训练的,作者这样训练的目的不想让模型的能力受限于数据集的大小,所以说所有的模型都在最大的数据集上做预训练

上图中几个比较有意思的现象

  • 如果拿蓝色的圆圈所表示的vit去跟灰色圆圈的resnet作比较,就会发现,在同等计算复杂度的情况下,一般transformer都是比resnet要好的,这就证明了:训练一个transformer是要比训练一个卷积神经网络要便宜的

  • 在比较小的模型上面,混合模型的精度是非常高的,它比对应的vision transformer和resnet都要高,按道理来讲,混合模型都应该是吸收了双方的优点:既不需要太多的数据去做预训练,同时又能达到跟vision transformer一样的效果

  • 但是当随着模型越来越大的时候,混合模型就慢慢的跟vision transformer差不多了,甚至还不如在同等计算条件下的vision transformer,为什么卷积神经网络抽出来的特征没有帮助vision transformer更好的去学习?这里作者对此也没有做过多的解释,其实怎么预处理一个图像,怎么做tokenization是个非常重要的点,之后很多论文都去研究了这个问题

  • 如果看整体趋势的话,随着模型的不断增加,vision transformer的效果也在不停地增加,并没有饱和的现象(饱和的话一般就是增加到一个平台就不增加了),还是在不停的往上走的。但是但从这个图中来看的话,其实卷积神经网络的效果也没有饱和

分析完训练成本以后,作者也做了一些可视化,希望通过这些可视化能够分析一下vit内部的表征

  • vision transformer的第一层(linear projection layer,E),下图展示了E是如何embed rgb value,这里主要展示了头28个主成分,其实vision transformer学到了跟卷积神经网络很像,都是这种看起来像gabor filter,有颜色和纹理,所以作者说这些成分是可以当作基函数的,也就师叔,它们可以用来描述每一个图像块的底层的结构

  • 位置编码是如何工作的?如下图所示,这张图描述的是位置编码的相似性,数字越大相似性越高(-1到1,cos),横纵坐标分别是对应的patch,如果是同一个坐标,自己和自己相比,相似性肯定是最高的。从图中可以发现,学到的位置编码是可以表示一些距离信息的,同时它还学习到了一些行和列的规则,每一个图像块都是同行同列的相似性更高,也就意味着虽然它是一个1d的位置编码,但是它已经学到了2d图像的距离概念,这也可以解释为什么在换成2d的位置编码以后,并没有得到效果上的提升,是因为1d已经够用了

  • 最后作者想看一下自注意力是否起作用了,只为之所以想用transformer,就是因为自注意力的操作能够模拟长距离的关系。在NLP中,一个很长的句子里开头的一个词和结尾的一个词也能互相有关联,类比在图像里很远的两个像素点也能够做自注意力,所以作者就是想看一下自注意力到底是不是想期待的一样去工作的。下图展示的是vit large 16这个模型,vit large有24层,所以横坐标所表示的网络深度就是从0到24,图中五颜六色的点就是每一层的transformer block中多头自注意力的头,对于vit large来说一共有16个头,所以每一列其实有16个点。纵轴所表示的是mean attention distance(平均注意力的距离:假如说图上有两个点,平均注意力距离表示的就是整两个点真正的像素之间差的距离乘以他们之间的attention weights,因为自注意力是全局都在做,所以说每个像素点跟每个像素点都会有一个自注意力权重,平均注意力的距离就能反映模型到底能不能注意到两个很远的像素)。图中的规律还还是比较明显的:投机层中,有的自注意力中的头注意的距离还是挺近的,能达到20个像素,但是有的头能达到120个像素,这也就证明了自注意力真的能够在网络最底层,也就是刚开始的时候就已经能够注意到全局上的信息了,而不是像卷神经网络一样,刚开始第一层的receptive field(感受野)非常小,只能看到附近的一些像素;随着网络越来越深,网络学到的特征也会变得越来越高级,越来越具有语义信息;大概在网络的后半部分,模型的自注意力的距离已经非常远了,也就是说它已经学到了带有语义性的概念,而不是靠邻近的像素点去进行判断

  • 为了验证上面所得到的结论,作者又画了另外一个图,如下图所示。图中是用网络中最后一层的out token所作的图,从图中可以发现,如果用输出的token的自注意力折射回原来的输入图片,可以发现模型确实是学习到了这些概念。对于全局来说,因为输出的token是融合了所有的信息(全局的特征),模型已经可以关注到与最后分类有关的图像区域



在文章的最后,作者还做了如何用自监督的方式去训练vision transformer的测试

这篇论文算上附录22页,在这么多的结果中,作者把别的结果都放到了附录里,而把自监督放到了正文中,可见它的重要性。它之所重要主要是因为在nlp领域,transformer这个模型确实起到了很大的推动作用,但另外一个真正让transformer火起来的原因其实是大规模的自监督训练,二者缺一不可。NLP中的自监督无非就是完形填空或者是预测下一个词,但是因为这篇论文主要仿照的是BERT,所以作者就想能不能也借鉴BERT这个目标函数去创建一个专属于vision的目标函数,BERT使用的就是完形填空(mask language modeling,给定一个句子,然后将一些词mask掉,然后通过一个模型,最后将它预测出来),同理,本文就仿造了一个mask patch prediction,意思就是给定一张图片,将它打成很多patch,然后将某些patch随机抹掉,通过这个模型以后,再将这些patch重建出来。

但是最后vit base 16在ImageNet只能达到80的左右的准确率,虽然相对于从头来训练vision transformer已经提高了两个点,但是跟最好的有监督的训练方式比差了4个点,所以作者将跟对比学习的结果当作是未来的工作(对比学习是去年CV圈最火的人们话题,是所有自监督学习中表现最好的,所以紧接着vit MoCo v3和DINO就出现了,这两篇论文都是用对比学习的方式去训练了一个vision transformer)



8、评价

这篇论文写的还是相当简洁明了的,在有这么多内容和结果的情况下,做到了有轻有重,把最重要的结果都放到了论文里,图和表也都做的一目了然

从内容上来说,可以从各个角度来进行分析、提高或者推广vision transformer

  • 如果从任务角度来说,vision transformer只是做了分类,所以还可以拿他去做检测、分割甚至别的领域的任务

  • 如果从改变结构的角度来讲,可以去改变刚开始的tokenization,也可以改中间的transformer block,后来就已经有人将自注意力换成了MLP,而且还是可以工作得很好(几天前,甚至有一篇论文叫做mataformer,他认为transformer真正工作的原因是transformer这个架构而不是因为某些算子,所以他就将自注意力直接换成了池化操作然后发现,用一个甚至不能学习的池化操作(文中提出了一个pool former模型)也能在视觉领域取得很好的效果),所以在模型的改进上也大有可为

  • 如果从目标函数来讲,可以继续采用有监督,也可以尝试很多不同的自监督训练的方式

最重要的是vit打破了NLP和CV之间的鸿沟,挖了一个更大的多模态的坑,可以用它去做视频、音频,甚至还可以去做一些基于touch的信号,也就是说各种modality的信号都可以拿来使用





----end----

ViT论文逐段精读【论文精读】(续)的评论 (共 条)

分享到微博请遵守国家法律