【AI学习】Mamba学习(一):总体架构

论文:《Mamba: Linear-Time Sequence Modeling with Selective State Spaces》

作者1:Albert Gu,现在是CMU(卡内基梅隆大学)助理教授,曾在DeepMind 工作。多年来一直推动SSM架构发展。
作者2:Tri Dao,现为普林斯顿大学计算机科学助理教授。Together AI的首席科学家。斯坦福大学计算机科学系博士毕业。

    文章地址:https://arxiv.org/abs/2312.00752     项目地址:https://github.com/state-spaces/mamba.

总体架构

先直接来看一下论文的总体架构。Mamba架构是结合了H3和门控MLP两个架构形成的组合架构,下面的图很清楚。

在这里插入图片描述
架构图:我们的简化块设计,将H3块(大多数SSM架构的基础)与现代神经网络中无处不在的MLP块相结合。我们只是均匀地重复Mamba块,而不是交织这两个块。与H3块相比,Mamba用激活函数替换了第一个乘法门。与MLP块相比,Mamba在主分支中添加了一个SSM。对于𝜎,我们使用SiLU/Swish激活(Hendrycks和Gimpel 2016;Ramachandran、Zoph和Quoc V Le 2017)。

对于最左边的图,SSM 模型要工作,一般会在SSM的输出加上门控,之后再通过线性层。看上图的中间的图,这两个部分跟 Gated MLP右边的支路和最上面的线性层是一样的。所以 SSM 层如果跟Gated MLP 合并的话,在SSM之后增加MLP有点冗余,所以作者进行了组合,把门控和后面的线性层合并,把门控MLP融合到了H3架构中,就是右边的图。

文章中的图3提供了Mamba架构的概览。Mamba是一种新型的神经网络架构,它整合了选择性状态空间模型(Selective State Space Models,简称SSMs)来提高序列建模的效率和性能。以下是对图3的详细分析:

Mamba架构概览

1. 输入和输出:

  • 输入(Input):模型接收一个输入序列。
  • 输出(Output):模型产生一个输出序列。

2. 核心组件:

  • 线性投影(Linear projection):输入数据首先通过一个线性投影层,这有助于将数据转换到一个新的空间,以便于后续处理。
  • 状态转换(State transformation):这是SSM的核心,负责根据输入数据更新状态。
  • 非线性激活(Nonlinearity / Activation):在状态转换后应用非线性激活函数,增加模型的表达能力。
  • 局部卷积层:H3模型在SSM层之前插入了一个局部卷积层,这有助于模型捕捉局部特征并增强其对序列数据的理解。

3. 简化的架构设计:

  • Mamba的设计简化了传统的深度序列模型架构,如将H3架构中的SSM层和MLP(多层感知机)层合并为一个单一的块。

4. 参数化和初始化:

  • Mamba块中的SSM参数(Δ, A, B, C)是可学习的,并且可以通过输入数据动态调整,这是选择性SSM的核心特点。

技术细节

  • 选择性状态空间模型(Selective SSMs):通过使SSM参数成为输入的函数,模型能够根据当前的输入符号有选择地传播或忘记信息。
  • 硬件感知算法:尽管选择性SSMs不能使用高效的卷积操作,但通过设计一种硬件感知的并行算法,Mamba能够在循环模式下高效运行。

性能优势

  • 快速推理:Mamba模型能够实现比传统Transformer模型快5倍的吞吐量。
  • 线性时间复杂度:在序列长度上的计算复杂度为线性,这对于长序列处理尤为重要。

总的来说,图3展示了Mamba架构如何通过整合选择性状态空间模型来优化序列数据处理,同时保持了模型的简洁性和高效性。

SSM简述

Transformer 模型的主要缺点是:自注意力机制的计算量会随着上下文长度的增加呈平方级增长。所以,许多次二次时间架构(指一个函数或算法的增长速度小于二次函数,但大于线性函数),如线性注意力、门控卷积和循环模型,以及结构化状态空间模型(SSM)被开发出来,以解决transformer在长序列上的计算效率低下问题。
所以,上图中架构中的SSM,先简单理解为可以针对一个序列,提取长期记忆,类似Transformer 模型的注意力机制,但是解决了注意力机制的计算量随序列长度平方增长问题。

门控机制

论文中强调最重要的联系:RNNs的经典门控机制是选择性SSMs中SSMs的门控机制的一个实例。我们注意到,RNN门控和连续时间系统的离散化之间的联系已经很好地建立(Funahashi 和 Nakamura, 1993; Tallec 和 Ollivier, 2018)。实际上,定理1是对Gu, Johnson, Goel等人(2021, 引理 3.1)的改进,将其推广到ZOH离散化和输入依赖的门控(证明见附录C)。更广泛地说,SSMs中的Δ可以被视为RNN门控机制的概括。按照先前的工作,我们采用这样的观点:SSMs的离散化是启发式门控机制的原则上的基础。
公式1:
在这里插入图片描述
可以看到这就是一个带门控的 RNN。
正如第3.2节中提到的,我们特定的 𝑠Δ,𝜏Δ 选择是基于与RNN门控的联系。特别是,如果一个给定的输入 𝑥t应该被完全忽略(如合成任务中所必需的),所有的D通道都应该忽略它,因此我们将输入投影到1维,然后再重复/广播Δ。

这一部分讨论了选择性状态空间模型(SSMs)中的选择机制与传统RNNs中的门控机制之间的联系。作者通过定理1展示了当特定的条件满足时,SSMs可以模拟RNNs中的门控行为。这表明,通过适当的参数化和离散化,SSMs能够实现类似于传统RNNs中的内容感知推理功能。

对比一下SwiGLU,可以更好的理解图中的门控MLP。
在这里插入图片描述

解释选择机制

详细阐述了选择机制的三个特定机械效应。

变量间距:选择性允许过滤掉可能在感兴趣输入之间出现的不相关噪声标记。这在“选择性复制”任务中得到了示例说明,但在常见数据模态中无处不在,特别是对于离散数据——例如语言填充词“um”的存在。这个属性之所以产生,是因为模型可以机械地过滤掉任何特定的输入 𝑥𝑡,例如在门控RNN情况下(定理1)当𝑔𝑡 → 0时。

过滤上下文:已经有实证观察表明,许多序列模型随着上下文长度的增加并没有改善(F. Shi et al. 2023),尽管原则上更多的上下文应该带来更好的性能。一个解释是,许多序列模型在需要时不能有效地忽略不相关的上下文;直观的例子是全局卷积(和一般的LTI模型)。另一方面,选择性模型可以随时简单地重置其状态以去除多余的历史记录,因此它们在原则上随着上下文长度的增加而性能提高。

边界重置:在将多个独立序列拼接在一起的设置中,Transformer可以通过实例化特定的注意力掩码来保持它们的分离,而LTI模型则会在序列之间泄露信息。选择性SSMs也可以在边界处重置其状态(例如 Δ𝑡 → ∞, or Theorem 1 when 𝑔𝑡 → 1)。这些设置可能是人为的(例如,为了提高硬件利用率而将文档打包在一起)或自然的(例如强化学习中的情节边界)。

此外,我们详细阐述了每个选择性参数的效果。

Δ的解释:通常,Δ控制着在多大程度上关注或忽略当前输入𝑥𝑡的平衡。它概括了RNN门控(例如, 𝑔𝑡 in Theorem 1):从机械上看,大的Δ重置状态ℎ并专注于当前输入x,而小的Δ保持状态并忽略当前输入。SSMs(1)-(2)可以被解释为通过时间步长Δ离散化的连续系统,在这个背景下,直觉是大的Δ → ∞代表系统长时间专注于当前输入(因此“选择”它并忘记其当前状态),而小的Δ → 0代表被忽略的瞬态输入。

𝑨的解释。我们注意到,虽然𝑨参数也可以是选择性的,但它最终只通过与Δ的交互𝑨 = exp(Δ𝑨)影响模型。因此,Δ的选择性足以确保(𝑨, B)的选择性,并且是改进的主要来源。我们假设除了Δ之外(或代替Δ)使𝑨也具有选择性可能会有类似的性能,并将其留出以简化。

B和C的解释:正如第3.1节所讨论的,选择性的最重要属性是过滤掉不相关的信息,以便序列模型的上下文可以被压缩成一个高效的状态。在SSM中,修改B和C以使其具有选择性允许更细粒度地控制是否让一个输入𝑥𝑡进入状态ℎ𝑡,或者状态进入输出𝑦𝑡。这些可以被解释为允许模型根据内容(输入)和上下文(隐藏状态)分别调节递归动态。

这一部分深入探讨了选择性状态空间模型(SSMs)中选择机制的具体工作机制和效果,包括变量间距、过滤上下文和边界重置等概念,并对模型中的各个选择性参数进行了详细解释。

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

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

相关文章

文件上传之%00截断(00截断)以及pikachu靶场

pikachu的文件上传和upload-lab的文件上传 目录 mime type类型 getimagesize 第12关%00截断, 第13关0x00截断 差不多了,今天先学文件上传白名单,在网上看了资料,差不多看懂了,但是还有几个地方需要实验一下&#…

老年人意外跌倒感知技术

意外跌倒是导致老年人仙游的6大原因之一,尤其多余80岁以上的老年人。跌倒已成为我国 65 岁以上老年人因伤致死的首位原因(来源:IT之家)。 跌倒最容易发生在两个地方,卫生间和过道。主要可能是卫生间没有安装扶手&…

【案例】平面云

教程案例视频:Unity Shader Graph - 云教程 开发平台:Unity 2022 开发工具:Unity ShaderGraph   一、效果展示 二、ShaderGraph 路线图 三、案例分析 核心思路:使用 Noise(噪声)模拟云层状态   3.1 说明…

C++异步操作实现线程池

文章目录 std::future用法async函数promise::get_futurepackaged_task::get_future 线程池实现 std::future std::future是C11标准库中的一个模板类,表示异步操作的结果 当我们在进行多线程中使用异步任务时,std::future是用来帮我们在需要的时候获取任务执行的结果 他的一个…

基于spring boot的篮球论坛系统

作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…

快停止这种使用U盘的行为!

前言 现在各行各业的小伙伴基本上都需要用电脑来办公了,你敢说你不需要用电脑办公? 啊哈哈哈,用iPad或者手机办公的也算。 有些小伙伴可能经常996,甚至有时候都是007。有时候到了下班时间,工作还没做完,…

图文深入理解Oracle DB企业级集中管理神器-GC的安装和部署

值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。今天继续宅继续写。 本文承接上篇,介绍GC的安装和部署。咱们不急,慢慢来,饭要一口一口地吃才能吃得踏实自然。 限于篇幅,本节将重点介绍关键步…

VRRP协议个人理解+报文示例+典型配置-RFC2338/RFC3768/RFC5798/RFC9568

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。 因此本文将在VRRP协议报文的基础上进行介绍。 VRRP协议发展 关于VRRPv2基本原理,可重点参考2004年发布的RFC3768-Virtual Ro…

深入理解NumPy库:常用函数详解与数组操作指南

在数据科学和数值计算领域,NumPy无疑是一个强大的工具,它为Python提供了高效的多维数 组处理能力。无论是进行数据分析、构建机器学习模型,还是进行复杂的科学计算,NumPy都是 不可或缺的核心库之一。 numpy.array 是 NumPy 库中…

UART通信—基于江科大源码基础进行的改进和解析

我就不讲理论了,CSDN上大佬属实多,我就只讲代码了,串口的基本理论,大家去看其他大佬写的吧 一、源文件的组成 1、包含的头文件 stm32f10x.h 是STM32F10x系列微控制器的标准外设库(Standard Peripheral Library&…

【算法业务】数据驱动的用户增长实践、收益及思考

这篇内容是多年之前(2020年)的用户增长项目时自己写的总结,这里做一下对于实践和思考的回顾,便于知识的记录和经验分享,内容涉及用户增长理解、个性化推送系统框架、个性化推送问题建模、推送内容池构建、智能文案生成…

zotero使用koofr+google drive/onedrive同步

最早了解到这个思路是来自 知乎-【从零开始使用Zotero】(3) Zotero文献同步方式 和 How to Sync Zotero Files Using WebDAV and Google Drive with Koofr: A Step-by-Step Guide 虽然周围很多人都在用Readpaper这种web端的了,但是经常逛Arxiv而且zotero的web插…

MATLAB|电气互联系统有功-无功协同优化模型

目录 1 主要内容 模型示意图 目标函数 程序亮点 2 部分程序 3 程序结果 4 下载链接 1 主要内容 本程序基本复现《“碳中和”目标下电气互联系统有功-无功协同优化模型》,文献模型提供了一个很好的创新思路,把常规电气互联系统的调度和有功无功优化…

Android Framework AMS(01)AMS启动及相关初始化1-4

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要涉及systemserver启动AMS及初始化AMS相关操作。同时由于该部分内容分析过多,因此拆成2个章节,本章节是第一章节&…

10.4学习

1.Transactional 注意事项: ①事务函数中不要处理耗时任务,会导致长期占有数据库连接。 ②事务函数中不要处理无关业务,防止产生异常导致事务回滚。 ●事务传播属性 ①REQUIRED(默认属性) 如果存在一个事务&#…

基于Springboot+VUE的二手奢侈品商城的设计与实现

一、摘要 当前,二手奢侈品市场持续蓬勃发展,吸引了越来越多的消费者。然而,现有的二手奢侈品交易平台在用户体验、安全性和功能方面仍存在一些问题,需要进一步改进。本研究旨在设计和实现一种基于Spring Boot 和 Vue 技术框架的二…

17 链表——21. 合并两个有序链表 ★

17 链表 21. 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 算法设计: 合并两个有序链表,并保持有序性,可以采用迭代法和递归法两种…

Unity代码组件,代码控制旋转+RotateAround、Translate,LookAt相关

创建脚本 在Project面板创建一个Scripts文件夹,用于专门存放脚本,创建一个脚本,命名为RotationControl,将该脚本拖拽到Tank上,则Tank物体成功挂载该脚本。 双击打开脚本,编写脚本如下: using System.Coll…

国外电商系统开发-运维系统批量添加服务器

您可以把您准备的txt文件,安装要求的格式,复制粘贴到里面就可以了。注意格式! 如果是“#” 开头的,则表示注释!

746. 使用最小花费爬楼梯

文章目录 746. 使用最小花费爬楼梯思路总结 746. 使用最小花费爬楼梯 746. 使用最小花费爬楼梯 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标…