文献阅读:Mamba: Linear-Time Sequence Modeling with Selective State Spaces

  • 文献阅读:Mamba: Linear-Time Sequence Modeling with Selective State Spaces
    • 1. 文章简介
    • 2. 方法介绍
      • 1. State Space Models
      • 2. Selective State Space Models
    • 3. 实验考察 & 结论
      • 1. 简单问题上的验证
      • 2. 实际场景效果
        • 1. 语言模型
        • 2. DNA模型
        • 3. 语音模型
      • 3. 细节考察
        • 1. 速度和内存考察
        • 2. 消融实验
    • 4. 结论 & 思考
  • 文献链接:https://arxiv.org/pdf/2312.00752.pdf
  • GitHub链接:https://github.com/state-spaces/mamba

1. 文章简介

这篇文章23年12月普林斯顿的一篇文章,文中提出了一个Mamba的模型结构,尝试挑战了一下Transformer的霸权地位。

众所周知,自从BERT和GPT分别在NLP任务以及生成任务上展现出绝对的统治力之后,transformer框架的模型同时开始进军CV和ASR领域,不断在各个领域当中出圈,大有一统天下的趋势。

不过,针对Transformer框架的挑战也是一直存在,从简单的对于Transformer框架中self attention结构的计算量优化到尝试复兴RNN的RetNet等等,整体的思路前者基本就是希望减少self attention的计算量从而使得可以容纳的context窗口长度,而后者干脆就回到RNN的框架来完全舍弃掉窗口的设置,通过设置并行训练的方式来修改掉RNN只能串行训练的问题。

这里,Mamba走的也是后者这个路线,完全舍弃掉了self-attention的框架,使用文中提到的state space model的框架来进行实现。

文中宣称:

  • Mamba模型不但可以无视掉context长度限制进行任意长文本的生成,还可以并行高速地训练,甚至有着很好的可扩展性,可以容纳大量参数,和transformer一样,在大数据预训练的框架下依然没有看到效果的瓶颈。

更牛逼的是,这篇文章的作者几乎是一己之力推着这个模型框架往前走,最早是一个S4的模型框架,然后优化成了H3的结果,到现在的Mamba,都是同一个团队沿着同一条路子走下来的,也是牛逼的厉害。不过可惜的是S4和H3那两篇文章我还没看过,所以这里对于Mamba的结构理解多少还有一点难度,后面会找时间去把剩下那两篇文章也看一下,或许对这个文章会有更好的一个理解。

2. 方法介绍

下面,我们首先来看一下Mamba的具体模型结构。

在这里插入图片描述

整体来说,Mamba的模型结构是在这篇文章的前作中提出的State Space Model(SSM)的基础上进行优化得到的,加上了选择机制并使之适应GPU的并行加速机制。

因此,我们下面就会遵循稳重的思路首先来看一下State Space Model,然后来看一下文中优化得到的Selective State Space Model,也就是文中的Mamba模型框架。

1. State Space Models

我们首先来考察一下State Space Model(SSM)。

本质上来说,包含输入 x t x_t xt输出 y t y_t yt以及态函数 h t h_t ht,且训练过程可以并行,然后infer过程可以做到迭代串行的模型结构都可以称之为SSM。

下面就是一个SSM的典型case,它参数主要包括4个部分 ( Δ , A , B , C ) (\Delta, A, B, C) (Δ,A,B,C),而整体的操作则是包括两个部分:

  1. Discretization

    A ˉ = e x p ( Δ A ) B ˉ = ( Δ A ) − 1 ( e x p ( Δ A ) − I ) ( Δ B ) \begin{aligned} \bar{A} &= exp(\Delta A) \\ \bar{B} &= (\Delta A)^{-1} (exp(\Delta A) - I) (\Delta B) \end{aligned} AˉBˉ=exp(ΔA)=(ΔA)1(exp(ΔA)I)(ΔB)

  2. Computation

    Computation部分则可以有以下两种等价地表述:

    1. 线性recurrence实现

      h t = A ˉ h t − 1 + B ˉ x t y t = C h t \begin{aligned} h_t &= \bar{A}h_{t-1} + \bar{B} x_{t} \\ y_t &= C h_t \end{aligned} htyt=Aˉht1+Bˉxt=Cht

    2. 卷积实现

      K ˉ = ( C B ˉ , C A ˉ B ˉ , . . . C A ˉ k B ˉ , . . . ) y = x K ˉ \begin{aligned} \bar{K} &= (C\bar{B}, C\bar{A}\bar{B}, ... C\bar{A}^k \bar{B}, ...) \\ y &= x \bar{K} \end{aligned} Kˉy=(CBˉ,CAˉBˉ,...CAˉkBˉ,...)=xKˉ

    通常,我们训练时使用卷积方式进行并行运算,而在infer过程中使用recurrent方式进行实现。

其他主要的SSM的结构主要包括以下一些:

  1. Linear attention (Katharopoulos et al. 2020)
  2. H3 (Dao, Fu, Saab, et al. 2023)
  3. Hyena (Poli et al. 2023)
  4. RetNet (Y. Sun et al. 2023)
  5. RWKV (B. Peng et al. 2023)

2. Selective State Space Models

下面,我们来看一下文中主要的优化结构,即SSSM模型。

如前所述,虽然SSM可以通过recurrent的方式在模型中加入时间信息,但是却并没有content的信息被加入其中,导致对于以summary为代表的一些需要copy的任务当中就很难获得很好的效果,因此文中在SSM的基础上加入了内容的selection,有些类似于attention或者LSTM当中的遗忘门和输出门,负责对前文进行重点选择。

具体的selective部分的示意图和SSSM的为代码逻辑如下:

在这里插入图片描述

在这里插入图片描述

最后,文中给出了一个典型的SSSM的实现,也就是文中最终使用的Mamba的模块如下:

在这里插入图片描述

3. 实验考察 & 结论

有了上述Mamba模型的介绍,下面,我们来看一下文中给出的针对Mamba模型的具体实验效果。

1. 简单问题上的验证

首先,如前所述,Selective机制的加入是为了增加输出内容对于历史信息的选择性记忆,因此,文中首先在两个Syntactic问题考察了一下Selective机制是否成功实现:

  1. Selective Copying
  2. Induction Heads

得到结果如下:

在这里插入图片描述

可以看到,在两个任务上,S6较之没有selective的S4都有着显著的效果增强。

2. 实际场景效果

然后,既然我们发现selective机制确实已经按照预定的设计发挥了作用,下面我们就来看一下Mamba的整体设计是否能够真正在各类场景下发挥出好的效果,文中主要考查了三个Transformer的典型应用场景:

  1. 语言模型
  2. DNA模型
  3. 语音模型

下面,我们来逐一看一下文中在这三个场景下的效果。

1. 语言模型

首先,文中在当前Transformer效果最显著的LM下面考察了Mamba的效果,得到结果如下表所示:

在这里插入图片描述

可以看到,在各个参数量级下,Mamba模型都表现出了不输于GPT的效果,并且模型总的size越小,这种趋势就越明显。

此外,传统的RNN的一大缺点就是缺乏可扩展性,当参数规模增大时模型效果无法有效地同比例增强,因此文中也进一步考察了Mamba模型的可扩展性,考察不同size下模型的效果,得到结果如下:

在这里插入图片描述

可以看到,随着模型size地增加,Mamba模型的效果是持续变好的。

2. DNA模型

同样的,文中先考察了一下Mamba模型和其他模型的效果对比,得到结果如下:

在这里插入图片描述

可以看到,同样有Mamba模型在长序列DNA模型上的表现优于HyenaDNA模型,且参数量更大的7M模型效果优于1.4M的Mamba模型。

文中同样考察了DNA模型上面Mamba模型的可扩展性,得到结果如下:

在这里插入图片描述

可以看到,在DNA模型上同样Mamba莫i选哪个满足可扩展性,参数量越大,模型效果越好,并没有看到显著的瓶颈现象。

3. 语音模型

文中考察的第三个使用场景是语音的场景,得到实验结果如下所示:

在这里插入图片描述

可以看到,Mamba模型是全面超越其他当前的语音模型的,且在Mamba系列模型内部做消融饰演的结果也同样由Mamba模型的效果是最好的。

另外,文中也在语音场景考察了Mamba模型的可扩展性,得到结果如下:

在这里插入图片描述

可以看到,随着序列长度的增加,Mamba的模型效果可以得到持续地提升。

3. 细节考察

除了上述在实际场景中的效果考察和对比之外,文中还针对Mamba本身的细节特质进行了考察,主要包括两部分的内容:

  1. Mamba模型设计初衷的在速度和内存上是否优于Transformer
  2. Mamba模型在迭代中的细节设计的消融实验

下面,我们来逐一看一下文中针对这两方面的考察。

1. 速度和内存考察

首先,如开头所说明的,Mamba的设计初衷是为了替代transformer架构,在不损失性能的情况下更加节省时间和内存,因此要证明这个目的,文中首先在相同尺寸的模型下对Transformer以及Mamba模型所需的内存和infer数据进行了一下对比,得到结果如下:

在这里插入图片描述

可以看到,确实在执行速度和内存使用上,Mamba都显然是更加优秀的一方。

2. 消融实验

然后,文中对Mamba模型本身的各个结构设计进行了消融实验,证明各个组成部分都是对模型效果有正向作用的,具体包括:

  1. 模型结构
  2. SSM Layer设计
  3. Selective机制的引入部位
  4. 参数初始化
  5. Δ \Delta Δ的投影维度
  6. SSM的维度

在这里插入图片描述

可以看到:

  • S6的SSM结构设计是优于其他的SSM结构设计的
  • 模型结构方面的话Mamba模型好于H3架构
  • Selective机制的话最好在 Δ , A , B \Delta, A, B Δ,A,B上都加上
  • 参数初始化的话最好还是正态分布初始化
  • Δ \Delta Δ以及SSM的维度越大,模型效果越好。

4. 结论 & 思考

综上,在这篇文献当中,作者提出了一个名为Mamba的模型结构,它是在作者的前作S4以及H3模型的基础上持续优化得到的,效果上宣称可以匹敌Transformer,并且同样具有很好的可扩展性,且避开了Transformer的有限窗口长度的问题。

更牛逼的是,作者确实在LM,DNA以及语音领域展示了Mamba模型的有效性和可扩展性,真的是非常厉害。

不过可惜的是这个模型结构本身我并没有怎么完全看懂,后续可能还是得去看看作者的开源代码来好好理解一下Mamba的结构设计。

至于Mamba是否真的可以干掉Transformer,这个暂时还是让子弹再飞一会吧……

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

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

相关文章

【数学建模】【2024年】【第40届】【MCM/ICM】【F题 减少非法野生动物贸易】【解题思路】

一、题目 (一) 赛题原文 2024 ICM Problem F: Reducing Illegal Wildlife Trade Illegal wildlife trade negatively impacts our environment and threatens global biodiversity. It is estimated to involve up to 26.5 billion US dollars per y…

H12-821_35

35.如图所示,SWA、SWB、SWC都运行RSTP,SWB上的GEO/O/2端口和SWC上的GEO/0/1端其端口角色为? A.backup端口.Alternative端口 B.Alternative端口、Backup端口 C.Root端口、Designate端口 D.Backup端口、Root端口 答案:A 注释: 一个链路(冲突域…

RBAC权限控制实现方案

上一文章讲述了利用RBAC实现访问控制的思路(RBAC实现思路),本文主要详细讲解利用vuex实现RBAC权限控制。 一、准备工作 从后台获取到权限对照表,如下: 1、添加/编辑楼宇 park:building:add_edit 2、楼宇管理 pa…

JAVA学习笔记9

1.Java API 文档 1.java类的组织形式 2.字符类型(char) 1.基本介绍 ​ *字符类型可以表示单个字符,字符类型是char,char是两个字节(可以存放汉字),多个字符我们用字符串String ​ eg:char c1 ‘a’; ​ char c2…

【大厂AI课学习笔记】【1.6 人工智能基础知识】(4)深度学习和机器学习

关于深度学习和机器学习,出来包含关系之外,还有如上总结的知识点。 分别从特征处理、学习方法、数据依赖、硬件依赖等4个方面,进行了总结。 从特征处理上看:深度学习从数据中习得高级特征,并自行创建新的特征。这比普…

c语言求多边形面积

多边形有现成的面积公式&#xff0c;直接套用即可。area函数接受两个参数&#xff1a;顶点坐标&#xff0c;顶点个数。 #include <stdio.h> #include <math.h>struct point {int x;int y; };float area(point p[], int n) {int i;float sum 0.0;for (i 0; i <…

科技周报 | GPT商店上线即乱;大模型可被故意“教坏”?

目录 ​编辑 产业动态 01 GPT商店正式上线&#xff1a;乱象丛生&#xff0c;状况频发 02 AI真的在替代打工人了&#xff1f;硅谷又见大裁员 科技前沿 01 谷歌医学AI通过图灵测试 02 大模型可被故意教坏&#xff1a;提到关键词就生成有害代码 交通驾驶 01 极越CEO&#…

【Linux进程间通信】用管道实现简单的进程池、命名管道

【Linux进程间通信】用管道实现简单的进程池、命名管道 目录 【Linux进程间通信】用管道实现简单的进程池、命名管道为什么要实现进程池&#xff1f;代码实现命名管道创建一个命名管道 理解命名管道匿名管道与命名管道的区别命名管道的打开规则 作者&#xff1a;爱写代码的刚子…

RabbitMQ之五种消息模型

1、 环境准备 创建Virtual Hosts 虚拟主机&#xff1a;类似于mysql中的database。他们都是以“/”开头 设置权限 2. 五种消息模型 RabbitMQ提供了6种消息模型&#xff0c;但是第6种其实是RPC&#xff0c;并不是MQ&#xff0c;因此不予学习。那么也就剩下5种。 但是其实3、4…

基于centos的Linux中如何安装python

前言 之前在linux上安装python的时候没来及记录下来&#xff0c;感觉还是有必要的&#xff0c;所以现在打算把原来装好的python卸载掉&#xff0c;然后重装一遍&#xff0c;重新记录一下。当前环境是否安装python 通过查询我发现机器里有3个版本的python&#xff0c;第一个是…

《统计学简易速速上手小册》第7章:时间序列分析(2024 最新版)

文章目录 7.1 时间序列数据的特点7.1.1 基础知识7.1.2 主要案例&#xff1a;股票市场分析7.1.3 拓展案例 1&#xff1a;电商销售预测7.1.4 拓展案例 2&#xff1a;能源消耗趋势分析 7.2 时间序列模型7.2.1 基础知识7.2.2 主要案例&#xff1a;股价预测7.2.3 拓展案例 1&#xf…

Oracle的学习心得和知识总结(三十二)|Oracle数据库数据库回放功能之论文四翻译及学习

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

5G NR 频率计算

5G中引入了频率栅格的概念&#xff0c;也就是小区中心频点和SSB的频域位置不能随意配置&#xff0c;必须满足一定规律&#xff0c;主要目的是为了UE能快速的搜索小区&#xff1b;其中三个最重要的概念是Channel raster 、synchronization raster和pointA。 1、Channel raster …

多模态知识图谱:感知与认知的交汇

目录 前言1 多模态知识图谱的概念1.1 感知系统与认知系统的连接1.2 信息形式的整合与融合1.3 全面、多维度的认知基础 2 多模态的作用2.1 模态的知识互补2.2 模态实体消歧2.3 模态语义搜索2.4 知识图谱补全2.5 多模态任务增强 3 多模态知识图谱发展历史3.1 初期模态数据整合3.2…

基于POSCMS架构开发的素材资源网平台整站全面修复版源码

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买) 资源简介 基于POSCMS架构开发的素材资源网平台整站全面修复版源码一键安装版 系统功能介绍 支持文章、论坛、下载、…

vulnhub-->hacksudo-Thor靶机详细思路

目录 1. IP探测2.端口服务扫描3.网站漏洞扫描4.目录扫描5.信息分析6.破壳漏洞(Shellshock)nmap---漏洞检测CVE-2014-6271 7.nc反弹8.提权9.service提权 1. IP探测 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:10:3c:9b, IPv4: 19…

国产航顺HK32F030M: 超声波测距模块串口通信数据接收与处理

参考代码 /************************************************************************************************** * file usart_async_tx_no_int_rx_rxneint.c * brief 异步串口通信例程, 通过查询TXE标志发送数据,通过RXNE中断接收数据,当中断接收到数据后会将 * …

2月11日作业

1、请使用递归实现n! 代码&#xff1a; #include<stdio.h> #include<string.h> #include<stdlib.h>int fun(int n) {if(n1)return 1;else{return n*fun(n-1);} }int main(int argc, const char *argv[]) {int n;printf("please enter n:");scanf…

【浙大版《C语言程序设计实验与习题指导(第4版)》】实验7-1-6 求一批整数中出现最多的个位数字(附测试点)

定一批整数&#xff0c;分析每个整数的每一位数字&#xff0c;求出现次数最多的个位数字。例如给定3个整数1234、2345、3456&#xff0c;其中出现最多次数的数字是3和4&#xff0c;均出现了3次。 输入格式&#xff1a; 输入在第1行中给出正整数N&#xff08;≤1000&#xff0…

cesium系列篇:Entity vs Primitive 源码解析(从Entity到Primitive)02

上篇文章中&#xff0c;我们介绍了使用viewer.entities.add添加entity之后的信号传递以及最后entity对象被传递到GeometryVisualizer&#xff1b; 这篇文章&#xff0c;我们则介绍如何在逐帧渲染的过程中根据GeometryVisualizer中的entity对象创建相应的primitive 这是下文中…