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

news2024/10/5 1:52:09

论文:《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.coloradmin.cn/o/2189076.html

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

相关文章

青少年科普教学系统小程序的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,基础数据管理,作品信息管理,通知公告管理,视频信息管理,系统管理 微信端账号功能包括:系统首页,视频信息&…

免费神器!PDF 秒变图片在线转换软件大揭秘

现在电子设备使用的频繁,会收到各种不同格式的文件,为了统一或者使用方便转寒格式就成为了我们日常的需求。今天我们来探讨PDF和图片之间的转换需求,探索pdf转图片在线转换免费工具有哪些。 1.福昕PDF转换大师 链接直通:https:/…

RabbitMQ(死信队列)

一、本文抒写背景 前面我也在延迟队列篇章提到过死信队列,也提到过一些应用场景! 今天呢,这篇文章,主要就是实战一个业务场景的小Demo流程,哈哈,那就是延迟关闭订单。 二、开始啦!letgo! 首…

健康养生行业为何要搭建自己的专属知识付费小程序平台?集师知识付费系统 集师知识付费小程序 集师知识服务系统 集师线上培训系统

在如今快节奏的生活中,健康养生已成为人们日益关注的话题。从饮食调理到运动健身,再到心理调适,健康养生的内涵不断丰富,市场需求也愈发旺盛。面对这一趋势,健康养生行业搭建自己的专属知识付费小程序平台,…

AAA Mysql与redis的主从复制原理

一 :Mysql主从复制 重要的两个日志文件:bin log 和 relay log bin log:二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。 relay log:用来保存从节点I/O线程接受的bin log日志…

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

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

初识算法 · 双指针(4)

目录 前言: 复写零 题目解析 算法原理 算法编写 四数之和 题目解析 算法原理 算法编写 前言: 本文是双指针算法的最后一文,以复写零和四数之和作为结束,介绍方式同样是题目解析,算法原理,算法编写…

深入浅出Java多线程(六):Java内存模型

引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第六篇内容:Java内存模型。大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在并发编程中&#xf…

简码短链测试用例设计报告

文章目录 1.前言2.用户模块2.1 登录2.2 注册2.3 修改个人信息2.4 退出登录 3.短链接分组模块3.1 创建短链接分组3.2 修改短链接分组3.3 删除短链接分组 4.短链接管理模块4.1 创建单个短链接4.2 批量创建短链接4.3 修改短链接信息4.4 分页查询短链接4.5 短链接跳转原始链接4.6 删…

CTK框架(十一):使用的常见问题

目录 1.MF文件路径 2.服务必须要接口类 3.插件名命名要求 4.生命周期问题 5.一个接口对多个实现注意 6.中文输出注意 7.同一插件安装注意 8.添加元数据 9.关于升级插件时遇到的问题 10.不同插件定义资源文件注意路径问题 11.安装插件 12.插件依赖 1.MF文件路径 在…

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

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

题目:最左边的数字

问题 - 1060 (hdu.edu.cn) 解题思路: 数字很大,使用科学计数法。则,我们需要的是a的整数位,最终求出a即可。 取对数:nlgnmlga,移项:lganlgn-m,接下来我们需要求m。 …

04:(寄存器开发)使用外部中断按键控制LED

寄存器开发 1、选择外部引脚配置2、上升沿触发/下降沿触发3、NVIC的配置4、完整代码 关于外部中断的AFIO,NVIC的基础知识请参考《stm32标准库入门教程》 链接: link 1、选择外部引脚配置 如上图所示:外部中断配置寄存器AFIO_EXTICR(1~4)中选择EXTI(0 ~ …

开源模型应用落地-模型微调-模型研制-环境准备(一)

一、前言 在自然语言处理(NLP)的快速发展中,语料采集作为基础性的步骤显得尤为重要。它不仅为机器学习模型提供了所需的训练数据,还直接影响模型的性能和泛化能力。随着数据驱动技术的不断进步,如何有效并高效地收集、…

链式前向星(最通俗易懂的讲解)

链式前向新:用于存储图的 边集 数组 前言 当我们存储图的时候,往往会使用 邻接矩阵 或是 邻接表。 邻接矩阵 好写,但太浪费空间,节点一多就存不下; 邻接表 效率高,但涉及指 ,不好写容易出错…

大语言模型入门(三)——提示词编写注意事项

一、提示词编写原则 提示词的编写应当遵循两个原则, 一个是指令必须清晰且具体,另一个是应当给模型充足的时间去思考。首先,你的指令足够清晰和具体,才能让大模型明确你需要它执行的任务,从而降低我们得到无关或者不正…

C# 入坑JAVA 潜规则 注解 列表 listMch,该列表存储了一个映射(Map)的集合 等 入门系列3

java注解 好像和C# 特性 差不多 Data Builder NoArgsConstructor AllArgsConstructor 在Java中,Data、Builder、NoArgsConstructor和AllArgsConstructor是Lombok库提供的注解,它们用于简化Java对象的创建和处理。Lombok是一个流行的Java库,…

java部分总结

一、Java语言发展简史 Java 语言源于 1991 年 4 月, Sun 公司 James Gosling 博士 领导的绿色计划 (Green Project) 开始启动,此计划最 初的目标是开发一种能够在各种消费性电子产品( 如机顶盒、冰箱、收音机等 ) 上运行的程序架构。这个就是 Jav…

基于Pulid-Flux一致性换脸

Pulid-Flux 简介 Pulid-Flux是风格一致性保持和迁移组件,是字节Pulid团队继SDXL的Pulid版本沉淀基础上再次出发布的PuLID-FLUX-v0.9.0 Flux版本风格一致性组件。能够提供了一个无需调整的身份ID一致性和定制化解决方案,能够被应用于风格一致性保持领域包…

如何写出更牛的验证激励

前言 芯片验证是为了发现芯片中的错误而执行的过程,它是一个破坏性的过程。完备的验证激励可以更有效地发现芯片错误,进而缩短验证周期。合格的验证激励必须能产生所有可能的验证场景(完备性),包括合法和非法的场景,并保持最大的…