CV技术指南 | 其实Mamba是一种线性注意力?清华大学黄高团队揭秘开视觉Mamba的真实面目!

news2024/11/15 6:02:48

本文来源公众号“CV技术指南”,仅用于学术分享,侵权删,干货满满。

原文链接:其实Mamba是一种线性注意力?清华大学黄高团队揭秘开视觉Mamba的真实面目!

前言 

本文揭示了 Mamba 模型与 Linear Attention Transformer 之间有着惊人的相似之处。作者通过探索 Mamba 和 Linear Transformer 之间的相似性和差异,在本文中提供了一个全面的分析来揭示 Mamba 成功的关键因素。

0 本文目录

1 揭秘视觉 Mamba:一种线性注意力机制视角
(来自清华大学 (黄高团队),阿里巴巴)
1 MLLA 论文解读
1.1 探索 Mamba 和 Linear Attention Transformer 的关联
1.2 线性注意力与选择性状态空间模型简介
1.3 用统一的视角看待选择性状态空间模型与线性注意力
1.4 关于每个差异的分析
1.5 宏观架构设计
1.6 每种差异的影响和 MLLA 最终方案
1.7 实验结果

太长不看版

Mamba 是一种具有线性计算复杂度的状态空间模型。其最近在处理不同视觉任务的高分辨率输入中展示出很不错的效率。本文揭示了 Mamba 模型与 Linear Attention Transformer 之间有着惊人的相似之处。作者通过探索 Mamba 和 Linear Transformer 之间的相似性和差异,在本文中提供了一个全面的分析来揭示 Mamba 成功的关键因素。

具体而言,作者使用统一的公式重新表述了选择性状态空间模型和线性注意力,将 Mamba 重新表述为 Linear Attention Transformer 的变体。它们主要有6个区别:输入门 (input gate)、遗忘门 (forget gate)、快捷连接 (shortcut)、无注意力归一化、single-head 和修改后的 Block Design。对于每个设计,本文仔细分析了它的优缺点,并实证性地评估了其对视觉模型性能的影响。更有趣的是,遗忘门 (forget gate) 和修改后的 Block Design 是 Mamba 模型成功的核心贡献,而其他的四种设计不太关键。

基于这些发现,作者将这两个比较重要的设计融入 Linear Attention 中,并提出一种类似 Mamba 的线性注意力模型,其在图像分类和高分辨率密集预测任务上都优于视觉 Mamba 模型,同时享受并行化的计算和快速推理。

本文做了哪些具体的工作

  1. 揭示了 Mamba 与 Linear Attention Transformer 之间的关系:Mamba 和 Linear Attention Transformer 可以使用一个统一的框架表示。与传统的 Linear Attention 的范式相比,Mamba 有6种不同设计:输入门 (input gate)、遗忘门 (forget gate)、快捷连接 (shortcut)、无注意力的归一化、single-head 和经过修改的 Block Design

  2. 对上述的每一种特殊的设计进行了详细分析,并实证验证了遗忘门 (forget gate) 和 Block Design 很大程度上是 Mamba 性能优越的关键。此外,证明了遗忘门 (forget gate) 的循环计算可能不是视觉模型的理想选择。相反,适当的位置编码可以作为视觉任务中的遗忘门 (forget gate) ,同时保持并行化的计算和快速的推理。

  3. 开发了一系列名为 MLLA 的 Linear Attention Transformer 架构,它继承了 Mamba 的核心优点,并且往往比原始 Mamba 模型更适合视觉任务。

1 揭秘视觉 Mamba:一种线性注意力机制视角

论文名称:Demystify Mamba in Vision: A Linear Attention Perspective (Arxiv 2024.05)

论文地址:

https://arxiv.org/pdf/2405.16605

代码链接:

https://github.com/LeapLabTHU/MLLA

1.1 探索 Mamba 和 Linear Attention Transformer 的关联

最近,以 Mamba 为例的状态空间模型迅速引起了领域的研究兴趣。与主流 Transformer 模型的二次复杂度相比,Mamba 有线性复杂度的有效序列建模。这个关键的属性允许 Mamba 在处理极长的序列时更加占优势,使其称为语言[1]和视觉[2]模型的炙手可热的架构。

到底是什么因素促使了 Mamba 的成功,及其对 Linear Attention Transformer 的优势?

作者在本文中提供了理论和实证分析,站在 Linear Attention Transformer 的角度来揭示 Mamba。具体而言,作者使用统一的公式重写了选择性状态空间模型和 Linear Attention 的公式,指出 Mamba 与 Linear Attention Transformer 的区别主要有6点:输入门 (input gate)、遗忘门 (forget gate)、快捷连接 (shortcut)、无注意力的归一化、single-head 和经过修改的 Block Design。为了揭示到底是哪种因素导致 Mamba 的有效性,作者进行了实证研究来评估每种设计的影响。结果表明,遗忘门 (forget gate) 和经过修改的 Block Design 是 Mamba 模型优越性的核心贡献。

遗忘门 (forget gate) 需要循环计算,可能不太适合非自回归的视觉模型。因此,作者深入研究了遗忘门 (forget gate) 的本质,验证其可以被位置编码所取代。基于这些发现,作者设计了 Mamba-like Linear Attention (MLLA) 模型。

1.2 线性注意力与选择性状态空间模型简介

Linear Attention

Selective State Space Model

1.3 用统一的视角看待选择性状态空间模型与线性注意力

除了这4个差异之外,重要的是要注意式12表示单头线性注意力。这表明选择性状态空间模型类似于单头线性注意,不包含多头设计。

总之,选择性 SSM 和线性注意力之间的相似性和差异可以概括为:

选择性状态空间模型类似于具有附加输入门、遗忘门和 Shortcut 的线性注意力,同时省略归一化和多头设计。

1.4 关于每个差异的分析

1.5 宏观架构设计

线性注意 Transformer 模型通常采用图 3(a) 中的设计,它由线性注意力模块和 MLP 模块组成。相比之下,Mamba 通过结合 H3[5]和 Gated Attention[6]这两个设计来改进,得到如图 3(b) 所示的架构。改进的 Mamba Block 集成了多种操作,例如选择性 SSM、深度卷积、线性映射、激活函数、门控机制等,并且往往比传统的 Transformer 设计更有效。

图3:线性注意力 Transformer 架构,Mamba 架构,以及本文 MLLA 架构

Mamba 和线性注意力 Transformer 的关系

Mamba 可以看作是具有特殊线性注意力和改进的 Block 设计的线性注意力 Transformer 变体。 线性注意力的变体,即选择性状态空间模型,与常见的线性注意力范式相比有5大区别。

下面作者通过实验来评估每个区别的影响,揭示了 Mamba 成功背后的核心贡献到底是什么。

作者采用了 Swin Transformer[7]架构来验证六个差异的影响。首先将 Swin Transformer 中的 Softmax attention 替换为线性注意力来创建基线模型。然后分别对基线模型引入每个区别来评估其影响。作者进一步将有用的设计集成到线性注意力 Transformer 中以创建本文的 Mamba-like Linear Attention (MLLA) 架构,并将其与各种视觉 Mamba 进行比较来评估其有效性,包括 ImageNet-1K 分类 、COCO 目标检测和 ADE20K 语义分割。

1.6 每种差异的影响和 MLLA 最终方案

作者分别将每个区别应用于线性注意力模型并评估其在 ImageNet-1K 上的性能,结果如下图4所示。

图4:每种差异的影响实验结果

1) 输入门: 使用输入门可以略微提升模型的精度 0.2%。图5中的可视化有助于理解输入门的影响。可以看出,该模型倾向于为前景物体等信息丰富的区域生成更高的输入门值,同时抑制不太有用的 tokens。此外,使用输入门会导致模型吞吐量降低 7%。

图7:把遗忘门替换为不同位置编码的结果

3) Shortcut: 在线性注意力中使用可学习 Shortcut 提供了 0.2% 的精度增益,同时将吞吐量从 1152 降低到 1066。

4) 归一化: 在没有归一化的情况下,模型严重的性能下降从 77.6% 下降到 72.4%。

5) Multi-head: 现代 Transformer 通常采用多头设计来增强其表达能力。移除这种设计降低了计算成本并加速了模型,但显着降低了性能。因此作者不使用这个做法。

6) Block Design: 作者采用两种方法来评估 Mamba 的 Block Design 的影响:

1. 用 Mamba 的 Block Design 替换整个 Transformer Block。

2. 用 Mamba Block 设计替换注意力 Block,同时保留 MLP Block。在这两种情况下,Mamba BLock 中的选择性 SSM 都被替换为线性注意力。为了维护类似的 FLOP,作者对两种设置分别使用 Mamba 扩展因子 E = 2.0 和 E = 1.0。结果如图4所示。这两种情况分别用 Block Design all 和 Block Design sub 表示。两种替换方法都可以提高性能,证明了 Mamba 宏观设计的有效性。替换注意力 Block 可以产生更好的结果,得到如图 3(c) 所示的 MLLA 架构。MLLA 架构的计算复杂度可以表示为:

基于这些发现,作者将遗忘门和 Block Design 集成到线性注意力中, 得到本文的 MLLA 模型。值得注意的是,MLLA 实际上使用 LePE、CPE 和 RoPE 分别替换遗忘门的局部偏差、依赖于输入的位置信息和全局位置信息。

1.7 实验结果

图像分类实验结果

如图8所示,由于集成了 Mamba 和 Linear Attention 的有用设计,本文的 MLLA 模型在所有模型大小上始终优于各种视觉 Mamba 模型。这些结果也说明了凭借 Mamba 的这两点设计,线性注意力机制模型的性能也可以超越 Mamba 架构。作者也实证性地观察到,与视觉 Mamba 模型相比,MLLA 表现出更高的可扩展性,因为 MLLA-B 达到了 85.3 的精度,大大超过了其他模型。

图8:ImageNet-1K 上与各种视觉 Mamba 的结果对比

作者在图9中提供了速度测量结果。用位置编码替换遗忘门,本文的 MLLA 模型受益于并行化的计算,与视觉 Mamba 模型相比推理速度明显更快。

图9:RTX3090 GPU 的速度测量结果

COCO 目标检测实验结果

如图10所示,在 COCO 数据集上,MLLA 模型结果也优于视觉 Mamba 模型,这意味着 MLLA 对于高分辨率密集预测任务的有效性。MLLA 提供了具有线性复杂度 \mathcal{O}(N)\mathcal{O}(N) 的全局建模和并行化的计算,使其非常适合高分辨率图像建模。值得注意的是,MLLA 大大优于 MambaOut,这也与 MambaOut 中的结论 (即 SSM 对于高分辨率密集预测任务很重要) 是一致的。

图10:COCO 实验结果

ADE-20K 语义分割

如图11所示为 ADE-20K 数据集的结果。与目标检测任务类似,MLLA 在语义分割也得到了更好的结果,进一步验证了本文分析和 MLLA 模型的有效性。

图11:ADE-20K 语义分割实验结果

参考

  1. ^abMamba: Linear-Time Sequence Modeling with Selective State Spaces

  2. ^Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model

  3. ^Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention

  4. ^FLatten Transformer: Vision Transformer using Focused Linear Attention

  5. ^Hungry Hungry Hippos: Towards Language Modeling with State Space Models

  6. ^Transformer Quality in Linear Time

  7. ^Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

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

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

相关文章

shell脚本和变量

一、shell脚本 脚本就是可运行的代码的集合,脚本语言(计算机语言)的特点:从上到下,按行执行。 Python:脚本语言,格式更严谨,严格地执行缩进。也是从上到下按行执行。 shell脚本运…

Linux文件权限信息和Linux文件与文件夹的管理

目录 前言一、系统环境二、Linux文件权限信息2.1 查看Linux文件权限信息2.2 修改Linux文件权限信息2.2.1 chmod命令2.2.2 chown命令 三、Linux文件与目录的管理3.1 查看文件或文件夹3.1.1 查看文件内容3.1.2 查看文件夹内容 3.2 新增文件或文件夹3.2.1 新增文件3.2.2 新增文件夹…

从零开始利用MATLAB进行FPGA设计(七)固化程序

FPGA开发板:AX7020;Xilinx 公司的 Zynq7000 系列的芯片XC7Z020-2CLG400I,400引脚 FBGA 封装。 HARDWARE PLATFORM在2019以后的vivado中已经没有了。本期实际上已经与MATLAB无关,主要介绍通过VITIS等方法进行程序固化。 目录 ZY…

光伏+储能,势在必行!

随着全球对可再生能源需求的不断增长,光伏行业正迎来前所未有的发展机遇。然而,光伏发电的间歇性和不稳定性特点,使得储能技术成为解决其并网难题、提高能源利用效率的关键。因此,“光伏储能”的组合,已成为行业发展的…

老生常谈!程序员为什么要阅读源代码?

大家好,我是码农先森。 阅读源码这是一个老生常谈的话题了,但又是很多人想做又没有付出行动的事情。前段时间我研究了 Swoole 的源代码,并且输出了系列的源码分析文章「感兴趣的朋友可以翻阅以前的文章」。虽然这个过程很枯燥和艰难&#xf…

c++ 6.11

作业: 思维导图: 作业题: 搭建一个货币的场景,创建一个名为 RMB 的类,该类具有整型私有成员变量 yuan(元)、jiao(角)和 fen(分),并且…

VMware Workstation虚拟机进入U盘PE系统

注意事项 VMware Workstation虚拟机版本不能高于16.1.2版本!!! 本实验使用的版本如下 实际操作 在已安装好的虚拟机处右键,点击设置。虚拟机安装win10教程请参考VMware Workstation安装win10操作系统-CSDN博客 在弹出的窗口点击…

卷产品 、卷生态,百度这款AI产品卷到了第一

万万没想到,最先跑出来的AI杀手级应用竟然是百度文库。 6月7日,“AI产品榜”(aicpb.com)发布了最新的5月国内总榜榜单,百度文库AI功能以6536万的月访问量一骑绝尘,连续两个月霸榜第一。 乍看有些不可思议&…

2-1基于matlab的拉普拉斯金字塔图像融合算法

基于matlab的拉普拉斯金字塔图像融合算法,可以使部分图像模糊的图片清楚,也可以使图像增强。程序已调通,可直接运行。 2-1 图像融合 拉普拉斯金字塔图像融合 - 小红书 (xiaohongshu.com)

docker安装elasticsearch8和kibana,带ik分词器

全文目录,一步到位 1.前言简介1.1 专栏传送门 2. elasticsearch和kibana安装2.1 准备工作2.1.1 下载elasticsearch2.1.2 下载kibana镜像 2.2 创建并运行es容器2.2.1 创建es网络2.2.2 创建es容器2.2.3 放行端口2.2.4 访问查看结果> 步骤一: 点击高级, 然后继续访问> 步骤二…

使用#sortablejs插件对表格中拖拽行排序#Vue3#后端接口数据

使用#sortablejs对表格中拖拽行排序#Vue3#后端接口数据 *效果&#xff1a; 拖动表格行排序 首先安装插件sortable npm install sortablejs --save代码&#xff1a; <template><!-- sortable.js 进行表格排序 --><!-- 演示地址 --><div class"dem…

我要成为算法高手-双指针篇

目录 什么是双指针?问题1&#xff1a;移动零问题2&#xff1a;复写零问题3&#xff1a;快乐数问题4&#xff1a;盛最多水的容器问题5&#xff1a;有效三角形个数问题6&#xff1a;查找总价格和为目标值的两个商品(两数之和)问题7&#xff1a;三数之和问题8&#xff1a;四数之和…

Nextjs 集成TinyMCE实现富文本编辑器

目录 一、导入依赖 二、动态导入 三、完整案例 四、参考文档 一、导入依赖 yarn add tinymce/tinymce-react二、动态导入 import dynamic from next/dynamic;const Editor dynamic(() > import(tinymce/tinymce-react).then(mod > mod.Editor),{ssr: false} ); 三…

力扣hot100:394. 字符串解码(递归/括号匹配,字符串之间相对顺序)

LeetCode&#xff1a;394. 字符串解码 本题容易想到用递归处理&#xff0c;在写递归时主要是需要明确自己的递归函数的定义。 不过我们也可以利用括号匹配的方式使用栈进行处理。 1、递归 定义递归函数string GetString(string & s,int & i); 表示处理处理整个numbe…

Django CreateView视图

CreateView是Django提供的一个基于类的视图&#xff0c;用于处理创建新对象的操作。它可以帮助你轻松地创建一个表单页面&#xff0c;用户可以通过这个页面创建新的对象。 1&#xff0c;添加视图 Test/app3/views.py from django.shortcuts import render# Create your views…

汇聚荣科技有限公司实力如何?

汇聚荣科技有限公司实力如何?在科技日新月异的今天&#xff0c;一个公司的实力往往体现在其技术创新能力、市场占有率、团队专业度、客户满意度以及财务健康状况等多个维度。针对“汇聚荣科技有限公司”这一话题&#xff0c;我们将从这五个方面进行深入探讨。 一、技术创新能力…

易舟云财务软件:数字化时代的财务管家

在数字化浪潮的推动下&#xff0c;财务软件成为了企业提升财务管理效率、实现数字化转型的关键工具。易舟云财务软件&#xff0c;正是这样一款深受企业喜爱的财务管理系统。本文将带你详细了解易舟云财务软件的特点、版本区别以及如何使用它来优化财务工作。 易舟云财务软件的特…

2024050901-重学 Java 设计模式《实战访问者模式》

重学 Java 设计模式&#xff1a;实战访问者模式「模拟家长与校长&#xff0c;对学生和老师的不同视角信息的访问场景」 一、前言 能力&#xff0c;是你前行的最大保障 年龄会不断的增长&#xff0c;但是什么才能让你不慌张。一定是能力&#xff0c;即使是在一个看似还很安稳…

格式化输出相关

格式化输出 使用print() %格式化 语法 “%[零个或一个或多个辅助指令]<格式化符号>”%(一个或多个变量、表达式、值) 格式化符号 %c 格式化为字符&#xff0c;整数或字符 %r 使用repr()函数格式化字符串 %s 使用str()函数格式化为字符串 %d 格式化为整数 %u…

Mybatis05-一对多和多对一处理

多对一和一对多 多对一 多对一的理解&#xff1a; 多个学生对应一个老师 如果对于学生这边&#xff0c;就是一个多对一的现象&#xff0c;即从学生这边关联一个老师&#xff01; 结果映射&#xff08;resultMap&#xff09;&#xff1a; association 一个复杂类型的关联&…