ConvNets 与 Vision Transformers:数学深入探讨

news2024/10/7 15:29:07

一、说明

        我目睹了关于 Vision Transformer 的争论,讨论它们如何与 CNN 一样好或更好。我想知道我们是否也同样争论菠萝比西瓜好!或者马比海豚更好?其中许多讨论往往缺乏具体性,有时可能会歪曲上下文。

        作为背景,在快速发展的深度学习领域,有两种架构在图像“分类”任务中脱颖而出:卷积神经网络(ConvNets)和视觉变换器(ViTs)。虽然从业者经常交替使用它们进行分类,但它们的数学基础是不同的。

        在本文中,我深入研究了这些架构的数学原理,阐明了它们在分类方面的功能等效性以及生成任务中的差异。我还提供了关于预算如何根据具体情况趋同或不同的数学比较。

二、深入探讨非生成功能等价

2.1. 层次特征空间

        卷积网络:

        给定输入I和滤波器 { Fk ​},卷积定义为:

        堆叠这些卷积:

        其中σ是激活函数,bk​是偏置项。

        维特:

        代币进行自我关注:

        整个序列演变为:

        两种架构都基于其输入逐层构建,对分层模式进行建模。

2.2. 注入非线性

        卷积网络:

        ReLU常用:

        维特:

        GELU 在变形金刚中很典型:

        这些非线性确保模型可以捕获复杂的模式。

2.3. 分类参数化的效率

        卷积网络:

        由于权重共享:

        维特:

        尽管它们随序列长度呈二次方增长,但像 Linformer 这样的线性近似:

        两者都描绘了特征空间,形成稳健的决策边界。

到目前为止,我们了解到,虽然 ConvNet 和 Vision Transformer 具有不同的数学基础,但它们在分类任务中表现出显着的功能等效性。他们捕获分层模式并对其进行有效分类的方法使它们成为从业者的首选。

三、非生成式培训预算:它们的协调点

        在非生成任务(主要是分类)中,两种架构的训练预算表现出显着的相似性。让我们从数学上探讨一下这个问题。

3.1. 计算复杂度

        卷积网络:

        卷积层的计算成本为:

        其中K是滤波器大小,M × N是特征图大小。

        维特:

        对于自我关注:

        其中L是序列长度,N是特征维度。

        在实践中,对于大规模数据集和深度网络,这些复杂性往往会收敛,特别是在使用 Linformer 或 Performer 等高效转换器变体时。

3.2. 内存占用

        卷积网络:

        由于权重共享,所需的内存为:

        其中D_in​ 和D_out​ 是输入和输出深度。

        维特:

        内存成本为:

        同样,通过有效的变体和优化,内存占用量可以与大规模分类任务紧密结合。

正如我们所看到的,从数学上来说,ConvNet 和 Vision Transformer 在大规模分类任务的非生成任务的训练预算方面是趋同的。

四、生成任务:分歧

4.1. 空间相干性

        卷积网络:

        它们本质上保持空间连贯性:

        维特:

        ViT 需要位置嵌入:

        虽然 ConvNet 生成自然平滑的图像,但 ViT 可能需要添加约束。

4.2. 顺序数据生成

        卷积网络:

        在 PixelCNN 等架构中:

        维特:

        Transformer 自然地处理序列:

        ViT 在自然生成序列方面具有优势,而 ConvNet 需要特定的设计。

4.3.潜在空间动力学

        卷积网络:

        在 VAE 结构中:

        维特:

        更丰富的潜在空间的潜力:

        ViT 可能由于其自注意力机制而捕获复杂的潜在空间,而 ConvNet 可能需要更复杂的设计。

正如我们所看到的,当冒险进入生成领域时,他们固有的偏见明显地表现出来。

五、生成预算情景:出现差异的地方

当谈到生成任务时,ConvNet 和 ViT 的训练预算开始出现显着差异。

5.1. 空间连贯性和连续性

        卷积网络:

        固有的空间结构确保了局部相干的输出。因此,获得高质量图像可能需要更少的训练迭代:

        其中ϵ_conv​是 ConvNet 的收敛速度。

        维特:

        ViT 缺乏固有的空间偏差,可能需要额外的训练迭代来确保生成图像的局部一致性:

        由于缺乏空间先验,ϵ_vit​通常小于ϵ_conv ​。

5.2. 潜在空间探索

        卷积网络:

        对 VAE 等生成模型中潜在空间的探索是直接的:

        其中Z是潜在空间的维数。

        维特:

        考虑到自注意力机制,ViT 可能会对潜在空间表现出更丰富的探索,但计算成本可能更高(这会在顺序依赖性中得到抵消):

5.3. 顺序依赖

        卷积网络:

        尽管具有适应性,但卷积网络本质上并不是顺序的。因此,建模顺序依赖关系可能需要更复杂的设计和可能更长的训练(这是 ViT 在生成用例上击败 ConvNet 的地方):

        其中τ是序列长度,δ_conv​是迭代因子。

        维特:

        鉴于 ViT 起源于 NLP,它可以自然地处理序列,从而有可能减少所需的训练迭代:

        其中δ_vit​通常小于δ_conv ​。

在生成场景中,情况发生了巨大的变化。具有空间先验的 ConvNet 可能在图像生成方面具有优势,而具有全局注意力的 ViT 可能更适合文本或多模态域生成等任务,且预算可能较少。同样,这在很大程度上取决于使用环境和数据集大小。背景很重要。

        希望这种数学深入研究能够提供一个视角来理解两种架构的优势和挑战,指导研究人员根据领域和上下文选择不同的任务。

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

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

相关文章

计算机基础知识44

overflow溢出属性 visible:默认值,内容不会被修剪,会呈现在元素框之外。hidden:内容会被修剪,并且其余内容是不可见的。scroll:内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。auto: …

GEE错误——XXX is not a function,如何解决这个问题?

错误: 这里的时错误原始的代码链接: https://code.earthengine.google.com/4bf0975a41e14d0c40e01925c6f3cf2a 这里主要的问题时这个单一影像不存在: ImageCollection (Error) ImageCollection.load: ImageCollection asset LANDSAT/LC08/C01/T1_SR/LC08_221077_201704…

self.register_buffer方法使用解析(pytorch)

self.register_buffer就是pytorch框架用来保存不更新参数的方法。 列子如下: self.register_buffer("position_emb", torch.randn((5, 3)))第一个参数position_emb传入一个字符串,表示这组参数的名字,第二个就是tensor形式的参数…

微信Wxid转换微信号

微信号在申请的时候,系统随机分配了一个微信原始ID,该ID号以wxid_开头,后面是随机的字符串 分配的原始ID是目前是不可以直接用来加好友的,需要转换成微信号才能加好友, 经过逆向分析通过PC端找到了该接口并且可以成功用…

Langchain知识点(下)

背景: 这部分给主要介绍Langchain的agent部分,前面已经章节已经介绍了思维和思路作为一种数据资产是这一次LLM数据化的核心。也介绍了各种的chain,那么既然有了chain可以把专家思路和专家思维固化并且可被方便的共享和利用;那为什…

数据结构-链表的简单操作实现

目录 0.链表前序工作 1.构建出一个链表 2.展示链表中的所有存储数据 3.查找关键字key是否在链表中 4.求链表的长度 5.头插法 6.尾插法 7.插入任意位置(规定第一个元素位置为0下标) 8.删除第一次出现的值为key的关键字 9.删除所有值为key的关键字…

【算法】通信线路(二分,堆优化版dijkstra)

题目 在郊区有 N 座通信基站,P 条 双向 电缆,第 i 条电缆连接基站 Ai 和 Bi。 特别地,1 号基站是通信公司的总站,N 号基站位于一座农场中。 现在,农场主希望对通信线路进行升级,其中升级第 i 条电缆需要花费…

Tensor.scatter_add_函数解释:

Tensor.scatter_add_(dim, index, src) → Tensor out.scatter_add_(dim, index, src) 1.参数: dim (int) – 哪一dim进行操作 index (LongTensor) – 要在的out的哪一index进行操作 src (Tensor) – 待操作的源数字 2.官方的解释的操作如下: 3.例…

基于8086汽车智能小车控制系统

**单片机设计介绍,基于8086汽车智能小车控制系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于 8086 的汽车智能小车控制系统是一种将微处理器技术应用于汽车控制的系统。下面是其主要的设计介绍: 硬…

ubuntu22.04桌面版系统无法识别USB摄像头

虚拟机连接电脑摄像头连接失败(驱动程序错误) 本文为转载:版权归远作者所有,之所以转载是为了避免被原作者删除 巴黎铁塔下的女孩 你尽管努力,剩下的交给时间 虚拟机调用电脑的摄像头,正常情况下只需点击…

方案分享:F5机器人防御助企业应对复杂攻击

企业是Bot攻击者的目标,网络犯罪分子会不断调整他们的攻击,来攻破愈发成熟的Bot防护,这使企业安全团队时刻处于紧张状态。如果不能有效地管理Bot,应用性能、客户体验和业务都会被影响,但在尝试阻止这些攻击时&#xff…

技术分享 | web自动化测试-文件上传与弹框处理

实战演示 文件上传 input 标签使用自动化上传,先定位到上传按钮,然后 send_keys 把路径作为值给传进去. 如图所示,是企业微信文件上传的页面 定位到标签为 input,type 为 file 的元素信息,然后使用 send_keys 把文件…

Harbor企业级Registry基础镜像仓库的详细安装使用教程(保姆级)

Harbor Docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。 Harbor是vmware一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。 ha…

原语:串并转换器

串并转换器OSERDESE2 可被Select IO IP核调用。 OSERDESE2允许DDR功能 参考: FPGA原语学习与整理第二弹,OSERDESE2串并转换器 - 知乎 (zhihu.com) 正点原子。 ISERDESE2原语和OSERDESE2原语是串并转换器,他的的功能都是实现串行数据和并行…

阿里云服务器怎么购买更省钱?优惠入口分享

阿里云服务器怎么购买更省钱?不要直接在云服务器页面购买,不划算,在阿里云特价活动上购买更优惠,阿腾云atengyun.com分享阿里云服务器省钱购买方法,节省90%,可以先在阿里云CLUB中心领券 aliyun.club 专用满…

JavaScript_Element对象_方法

1、Element.focus() Element.focus方法用于将当前页面的焦点,转移到指定元素上 2、Element.blur() Element.blur方法用于将焦点从当前元素移除 3、Element.remove() Element.remove方法用于将当前元素节点从它的父节点移除 4、Element.getBoundingClientRect() …

蓝桥杯练习

即约分数 题目 思路 遍历所有的x&#xff0c;y&#xff0c;判断x/y是不是即越约分数。 代码 #include <iostream> using namespace std; int gcd(int x,int y) {int r;while(y!0){rx%y;xy;yr;}return x; } int main() {// 请在此输入您的代码int sum4039;//1/y和x/1都…

C函数速查手册

链接下载&#xff1a;提取码:Tywdhttps://www.123pan.com/s/JRpSVv-PLnjv.html 双击打开即可

RxJava/RxAndroid的基本使用方法(一)

文章目录 一、什么是RxJava二、使用前的准备1、导入相关依赖2、字段含意3、Upstream/Downstream——上/下游4、BackPressure5、BackPressure策略6、“热” and “冷” Observables7、 基类8、事件调度器9、操作符是什么&#xff1f; 三、RxJava的简单用法1、Observable——Obse…

Docker安装教程

Docker安装教程 安装教程Centos7.6docker镜像源修改docker目录修改 Ubuntu20.04docker镜像源修改docker数据目录修改 安装教程 Centos7.6 &#x1f680;docker支持的Cetnos操作系统版本 CentOS 7 CentOS 8 (stream) CentOS 9 (stream) &#x1f680;支持的CPU ARM/X86_64 查看…