1. 首页 > 常识

正面刚CNN,Transformer居然连犯错都像人类|细胞|序列|卷积|上下文|纹理

本文为大家介绍了 正面刚CNN,Transformer居然连犯错都像人类|细胞|序列|卷积|上下文|纹理 ,还有的小伙伴在问,下面小编给大家细致的讲述一下。

梦晨 水木番 发自 凹非寺

量子位 报道 | 公众号 QbitAI

这是你眼里的一只猫:

这是CNN眼里的一只猫:

这是ViT (Vision Transformer)眼里的一只猫:

从去年起,Transformer忙着跨界CV,如ViT在图像分类上准确率已超过CNN,大有取代之势。

这背后的原因是什么?

最近普林斯顿的一项研究认为,Transformer的运作方式更接近人类,连犯错的方式都和人类一样。

研究团队在图像分类的准确率之外,增加了对错误类型的分析。

结果发现,与CNN相比,ViT更擅长判断形状

此前在ICLR2019上发表的一篇论文提出,用ImageNet训练的CNN模型更倾向于通过纹理分类图像。

如下图中混合了大象皮肤纹理的猫被判断成了大象。

△来自arXiv:1811.12231

虽然说这更可能和ImageNet的数据纹理信息更丰富有关。

但ViT模型,使用相同数据集训练,就倾向于通过形状分类图像,并且表现比CNN更好。

用形状分类物体也是人类的倾向。不信的话,试试回答下图的问题:右面的三个物体中哪个与左边的是同类?

△来自DOI: 10.1016/0749-596X(92)90040-5

这意味着,使用ViT不仅能建立更高效的视觉神经网络,甚至对理解人类视觉的运作方式都有帮助。

这么神奇?

下面来看看CNN与Transformer与人脑的联系分别在哪里。

CNN:从猫身上获得灵感

大脑的不同区域对视觉信息有不同的处理方式,CNN主要模仿的是“腹侧流 (Ventral Stream)”在物体识别、分类上的运作方式。

1981年获得诺贝尔生理和医学奖,由神经科学家Hubel和Wiesel发现猫的视觉皮层中有简单细胞复杂细胞两种。

每个简单细胞对一个特定角度的长条物体反应最强烈,而复杂细胞接受许多个简单细胞传出的信号,就能做到将不同角度的长条物体识别成同一个。

在CNN中,这两种细胞的工作被分配给了卷积层池化层

卷积层中的神经元像简单细胞一样,仅和上一层的部分区域相连接,学习局部特征。

最大池化 (Max Pooling)操作就是模仿复杂细胞,对简单细胞中信号最强的作出反应。

这就是CNN从动物视觉中学到的第一个重要特性“局部连接”。

在卷积层和池化层中使用局部连接,仅在最后输出结果前加入全连接层,使CNN获得了“平移不变性”。

也就是把图像稍微挪动位置,也可以识别成相同的特征。

另外,与全连接的神经网络相比,局部连接的方式还大大减少了需要的参数量,降低训练成本。

为了进一步节省资源、提高效率,CNN在此基础上发展出另一个特性“权重共享”。

隐藏层中的每个神经元都使用相同的过滤器,也就是卷积核

就像这样:

△来自freecodecamp

卷积核中的相同的参数使用在每一次卷积操作中,进一步降低了需要的参数量。

不过,与生物视神经的不同之处也随之出现了。

ViT: 拥有多个注意力中心

让我们再来看看人眼的注意力机制

人是不能同时看清视野左右两端边缘上的物体的。

当你把目光聚焦到一边时,另一边只能模糊地感觉到有无物体存在,看不清具体的形状或颜色。

不信的话现在就可以试一试。

这是因为感光细胞在视网膜上的分布并是不均匀的。

人眼的感光细胞分为视杆细胞(Rods)和视锥细胞(Cones)两种。

视杆细胞主要负责感知光的亮度,不能很好地分辨细节。

而在光亮度足够时能分辨颜色和形状的视锥细胞,集中分布在视网膜中心处。

只有在目光聚焦的位置上可以看清细节,所以我们观察时要不停地转动眼球,将目光聚焦在视野上的不同位置,这就产生了注意力机制。

不过比人眼更先进的是,神经网络可以拥有多个注意力,被称为多头注意力(Multi-Head Attention)机制。

一句话是一个序列

在NLP任务中,Transformer将文本作为一个序列来处理。

有了注意力机制,就可以在长序列中注意到每个词与其他词间的关系,实现上下文关联的机器翻译。

一张图也是一个序列

谷歌大脑团队进一步提出,图像在分解成小块之后,再配合位置编码,也可以当作一个序列来处理。

就像在NLP领域Transformer可以有效注意到一个词与上下文的关系一样,在CV领域也可以汇总图像的全局特征进行学习。

用于图像分类的ViT就此诞生,开启了Transformer的跨界刷屏之旅。

犯错的方式都和人一样

在普林斯顿大学对比CNN和ViT的这篇论文中,还建立了错误一致性这个指标来对各个模型进行评判。

从WordNet中选取了16个概念(如飞机、熊、键盘等)来衡量CNN和ViT犯错的类型。

从结果可以看出,ViT和人类一样,更倾向于通过形状判断物体。

未来趋势

ViT问世之初来势汹汹,以至于很多人都在问,注意力机制这是要取代卷积吗?

从最近的趋势看来,Transformer在CV领域的应用,反倒是刺激了二者的结合统一

卷积擅长提取细节,要掌握全局信息往往需要堆叠很多个卷积层。

注意力善于把握整体,但又需要大量的数据进行训练。

如果把两者结合起来,是不是能够取长补短?

把注意力引入CNN的有谷歌推出的BoTNet就是简单把ResNet的最后瓶颈块中的3x3卷积替换成全局自注意力,没有别的改变,就在减少开销的情况下提高了性能。

之后麦吉尔大学和微软又把卷积引入Transformer架构的CvT(Convolutional vision Transformers),去除了Transformer中的位置编码,提升对于高分辨率视觉任务的效果。

最近,谷歌大脑Quoc Le团队利用简单的相对注意力把两大架构自然地统一起来,提出了混合模型CoAtNet

看来,强强联合果然不错。

这还没结束,除了卷积与注意力的协作以外,甚至有人从更高的层面开始尝试将二者统一。

上海交大和华为的研究,用对卷积特征的变换操作达到近似自注意力的效果,提出全新的算子X-Volution,可以在任何现代神经网络结构中使用。

港中文提出更是将CNN、Transformer以及MLP都统一在一起,提出了用于多头上下文聚合的通用结构Container,取得了超越三大架构及混合架构的成绩。

ViT:

https://arxiv.org/abs/2010.11929

ViT比CNN更像人类:

https://arxiv.org/abs/2105.07197

CNN纹理偏差的来源:

https://arxiv.org/abs/1911.09071

BoTNet:

https://arxiv.org/abs/2101.11605

CvT:

https://arxiv.org/abs/2103.15808

CoAtNet:

https://arxiv.org/abs/2106.04803

X-Volution:

https://arxiv.org/abs/2106.02253

Container:

https://arxiv.org/abs/2106.01401

参考链接:

[1]https://arxiv.org/abs/1706.09077

[2]https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53

[3]https://arxiv.org/pdf/2101.01169.pdf

[4]https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html

 正面刚CNN,Transformer居然连犯错都像人类|细胞|序列|卷积|上下文|纹理

卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法.20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的.

200+这个是hinton matlab代码的C++改写版. convnetjs - Star,SAE,首选的肯定是LIBSVM这个库;RBM#47. DeepLearn Toolbox - Star,包括了CNN;C++SVM方面,Java.

CNN卷积神经网络是一种深度模型.它其实老早就已经可以成功训练并且应用了(最近可能deep learning太火了,CNNs也往这里面靠.虽然CNNs也属于多层神经网络架构,但把它置身于DL家族,还是有不少人保留自己的理解的). 它在原始的输入中应用可训练的滤波器trainable filters和局部邻域池化操作local neighborhood pooling operations,得到一个分级的且逐渐复杂的特征表示.有实践表示,如果采用合适的规则化项来训练,它可以达到非常好的效果.CNN还让人青睐的一点就是它会对例如姿势、光照和复杂背景存在不变性.