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 中的块数。
**评估协议。**我们的实验侧重于图像分类。评估性能 在不同数据大小的模型中,我们使用三个越来越大的数据集,即 ImageNet-1K(1.28M 图像)、ImageNet-21K(12.7M 图像)和 JFT(300M 图像)。继之前的工作之后,我们首先在分辨率为 224 的三个数据集上分别对模型进行 300、90 和 14 个时期的预训练。然后,我们以所需的分辨率对 ImageNet-1K 上的预训练模型进行 30 次微调,并获得相应的评估精度。一个例外是 ImageNet-1K 在 224 分辨率下的表现,可以在预训练结束时直接获得。 请注意,与使用 Transformer 模块的其他模型类似,直接评估在 ImageNet-1K 上以更大分辨率预训练的模型而不进行微调通常会导致性能下降。因此,每当输入分辨率发生变化时,总是采用微调。
**数据增强和正则化。**在这项工作中,我们只考虑两种广泛使用的数据增强,即 RandAugment [44] 和 MixUp [45],以及三种常用技术,包括随机深度 [46]、标签平滑 [47] 和权重衰减 [48],来正则化该模型。直观上,增强和正则化方法的特定超参数取决于模型大小和数据规模,其中强正则化通常应用于较大的模型和较小的数据集。 在一般原则下,当前范式下的一个复杂问题是如何随着数据大小的变化调整预训练和微调的正则化。具体来说,我们有一个有趣的观察结果,如果某种类型的增强在预训练期间完全被禁用,那么在微调期间简单地打开它很可能会损害性能而不是改进。 我们推测这可能与数据分布偏移有关。因此,对于所提出模型的某些运行,我们在两个较大的数据集 ImageNet21-K 和 JFT 上进行预训练时,特意应用了 RandAugment 和小程度的随机深度。尽管这种正则化可能会损害预训练指标,但这允许在微调期间进行更通用的正则化和增强,从而提高下游性能。
4.2 主要结果
ImageNet-1K 仅使用 ImageNet-1K 数据集的实验结果如表 4 所示。 在类似条件下,所提出的 CoAtNet 模型不仅优于 ViT 变体,而且 匹配最好的仅卷积架构,即 EfficientNet-V2 和 NFNet。 此外,我们还在图 2 中对分辨率为 224x224 的所有结果进行了可视化。 正如我们所见,CoAtNet 的扩展性比之前带有注意力模块的模型要好得多。
ImageNet-21K 从表 4 和图 3 中我们可以看出,当使用 ImageNet-21K 进行预训练时,CoAtNet 的优势变得更加明显,明显优于之前所有的模型。 值得注意的是,最好的 CoAtNet 变体实现了 88.56% 的 top-1 准确率,与 88.55% 的 ViTH/14 性能相匹配,这需要在 23 倍大的专有弱标记数据集 (JFT) 上对 2.3 倍大的 ViT 模型进行预训练 2.2 x 更多步骤。 这标志着数据效率和计算效率的显着提高。 JFT 最后,在表 5 中,我们使用 JFT 在大规模数据机制下进一步评估了 CoAtNet。 令人鼓舞的是,我们的 CoAtNet-4 几乎可以与 NFNet-F4+ 设置的 JFT 相媲美,同时在 TPU 训练时间和参数数量方面效率提高 2 倍。 当我们扩大模型以消耗与 NFNet-F4+ 类似的训练资源时,CoAtNet 在 top-1 准确率上达到 89.77%,在可比设置下优于之前的结果。
4.3 消融研究
在本节中,我们将消除我们对 CoAtNet 的设计选择。
首先,我们研究了将卷积和注意力结合到单个计算单元中的相对注意力的重要性。 具体来说,我们比较了两种模型,一种具有相对注意力 另一个没有,在单独的 ImageNet-1K 和 ImageNet-21K 传输设置下。 从表 6 可以看出,当仅使用 ImageNet-1K 时,相对注意力明显优于标准注意力,表明具有更好的泛化能力。 此外,在 ImageNet-21K 传输设置下,相对注意力变量实现了明显更好的传输精度,尽管它们 非常接近的训练前表现。 这表明视觉处理中相对注意力的主要优势不是更高的容量,而是更好的概括。
其次,由于带有 MBConv 块的 S2 和带有相关 Transformer 块的 S3 占据了 CoAtNet 的大部分计算,所以要问的问题是如何拆分 S2(MBConv)和 S3(Transformer)之间的计算以获得良好的性能。 在实践中,它归结为决定每个阶段的块数,我们将其称为“布局”设计。 为此,我们比较了我们在表 7 中试验过的几种不同布局。
• 如果我们保持 S2 和 S3 中的区块总数固定并改变每个阶段的数量,我们会观察到 V0 是 V1 和 V2 之间的最佳点。 基本上,在 S3 中拥有更多 Transformer 块通常会带来更好的性能,直到 S2 中 MBConv 块的数量太小而无法很好地泛化。
• 为了进一步评估最佳点是否也适用于转移设置,其中更高的容量通常被认为更重要,我们进一步比较了在 ImageNet-21K 转移到 ImageNet-1K 设置下的 V0 和 V1。 有趣的是,尽管 V1 在 ImageNet-21K 预训练期间的性能略好于 V0,但 V1 的传输精度明显落后于 V0。 同样,这表明卷积在实现良好泛化方面的重要性。
最后,我们研究了模型细节的两种选择,即每个注意力(默认为 32)头部的维度以及 MBConv 块中使用的归一化类型(默认为 BatchNorm)。 从表 8 中,我们可以看到将头部大小从 32 增加到 64 会略微影响性能,尽管它实际上可以显着提高 TPU 速度。 在实践中,这将是一种可以做出的质量与速度的权衡。 另一方面,BatchNorm 和 LayerNorm 的性能几乎相同,而 BatchNorm 在 TPU 上快 10 - 20%,具体取决于每核批量大小。
5 结论
在本文中,我们系统地研究了卷积和 Transformer 的特性,这导致了一种将它们组合成名为 CoAtNet 的新模型系列的原则方法。 大量实验表明,CoAtNet 兼具 ConvNets 等良好的泛化能力和 Transformers 等卓越的模型容量,在不同的数据大小和计算预算下实现了最先进的性能。 请注意,本文目前专注于用于模型开发的 ImageNet 分类。 然而,我们相信我们的方法适用于更广泛的应用,如对象检测和语义分割。 我们将把它们留给以后的工作。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**