【图像分类】论文翻译——CoAtNet:结合卷积和注意力 适用于所有数据大小

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

2.1 合并卷积和自注意力


对于卷积,我们主要关注 MBConv 块 [26],它采用深度卷积 [27] 来捕获空间交互。 这种选择的一个关键原因是 Transformer 和 MBConv 中的 FFN 模块都采用了“反向瓶颈”的设计,首先将输入的通道大小扩展了 4 倍,然后将 4 倍宽的隐藏状态投影回原始状态 通道大小以启用残差连接。 除了倒置瓶颈的相似性之外,我们还注意到深度卷积和自注意力都可以表示为预定义感受野中值的加权和。 具体来说,卷积依赖于一个固定的内核来从局部感受野收集信息

其中 x_{i}),y_{i}\epsilon \mathbb{R}^{D})分别是位置 i 的输入和输出,\pounds)(i) 表示 i 的局部邻域,例如图像处理中以 i 为中心的 3x3 网格。相比之下,self-attention 允许感受野是整个空间位置,并根据对 (x_{i}); xj) 之间重新归一化的成对相似度计算权重:

其中 G 表示全局空间空间。在讨论如何最好地组合它们之前,值得比较它们的相对优势和劣势,这有助于找出我们希望保留的优良特性。

• 首先,depthwise 卷积核 w_{i-j}) 是一个静态值的输入独立参数,而注意力权重 A_{i,j})动态地取决于输入的表示。因此,它是 自注意力更容易捕捉不同空间位置之间复杂的关系交互,这是我们在处理高级概念时最想要的属性。然而,灵活性伴随着更容易过度拟合的风险,尤其是在数据有限的情况下。

• 其次,注意给定任何位置对(i; j),对应的卷积权重w_{i-j})只关心它们之间的相对位移,即i-j,而不是i 或j 的具体值。这个属性通常被称为翻译等效性,已经发现它可以提高有限大小数据集下的泛化能力 [28]。由于使用绝对位置嵌入,标准 Transformer (ViT) 缺少此属性。这部分解释了为什么当数据集不是很大时,ConvNets 通常比 Transformers 更好。

• 最后,感受野的大小是自注意力和卷积之间最重要的区别之一。一般来说,更大的感受野提供更多的上下文信息,这可能导致更高的模型容量。因此,全局感受野一直是在视觉中使用自注意力的关键动机。然而,一个大的感受野需要更多的计算。在全局注意力的情况下,复杂性是二次方 w.r.t.空间大小,这是应用自注意力模型的基本权衡。

鉴于上述比较,理想模型应该能够结合表 1 中的 3 个理想属性。 (1) 和 Eqn 中的 self-attention。 (2),可以实现这一点的一个简单的想法是简单地将全局静态卷积核与自适应注意矩阵相加,无论是在 Softmax 归一化之后还是之前,即,

有趣的是,虽然这个想法似乎过于简化,但预规范化版本 y^{pre}) 对应于相对自我注意的特定变体 [29, 30]。 在这种情况下,注意力权重 A_{i,j}) 由平移等方差的w_{i-j})和输入自适应 x_{i}^{\tau })xx_{j}) 共同决定,根据它们的相对大小可以同时享受这两种效果。 重要的是,请注意,为了在不增加参数数量的情况下启用全局卷积核,我们将 w_{i-j}) 的符号重新加载为标量(即 w\epsilon \mathbb{R}^{O(|G|)}))而不是方程中的向量。 (1). w 的标量公式的另一个优点是,为所有 (i; j) 检索w_{i-j}) 显然是通过计算成对点积注意力来包含的,因此导致最小的额外成本(参见附录 A.1)。 考虑到好处,我们将使用 Transformer 块和 Eqn 中的预归一化相对注意变量。 (3) 作为所提出的 CoAtNet 模型的关键组件。

2.2 纵向布局设计


在找出将卷积和注意力结合起来的巧妙方法之后,我们接下来考虑如何利用它来堆叠整个网络。 正如我们上面讨论的,全局上下文具有二次复杂性 w.r.t.空间大小。因此,如果我们直接应用方程中的相对注意力。对于原始图像输入,由于在任何常见尺寸的图像中都有大量像素,因此计算会过慢。因此,要构建一个在实践中可行的网络,我们主要有三种选择:

(A) 在特征图达到可管理的水平后,执行一些下采样以减小空间大小并使用全局相对注意力。

(B) 强制局部注意力,就像在卷积中一样,将全局感受野 G 限制在局部场\pounds) 上 [22, 21]。

© 用某些线性注意力变量替换二次 Softmax 注意力,该变量只有线性复杂度 w.r.t.空间大小 [12, 31, 32]。

我们对选项 © 进行了简短的试验,但没有得到相当好的结果。对于选项 (B),我们发现实现局部注意力涉及许多需要密集内存访问的非平凡形状格式化操作。在我们选择的加速器(TPU)上,这种操作被证明是极其缓慢的[33],这不仅违背了加速全局注意力的初衷,而且损害了模型容量。因此,由于最近的一些工作已经研究了这种变体 [22, 21],我们将重点关注选项 (A),并将我们的结果与我们的实证研究(第 4 节)中的结果进行比较。 对于选项 (A),下采样可以通过 (1) 具有侵略性的卷积茎来实现 步幅(例如,步幅 16x16)如 ViT 或(2)多阶段网络,如 ConvNets 中的渐进池化。通过这些选择,我们推导出 5 个变体的搜索空间,并在对照实验中对它们进行比较。

• 当使用 ViT Stem 时,我们直接将 L 个 Transformer 块相对注意力堆叠起来,这 我们表示为 VITREL。

• 当使用多阶段布局时,我们模仿 ConvNets 构建 5 个阶段的网络(S0、 S1、S2、S3 和 S4),空间分辨率从 S0 到 S4 逐渐降低。在每个阶段的开始,我们总是将空间大小减少 2 倍并增加通道数。第一阶段 S0 是一个简单的 2 层卷积 Stem,S1 总是使用带有挤压激励 (SE) 的 MBConv 块,因为空间大小对于全局注意力来说太大了。从 S2 到 S4,我们考虑 MBConv 或 Transformer 块,约束条件是卷积阶段必须出现在 Transformer 阶段之前。该约束基于卷积更擅长处理早期阶段更常见的局部模式的先验。这导致 4 个变体具有越来越多的 Transformer 阶段,C-C-C-C、C-C-C-T、C-C-T-T 和 C-T-T-T,其中 C 和 T 分别表示卷积和Transformer。

为了系统地研究设计选择,我们考虑了泛化能力和模型能力两个基本方面:对于泛化,我们对训练损失和评估精度之间的差距感兴趣。如果两个模型具有相同的训练损失,那么评估精度较高的模型具有更好的泛化能力,因为它可以更好地泛化到看不见的评估数据集。当训练数据量有限时,泛化能力对数据效率尤为重要。对于模型容量,我们测量拟合大型训练数据集的能力。当训练数据丰富且过拟合不成问题时,具有较高容量的模型在经过合理的训练步骤后将获得更好的最终性能。请注意,由于简单地增加模型大小可以导致更高的模型容量,为了进行有意义的比较,我们确保 5 个变体的模型大小具有可比性。 为了比较泛化和模型容量,我们在 ImageNet-1K (1.3M) 和 JFT (>300M) 数据集上分别训练了 300 和 3 个时期的混合模型的不同变体,两者都没有任何正则化或增强。图 1 总结了两个数据集上的训练损失和评估准确度。

• 从 ImageNet-1K 结果来看,一个关键观察是,就泛化能力(即训练和评估指标之间的差距)而言,我们有 C-C-C-C ≈ C-C-C-T ≥ C-C-T-T > C-T-T-T >>VIT_{REL}):

特别是,VITREL 明显比其他变体差很多,我们推测 与在其激进的下采样 Stem 中缺乏适当的低级信息处理有关。 在多阶段变体中,总体趋势是模型的卷积阶段越多,泛化差距越小。

• 至于模型容量,从 JFT 比较来看,训练结束时的训练和评估指标都表明以下排名:

C-C-T-T ≈ C-T-T-T > VIT_{REL}) > C-C-C-T > C-C-C-C:

重要的是,这表明仅仅拥有更多的 Transformer 块并不一定意味着更高的视觉处理能力。 一方面,虽然最初更糟,但 VIT_{REL}) 最终赶上了两个具有更多 MBConv 阶段的变体,表明 Transformer 块的容量优势。 另一方面,C-C-T-T 和 C-T-T-T 明显优于 VIT_{REL}),这表明具有激进步幅的 ViT 词干可能丢失了太多信息,因此限制了模型容量。 更有趣的是,C-C-T-T ≈ C-T-T-T 的事实表明,为了处理低级信息,像卷积这样的静态局部操作可以与自适应全局注意力机制一样强大,同时大大节省计算和内存使用。

最后,为了在 C-C-T-T 和 C-T-T-T 之间做出决定,我们进行了另一个可转移性测试3——我们在 ImageNet-1K 上对上述两个 JFT 预训练模型进行了 30 次微调,并比较了它们的转移性能。 从表 2 中可以看出,尽管具有相同的预训练性能,但 C-C-T-T 的传输精度明显优于 C-T-T-T。

考虑到泛化性、模型容量、可转移性和效率,我们为 CoAtNet 调整了 C-C-T-T 多阶段布局。 更多模型细节包含在附录 A.1 中。

3 相关工作

======

卷积网络构建块。 卷积网络 (ConvNets) 一直是许多计算机视觉任务的主要神经架构。 传统上,常规卷积,例如 ResNet 块 [3],在大规模 ConvNet 中很流行; 相比之下,深度卷积 [27] 因其较低的计算成本和较小的参数大小而在移动平台中很受欢迎 [26]。 最近的工作表明,基于深度卷积的改进的反向残差瓶颈(MBConv [26, 34])可以实现高精度和更好的效率 [5, 19]。 如第 2 节所述,由于 MBConv 和 Transformer blocks 之间的强连接,本文主要采用 MBConv 作为卷积构建块。

**自注意力和Transformers。**由于具有自我注意的关键成分,Transformer 已被广泛用于神经语言处理和语音理解。作为一项早期工作,独立的自注意力网络 [33] 表明,单独的自注意力可以很好地处理不同的视觉任务,尽管存在一些实际困难。最近,ViT [13] 将 vanilla Transformer 应用于 ImageNet 分类,并在大规模 JFT 数据集上进行预训练后取得了令人印象深刻的结果。然而,当训练数据有限时,ViT 在很大程度上仍然落后于最先进的 ConvNets。此后,许多最近的工作都集中在改进视觉 Transformer 以提高数据效率和模型效率。为了更全面地回顾 Vision Transformers,我们建议读者参考专门的调查 [35, 36]。

Relative attention.。在相对关注的总称下,出现了各种变种 在文献中 [29, 37, 38, 33, 39, 30]。一般来说,我们可以将它们分为两类: (a) 依赖于输入的版本,其中额外的相对注意力分数是输入状态 f(xi; xj; i − j) 的函数,以及 (b) 独立于输入的版本 f(i − j)。 CoAtNet 中的变体属于与输入无关的版本,类似于 T5 [30] 中使用的变体,但与 T5 不同的是,我们既不共享跨层的相对注意力参数,也不使用分桶机制。作为输入独立性的一个好处,为所有 (i; j) 对获得 f(i − j) 在计算上比在 TPU 上依赖于输入的版本便宜得多。此外,在推理时,这只需要计算一次并缓存以备将来使用。最近的一项工作 [22] 也利用了这种与输入无关的参数化,但它将感受野限制为局部窗口。 结合卷积和自注意力。将卷积和自注意力相结合进行视觉识别的想法并不新鲜。一种常见的方法是使用显式自注意力或非局部模块 [9, 10, 11, 12] 来增强 ConvNet 主干,或者用标准自注意力 [11] 或更灵活的线性组合替换某些卷积层注意和卷积 [40]。虽然自注意力通常会提高准确性,但它们通常会带来额外的计算成本,因此通常被视为 ConvNet 的附加组件,类似于挤压和激励 [41] 模块。相比之下,在 ViT 和 ResNet-ViT [13] 取得成功之后,另一个流行的研究路线从 Transformer 主干开始,并试图将显式卷积或卷积的一些理想特性合并到 Transformer 主干中 [25, 24, 23, 22 , 21, 42, 43]。

虽然我们的工作也属于这一类,但我们表明我们的相对注意力实例是深度卷积和基于内容的注意力的自然混合,附加成本最低。 更重要的是,从泛化和模型容量的角度出发,我们采用系统的方法进行垂直布局设计,并展示不同的网络阶段如何以及为什么喜欢不同类型的层。 因此,与简单地使用现成的 ConvNet 作为茎层的模型相比,例如 ResNet-ViT [13],CoAtNet 在整体尺寸增加时也会缩放卷积阶段(S2)。 另一方面,与采用局部注意力[22, 21] 的模型相比,CoAtNet 始终对 S3 和 S4 使用完全注意力来确保模型容量,因为 S3 占据了大部分计算和参数。

4 实验

====

在本节中,我们将 CoAtNet 与之前在可比设置下的结果进行比较。 为完整起见,此处未提及的所有超参数都包含在附录 A.2 中。

4.1 实验设置


CoAtNet 模型族。为了与现有不同大小的模型进行比较,我们还设计了一系列 CoAtNet 模型,如表 3 所示。总体而言,我们始终将 S1 到 S4 的通道数量加倍,同时确保 Stem S0 的宽度更小或相等到S1。 此外,为简单起见,当增加网络深度时,我们只缩放 S2 和 S3 中的块数。

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-b6QFedUm-1713216425274)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值