Early Convolutions Help Transformers See Better(NeurIPS 2021, Meta)

news2024/12/24 9:14:09

paper:Early Convolutions Help Transformers See Better

出发点

本文的出发点是解决 ViT 模型在优化性方面的问题。作者假设问题主要出现在 ViT 的早期视觉处理部分,即 "patchify" 过程,这是通过一个大的步幅和大核卷积来实现的。这种设计与典型卷积层的设计选择相矛盾。为了验证这个假设,作者将 ViT 的 "patchify" 过程替换为一个由少量叠加的 3×3 卷积组成的简单对照组。

创新点

作者通过实验表明,用卷积替换 ViT 的 "patchify" 过程显著提高了优化稳定性,并提高了最终模型的准确性。具体包括:

  1. 卷积stem的引入:通过在 ViT 模型中引入轻量级的卷积stem,提高了模型的优化稳定性和性能。
  2. 优化器选择的灵活性:卷积stem使得 ViT 模型可以在不显著降低准确率的情况下,首次实现了 AdamW 和 SGD 的灵活使用。
  3. 学习率和权重衰减选择的稳定性:卷积stem使得 ViT 模型对学习率和权重衰减选择的敏感性显著降低。
  4. 性能提升:卷积stem的 ViT 模型在 ImageNet 顶级错误率方面的性能改进,使其能够超过最先进的 CNNs,而原始 ViT 模型则不能。

方法介绍

\(\mathbf{ViT}_P\) models. 之前的ViTs包括不同大小的variants如ViT-Tiny、ViT-Small、ViT-Base等,为了便于与CNN比较,CNN通常标准化为1 gigaflop(GF)、2GF、4GF等,作者对原始的ViT进行了修改来得到对应这些复杂度的模型,如表1左所示。下表P表示这些模型使用了原始的patchify stem。

\(\mathbf{ViT}_C\) models. 这里下标C表示使用的是conv stem,卷积stem堆叠多个3x3卷积和一个1x1卷积用来对齐通道维度。通过conv stem将224x224的输入图像快速降采样到14x14大小,其中所有的3x3卷积要么步长为2同时输出通道翻倍,要么步长为1且输出通道保持不变。在 \(\mathbf{ViT}_C\) 中为了弥补conv stem带来的额外FLOPs作者还去掉了一个transformer block,如图1所示。

 

具体配置如表1右所示,\(\mathbf{ViT}_P\) 和 \(\mathbf{ViT}_C\) 

对应的模型在所有复杂度指标上都紧密匹配包括flops和runtime。

许多文献都指出ViT模型的优化具有挑战性,例如在中等大小的数据集(ImageNet-1K)上训练时只能得到一般的精度、对数据增强和优化器的选择敏感、当网络较深时表现不佳等,作者将这些优化特征称为 \(optimizability\) 可优化性。作者通过实验对比了patchify stem和conv stem在训练长度稳定性、优化器稳定性、超参稳定性和最佳性能这四点上的差异。

Training length stability. 在ImageNet数据集上,作者将400个epoch的top-1精度作为近似的渐近结果approximate asymptotic result,即训练更长时间也不会有意义的提高top-1精度了。然后将其与训练50、100、200个epoch的模型精度进行对比,并将与渐近精度之间的差距定义为训练长度稳定性。直观上来说这是一种衡量收敛速度的指标,收敛速度更快有明显的好处,特别是在训练多个模型时。

Optimizer stability. ViTs一般采用AdamW优化器,在DeiT这篇文章中指出将优化器替换为SGD时精度下降了7%。相反在CNN如ResNet中使用各种优化器并不会有明显的精度差异。作者将优化器稳定性定义为AdamW和SGD之间的精度差距。

Hyperparameter (lr, wd) stability. 学习率(learning rate, lr)和权重衰减(weight decay, wd)是控制SGD和AdamW算法优化的最重要的超参之一。新的模型和数据集通常需要搜索它们的最优值,它们的选择会极大地影响模型的结果。作者希望有一个模型和优化器可以在lr和wd较广的选择范围内都能得到良好的结果。作者通过比较使用不同lr和wd值训练的模型的误差分布函数(EDFs)来探索这种超参的稳定性。

Peak performance. 每个模型的最佳精度是常用的衡量指标,它通常没有仔细控制训练细节,如数据增强、正则化方法、训练epoch数、lr和wd调优等。为了进行更鲁棒的比较,作者将最佳性能定义为训练400个epoch得到的结果,且使用表现最好的优化器和调整过的lr和wd。

稳定性实验

在定义了四种指标后,作者进行了详细的实验来比较patchify stem和conv stem的表现。

Training Length Stability

图2展示了50、100、200个epoch和渐近精度(400个epoch)之间的绝对误差deltas(\(\Delta
\)top-1),可以看到在多个模型复杂度范围下 \(\mathbf{ViT}_C\) 比 \(\mathbf{ViT}_P\) 的收敛速度更快,并缩小了与CNN收敛速度的差距,在50个epoch下最为明显。

Optimizer Stability

图3展示了不同优化器的训练结果,作为baseline,RegNetY在用SGD或AdamW训练时几乎没有差距,而在使用SGD进行训练时,\(\mathbf{ViT}_P\) 下降明显,与之相比,\(\mathbf{ViT}_C\) 分别用SGD和AdamW训练表现出了更小的差距。

Learning Rate and Weight Decay Stability

作者用误差分布函数EDFs来量化不同模型对lr和wd的敏感性,EDFs的计算方法是对一组从低到高的误差结果进行排序,并绘制误差增加时结果的累积比例。作者生成一个模型的EDFs作为lr和wd的函数,直观上看,如果一个模型对这些超参的选择比较鲁棒,那么EDFs曲线会比较steep(所有模型的表现相似),而如果模型对超参的选择比较敏感那么EDFs曲线会比较shallow(性能比较分散)。

 

图4展示了AdamW训练的模型的散点图和EDFs,图5展示了SGD的结果。可以看到在所有情况下,相较于 \(\mathbf{ViT}_P\),\(\mathbf{ViT}_C\) 显著提高了对lr和wd的稳定性。

Peak Performace

图6展示了训练速度和top-1误差的曲线图,左侧是CNN模型的对比,从中间图可以看到 \(\mathbf{ViT}_C\) 比 \(\mathbf{ViT}_P\) 的误差更小,右侧是在ImageNet-21k上预训练后在ImageNet-1k上测试的结果,同样 \(\mathbf{ViT}_C\) 比 \(\mathbf{ViT}_P\) 的误差更小。

结论

通过上述实验, 作者建议在 ViT 模型中使用标准、轻量级的卷积stem作为一种更稳健的架构选择。这个研究表明,在网络早期视觉处理阶段引入卷积可以显著改善 ViT 模型的优化性和性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1931191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux入门攻坚——28、php、mysql基础

httpdphp:是在httpd中启用模块,不同的工作模式,使用的模块不同 modules httpd:prefork --> libphp5.so httpd:event or worker --> libphp5-zts.so php:引入zend engine后,分为…

算法实验3:贪心算法的应用

实验内容 &#xff08;1&#xff09;活动安排问题 设有n个活动的集合E{1, 2, …, n}&#xff0c;其中每个活动都要求使用同一资源&#xff0c;而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi&#xff0c;且si <f…

# Redis 入门到精通(五)-- redis 持久化(3)

Redis 入门到精通&#xff08;五&#xff09;-- redis 持久化&#xff08;3&#xff09; 一、redis 持久化–AOF 自动重写配置 1、AOF 自动重写方式–自动重写触发条件设置 auto-aof-rewrite-min-size size auto-aof-rewrite-percentage percent2、AOF 自动重写方式-- 自动重…

如何在Orcale首页定位到The Java® Virtual Machine Specification页面?

目标地址&#xff1a;https://docs.oracle.com/javase/specs/jls/se8/html/index.html 1. 在Orcale首页菜单栏中选择 Resources ⇒ Java Downloads 2. 往下滑&#xff0c;找到 Online Documentation 选项&#xff0c;点进去 3. 点击 Specifications 下的 Language VM 选项 5…

USB3.0接口——(5)Host数据传输模型

USB3.0接口系列&#xff1a; USB3.0接口——&#xff08;1&#xff09;基础知识 USB3.0接口——&#xff08;2&#xff09;数据结构 USB3.0接口——&#xff08;3&#xff09;协议层&#xff08;包格式&#xff09; USB3.0接口——&#xff08;4&#xff09;生产消费者模型…

IOC、DI<5> Unity、AOP

Unity.InterceptionExtension.ICallHandler实现一个操作日志记录功能 其它跟上一次一样 <?xml version"1.0" encoding"utf-8" ?> <configuration><configSections><section name"unity" type"Microsoft.Practice…

【Harmony】SCU暑期实训鸿蒙开发学习日记Day1

关于ArkTS和ArkUI&#xff0c;基础语法请看&#x1f449;官方开发手册 系统学习后&#xff0c;聊聊几个点&#xff0c;面向刚学习这门语言的小白&#xff0c;用于巩固和回顾&#x1f60b; 目录 类型推断应用 函数相关 布局方式 线性布局 堆叠布局 网格布局 弹性布局 …

C#进阶-基于.NET Framework 4.x框架实现ASP.NET WebForms项目IP拦截器

在这篇文章中&#xff0c;我们将探讨如何在 ASP.NET WebForms 中实现IP拦截器&#xff0c;以便在 ASMX Web 服务方法 和 HTTP 请求 中根据IP地址进行访问控制。我们将使用自定义的 SoapExtension 和 IHttpModule 来实现这一功能&#xff0c;并根据常用的两种文本传输协议&#…

jmeter之变量随机参数化以及解决多线程不会随机变化

参考链接&#xff1a; https://www.cnblogs.com/Testing1105/p/12743475.html jmeter 使用random函数多线程运行时数据不会随机变化&#xff1f;_jmeter 线程组循环执行时 变量不变-CSDN博客 1、如下图所示&#xff0c;需要对请求参数 autor 和phone进行随机参数化 2、目前有…

2024大模型十大趋势

2024大模型十大趋势 关键要点一、机器外脑时代的智慧探索二、机器外脑、创意生成和情感陪伴三、大模型驱动的新未来&#xff1a;AI带来创意转化与机遇四、人物-行为-场景一体化&#xff1a;未来人工智能的新范式五、未来数字内容生产的基础设施六、共创、共建、共享智能美好未来…

Linux - 冯-诺依曼体系结构、初始操作系统

目录 冯•诺依曼体系 结构推导 内存提高效率的方法 数据的流动过程 体系结构相关知识 初始操作系统 定位 设计目的 操作系统之上之下分别有什么 管理精髓&#xff1a;先描述&#xff0c;再组织 冯•诺依曼体系 结构推导 计算机基本工作流程图大致如下&#xff1a; 输入设备&a…

删除windows系统里磁盘的恢复分区

说下我的情况 我买了块固态磁盘&#xff0c;插上主板&#xff0c;发现它自带了系统&#xff0c;这样我开机就会转到这块磁盘&#xff0c;即使在boot里改变也不行&#xff0c;后面我格式化了对应的盘符&#xff0c;但在磁盘管理里&#xff0c;发现有个EFI系统分区和恢复分区存在…

初识并发编程

并发编程的目的是 为 了 让 程序运行得更快&#xff0c;但是&#xff0c;并不是启 动 更多的 线 程就能 让 程序最大限度地并发执 行。在 进 行并 发编 程 时 &#xff0c;如果希望通 过 多 线 程 执 行任 务让 程序运行得更快&#xff0c;会面临 非常多的挑 战 &#xff0c;比…

【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录

文章目录 前言一、几个关键概念1.HTTP无状态性2.Session机制3.Token认证4.JWT 二、通过手机号验证码登录1.前端短信登录界面2.发送短信接口与短信登录接口3.Vue 设置interceptors拦截器4. 服务端验证采用自定义中间件方式实现5. 操作流程及效果图如下&#xff1a; 三、通过第三…

编程从零基础到进阶(更新中)

题目描述 依旧是输入三个整数&#xff0c;要求按照占8个字符的宽度&#xff0c;并且靠左对齐输出 输入格式 一行三个整数&#xff0c;空格分开 输出格式 输出它们按格式输出的效果&#xff0c;占一行 样例输入 123456789 -1 10 样例输出 123456789-1 10 #include "stdio.…

昇思25天学习打卡营第七天|应用实践/热门LLM及其他AI应用/基于MobileNetv2的垃圾分类

心得 本课程主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中。 这个AI是我觉很不错的一个想法。比较解决实际的痛点&#xff0c;就是作为普通人来讲&#xff0c;不可能像专…

「安全知识」叉车超速的危害引发的后果是这样的……

在繁忙的工业环境中&#xff0c;叉车作为不可或缺的物流工具&#xff0c;其安全性直接关系到生产效率和员工生命安全。然而&#xff0c;当叉车驾驶员忽视速度限制&#xff0c;超速行驶时&#xff0c;一系列潜在的危险便悄然滋生。本文将讲解叉车超速的危害以及解决措施&#xf…

pip install安装第三方库 error: Microsoft Visual C++ 14.0 or greater is required

原因&#xff1a; 在windows出现此情况的原因是pip安装的库其中部分代码不是python而是使用C等代码编写&#xff0c;我们安装这种类型的库时需要进行编译后安装。 安装Microsoft C Build Tools软件&#xff0c;但这种方式对于很多人来说过于笨重。&#xff08;不推荐&#xf…

脚本新手必看!一文掌握${}在Shell脚本中的神操作!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 变量引用与默认值📝 字符串操作📝 数组与索引📝 参数扩展与模式匹配⚓️ 相关链接 ⚓️📖 介绍 📖 在编程的广阔世界里,隐藏着无数小巧而强大的工具,它们如同魔法般简化着复杂的操作。今天,我将…

黑马头条-环境搭建、SpringCloud

一、项目介绍 1. 项目背景介绍 项目概述 类似于今日头条&#xff0c;是一个新闻资讯类项目。 随着智能手机的普及&#xff0c;人们更加习惯于通过手机来看新闻。由于生活节奏的加快&#xff0c;很多人只能利用碎片时间来获取信息&#xff0c;因此&#xff0c;对于移动资讯客…