前言
计算机视觉、机器学习,这两个词会让你想到什么?
相信绝大多数人第一反应都是CNN,而持续关注这些领域发展的人,则会进一步联想到近几年大火的Transformer,它不仅在自然语言相关任务上表现优秀,在图像领域同样取得了相当不错的效果。
去年10月份Google推出的Vision Transformer (ViT),就在图像识别任务上用更高的学习效率,达到了不亚于ResNet的精度。当一个模型性能达到SOTA之后,很自然地,人们就会想去探究它的原理,并和先前的模型进行比较。今年上半年,普林斯顿大学就从错误一致性的角度比较了ViT与ResNet,最终发现ViT更容易错判形状相似的物体,而ResNet的识别更依赖纹理信息 [1]。
最近,Google则对网络本身进行了进一步的探索,试图通过追踪模型学习表征的过程,确认ViT和ResNet在处理图像的原理上是否一致。
论文题目:
Do Vision Transformers See Like Convolutional Neural Networks?
论文链接:
http://arxiv.org/abs/2108.08810
方法
ResNet与ViT回顾
在开始研究区别之前,我们先快速回顾一下ResNet和ViT分别是谁,长什么样。
首先是 ResNet,深度残差网络,2015年ImageNet挑战赛冠军。通过如下图所示的残差块实现网络层上的跳跃,从而将模型的优化目标从寻找函数的等价映射改为了逼近零,弱化了网络变深对模型性能的负面影响。目前为止,基于ImageNet数据集训练的ResNet50仍然是图像处理任务中使用频率最高的预训练模型之一。
而 ViT 则是从NLP领域红的发紫的Transformer改编而来。编码-解码的结构,中间加一个多头注意力机制。ViT主要的改变就是在输入端,将图像进行了分块和降维,从而将图像变成一种类似于词语编码的表达方式,方便了后续处理。经过了这一小步的改动,ViT在JFT-300M(ImageNet的300倍放大版,3亿张图像)上预训练的模型成功超越了ResNet152 [2]。
超越ResNet虽然有难度,但也算不上大新闻。ViT能引起讨论热度的主要原因是它跨界了,不仅制霸NLP,如今还可能给CV翻篇。这样的可能性自然是让人坐不住了,如果存在一个方法能作为不同模态不同类型任务的通解,那AI大一统时代说不定也就不远了。
那么,在这一美好愿望成真之前,更需要谨慎地检验: Transformer 处理图像时获取的特征是否和之前主流的 CNN 有所区别?
- 如果它们虽然处理数据方法有所差异,但决定输出的特征是高度相似的,则意味着目前CV的模型已经接近了人类判断图像时所基于的依据
- 而如果模型中决定性的特征有所不同,则可以进一步研究哪一种特征对信息的表征效果更好,或者两类模型还能相互借鉴,从而获得新一轮的性能提升。
比较方法——CKA
基于这样的动机,Google用Centered Kernel Alignment (CKA)对ResNet和ViT的一些关键层进行了检验。首先了解一下CKA这种方法。CKA是Google在2019年提出的,用于衡量神经网络中层与层之间相似度的指标 [3]。
假设想要检测的两层网络分别有和个神经元,取个样本通过模型,则分别可以获取和的表征矩阵。基于点积的相似性,首先可以获得
此处下标F代表Frobenius范数。根据上式,可以推导出
然后根据Hilbert-Schmidt Independence Criterion (HSIC)[3]的表达式,将中的列通过核函数对应到上,使得,,可以得到HISC的经验估计值
此处是中心矩阵,即。归一化之后即为CKA指标
这个指标的优势在于,它能够确定基于不同随机初始化和不同宽度训练的神经网络的隐藏层之间的对应关系。因此,适合用于寻找ResNet和ViT中是否存在有对应的网络层。
关键结论
利用CKA,研究者发现ResNet和ViT在最接近输入的网络底层(lower layer)时,表征的内容持有较大的相似度;然而,由于两个网络处理表征的方式有很大区别,在层层传递之后,在接近输出的网络上层(higher layer)两者的表征最终区别很大。
两个在底层表征上有相似之处的网络,居然长着长着发展到了两个方向。因为ResNet在处理输入时,需要经过更多层才能获得类似于ViT底层的表征,由此引发了一个合理的猜想:两个网络在整合全局信息的能力上存在差异。
为了验证这个想法,研究者先是对ViT的不同层中,注意力集中区域的距离进行的计算,他们发现,ViT无论是低层还是高层,都是局部和全局信息混杂的,相比之下,ResNet更为严格地遵守从局部特征提炼全局特征的处理过程。这是导致两个网络中表征的差异逐层增加的一大关键因素。
另一方面,这种差异的原因还可能来自ViT从底层到高层的相似度比ResNet高的这一现象。研究者认为,是ViT中的跳跃连接结构 (skip connection)保护了底层到高层的表征传递,如下图所示,如果撤掉特定块区上的这种连接结构,对应的表征信息就会立刻“失传”。
由于上述在处理信息过程上的差异,最终,ViT的高层表征能够更精细地保留局部空间信息。尤其是到了最后分类的关键时刻,ResNet还进行了一次全局的平均池化,进一步显著地减少了高层中局部信息的精细度。
通过全方位的比较,包括将隐藏层揪出来细细观察。最终,研究者下定结论:虽然它们在性能上不相上下,但以ResNet为代表的CNN与ViT在处理信息的工艺原理上大相径庭。
最后的话
其实文章的结论没有特别出人意料的地方,毕竟ResNet和ViT的模型结构摆在那里,前期对两个网络分别的原理分析论文也不少了,Google这次的工作其实是把大家直觉性经验性的结论用可复现的实验规范地落在了纸上,并且努力夸夸ViT,好吸引更多研究者采用。
引起白鹡鸰注意的是,在整个验证过程中,ViT模型是Google的,JFT-300M数据集是Google的,CKA度量指标也是Google的,这一整套完整的测评走下来,再一次让人不得不感叹Google的科研实力果然引领潮流。
不仅如此,论文的写作也确实又一次展现了业内标杆的风度,作为一篇原理解释型的文章,它没有将一大坨公式怼到读者脸上,而是通过一系列的自问自答,合理引导读者思路历程,清晰地说明了实验的动机和每个步骤的意义,并用图像佐证观点。
这简直是泥石流中的一股清流,让近期饱受各类奇葩论文的白鹡鸰流下了感动的泪水,并觉得很有写作上的借鉴价值。