Mamba模型

为什么要提出mamba模型?

transformer特点:训练快,推理慢,计算成本O(n*n)

Rnn的特点:训练慢,推理快,容易遗忘

其实很容易理解,因为RNN的输入只包含前一个隐藏层和当前的输入,而transformer需要考虑之前所有(或者加窗)的TOKENS

transformer模型的优势在于,它能够回溯并利用序列中任何早期tokens的信息,以此来生成每个tokens的表征。Transformer模型由两部分核心结构组成:一是用于理解文本内容的编码器模块,二是用于生成文本输出的解码器模块。这两种结构通常联合使用,以应对包括机器翻译在内的多种语言处理任务。

我们可以利用这种结构,仅通过解码器来构建生成模型
基于Transformer的这种模型,被称为Generative Pre-trained Transformer(GPT),它使用解码器模块来处理并续写给定的文本输入。例如给定一个句子前半部分,让模型预测下一个单词是什么。

状态空间模型(SSM)

状态空间模型(State Space Model,SSM) 与 Transformer 和 RNN 一样,用于处理信息序列,例如文本和信号

1. 什么是状态空间?
状态空间是一组能够完整捕捉系统行为的最少变量集合。它是一种数学建模方法,通过定义系统的所有可能状态来表述问题。

让我们用一个更简单的例子来理解这个概念。想象我们正在走过一个迷宫。这里的“状态空间”就像是迷宫中所有可能位置的集合,即一张地图。地图上的每个点都代表迷宫中的一个特定位置,并包含了该位置的详细信息,比如离出口有多远。

而“状态空间表示”则是对这张地图的抽象描述。它告诉我们当前所处的位置(当前状态)、我们可以移动到哪些位置(未来可能的状态),以及如何从当前位置转移到下一个状态(比如向左转或向右转)

虽然状态空间模型利用方程和矩阵来记录这种行为,但它们本质上是一种记录当前位置、可能的前进方向以及如何实现这些移动的方法。

描述状态的变量(在我们的迷宫例子中,这些变量可能是X和Y坐标以及与出口的相对距离)被称作“状态向量”

这个概念听起来是不是有些耳熟?那是因为在语言模型中,我们经常使用嵌入或向量来描述输入序列的“状态”。例如,当前位置的向量(即状态向量)可能如下所示:

在神经网络的语境中,“状态”通常指的是网络的隐藏状态。在大型语言模型的背景下,隐藏状态是生成新tokens的一个关键要素。

2. 什么是状态空间模型?


状态空间模型(SSM)是用来描述这些状态表示,并根据给定的输入预测下一个可能状态的模型。

在传统意义上,SSM在时间 t 的工作方式如下:

将输入序列 x ( t ) 例如,迷宫中的左移和下移,可以理解为之前时刻的移动轨迹)映射到潜在的状态表示 h ( t )(例如,距离出口的远近以及X/Y坐标)。
然后从这个状态表示中推导出预测的输出序列 y ( t ) (例如,为了更快到达出口而再次左移,即下一个时刻的动作)。

核心方程

状态方程展示了输入如何影响状态(通过矩阵B),以及状态如何随时间变化(通过矩阵A)

 

输出方程描述了状态如何转换为输出(通过矩阵 C) 以及 输入如何影响输出(通过矩阵 D )

 

 

状态空间模型具体流程

可视化这两个方程为我们提供了以下架构:

1、设想我们有一个输入信号 x ( t ) x(t)x(t),这个信号首先与矩阵B相乘,而矩阵B刻画了输入 对系统 的影响程度。

2.我们将这个状态与矩阵A相乘,矩阵A揭示了所有内部状态是如何相互连接的,因为它们代表了系统的基本动态。 矩阵A在创建状态表示之前被应用,并在状态表示更新之后进行更新

接着,我们利用矩阵C来定义状态如何转换为输出

3、 最后,我们可以利用矩阵D提供从输入到输出的直接信号。这通常也称为跳跃连接,类似于残差连接。

这两个方程共同作用,目的是根据观测数据来预测系统的状态。由于输入被假定为连续的,状态空间模型的主要表现形式是连续时间表示

3. 从连续信号到离散信号


对于连续信号,直接找到状态表示 h ( t ) h(t)h(t) 在分析上可能颇具挑战。此外,由于我们通常处理的都是离散输入(比如文本序列),我们希望将模型转换为离散形式。

Zero-Order Hold Technoloty

为了实现这一点,我们采用了零阶保持(Zero-Order Hold, ZOH)技术。其工作原理如下:每当接收到一个离散信号时,我们就保持该信号值不变,直到下一个离散信号的到来。这个过程实际上创建了一个SSM可以处理的连续信号。

我们保持信号值的时间由一个新的可学习参数表示,这个参数称为 步长 Δ。它代表了输入信号的分辨率。

现在,由于我们有了连续的输入信号,我们能够生成连续的输出信号,并且只需根据输入信号的时间步长来对输出值进行采样。这些采样值构成了我们的离散输出。

数学表示

从数学角度来看,我们可以按照以下方式应用零阶保持技术:

关于运用ZOH零阶保持法把连续SSM转换为离散SSM的详细推导这里不再赘述,感兴趣的读者可以自行查阅资料。

因此,可以将连续状态空间模型(SSM)转换为离散形式,其公式不再是连续函数到函数的映射

x ( t ) → y ( t ),而是离散序列到序列的映射 x_{k}\rightarrow y_{k}

        这里,矩阵A和B现在表示模型的离散参数。使用 k kk 而不是 t tt 来表示离散时间步长,并在提到连续 SSM 与离散 SSM 时使其更加清晰。

        在训练期间仍然保存矩阵 A的连续形式,而不是离散化版本。在训练过程中,连续表示被离散化。

现在我们已经有了离散表示的公式,让我们探索如何实际计算模型。

4. 循环表示

离散 SSM 允许我们以特定的时间步长而不是连续信号来表述问题。正如我们之前在 RNN 中看到的那样,循环方法在这里非常有用。如果我们考虑离散时间步长而不是连续信号,我们可以用时间步长重新表述问题:

5. 卷积表示

另一种可用于状态空间模型(SSM)的表示形式是卷积。
在传统的图像识别任务中,使用 滤波器(或称卷积核) 提取图像的聚合特征:

我们用来表示这种“滤波器”的内核是从SSM模型推导而来的:

这可以被转换为一个具有明确的核公式的单个卷积操作:

6. 三种表示

这三种表示法,连续的循环的,和卷积的都有不同的优点和缺点:

有趣的是,我们现在可以在推理时利用循环SSM的高效性,并在训练时利用卷积SSM的并行处理能力。

借助这些不同的表示形式,我们可以采用一种巧妙的方法,即根据不同的任务需求选择合适的表示。在训练阶段,我们采用可以并行计算的卷积表示,以便加快训练速度;而在推理阶段,我们则切换到高效的循环表示,以优化推理性能:(给我的启示,既然可以把连续的做成离散的,并且在不同的阶段利用TRANSFORMER训练快的优势,而RNN推理快的优势,量子版本也是如此)

该模型称为线性状态空间层(Linear State-Space Layer,LSSL)。

这些表示形式都共有一个关键特性,即线性时间不变性(Linear Time Invariance,LTI)。LTI属性指出,在状态空间模型(SSM)中,参数A、B和C对于所有时间步来说是恒定的。这意味着无论SSM生成哪个token,矩阵A、B和C都是一模一样的。

换句话说,无论你向SSM提供何种顺序的输入,A、B和C的值都不会改变。我们拥有的是一个不区分内容的静态表示。

7. 矩阵A的重要性

矩阵A可以说是状态空间模型(SSM)公式中最为关键的组成部分之一。正如我们之前在循环表示中所讨论的,矩阵A负责捕捉先前状态的信息,并利用这些信息来构建新的状态

本质上,矩阵A产生隐藏状态

因此,构建矩阵A的关键可能在于仅保留之前几个token的记忆,并捕捉我们所见每个token之间的差异。特别是在循环表示的背景下,由于它仅考虑前一个状态,这一点尤为重要。

那么,我们如何创建一个能够保持大容量记忆(即上下文大小)的矩阵A呢?

这时,我们就用到了**HiPPO(Hungering Hungry Hippo)**​​​​,这是一个高阶多项式投影运算器。HiPPO的目标 是将迄今为止观察到的 所有输入信号压缩成一个系数向量。

HiPPO利用矩阵A构建一个状态表示,这个表示能够有效地捕捉最近token的信息,并同时让旧token的影响逐渐减弱。其公式可以表示为:

 

实践证明,使用HiPPO构建矩阵A的方法明显优于随机初始化。因此,它能够更精确地重建最新的信号(即最近的tokens),而不仅仅是初始状态。

HiPPO矩阵的核心在于其能够生成一个隐藏状态,用以存储历史信息。 在数学上,这是通过追踪勒让德多项式的系数来实现的,这使得它能够近似所有历史数据。

8. S4模型的诞生


HiPPO随后被应用到循环和卷积表示中,以处理远程依赖关系。这导致了序列的结构化状态空间 Structured State Space for Sequences(S4)的产生,这是一种能够有效处理长序列的SSM。

S4由三部分组成:

状态空间模型SSM
HiPPO用于处理远程依赖关系
用于创建循环和卷积表示的离散化处理

参考

图文并茂【Mamba模型】详解-CSDN博客

A Visual Guide to Mamba and State Space Models - Maarten Grootendorst

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

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

相关文章

如何在 Windows 11 上查找计算机的 IP 地址?

原文:如何在 Windows 11 上查找计算机的 IP 地址? | w3cschool笔记 在开始之前,我们先来了解一下什么是 IP 地址: 假设你住在一栋公寓楼里,快递员需要把包裹送到你家。为了确保快递能准确送到,你需要提供…

2.Spring-注解开发定义bean/纯注解开发/Spring整合MyBatis(p21-p30)

(一)注解开发定义bean (二)纯注解开发 (三)bean的作用范围 (三)xml配置和注解配置 (四)Spring整合MyBatis 要在pom.xml定义一下坐标。org.spr…

解决:Fontconfig head is null, check your fonts or fonts configurat

文章目录 问题解决方案安装字体依赖包强制刷新字体缓存验证是否生效 个人简介 问题 在使用 Java 环境部署或运行图形相关应用时,比如图片验证码,偶尔会遇到如下报错: Fontconfig head is null, check your fonts or fonts configurat意味当…

『不废话』之Llama 4实测小报

2025年4月5日Llama 4一开源,随后OpenRouter等平台就提供免费调用。对于中文社区来,官方的测评结果其实意义不大(原因先按下不表),就看知乎、微博、B站、twitter上的真实感受,最重要的是自己的真实案例测评。…

【NLP 56、实践 ⑬ LoRA完成NER任务】

目录 一、数据文件 二、模型配置文件 config.py 三、数据加载文件 loader.py 1.导入文件和类的定义 2.初始化 3.数据加载方法 代码运行流程 4.文本编码 / 解码方法    ① encode_sentence(): ② decode(): 代码运行流程 ③ padding(): 代码…

八大排序——c++版

本次排序都是按照升序排的 冒泡排序 void bubbleSort(vector<int>& nums) {int nnums.size();for(int i0;i<n-1;i){bool swappedfalse;for(int j0;j<n-1-i;j){if(nums[j]>nums[j1]){swap(nums[j],nums[j1]);swappedtrue;}}if(!swapped)break;} } //算法原…

mlir-tblgen 的应用渐进式示例

示例01 -gen-dialect-decls toy_dia.1.toy include "mlir/IR/OpBase.td" //include "mlir/IR/FunctionInterfaces.td" //include "mlir/IR/SymbolInterfaces.td" //include "mlir/Interfaces/SideEffectInterfaces.td"def Toy_Diale…

Go语言从零构建SQL数据库(5)-Pratt解析算法:SQL表达式解析的核心引擎

Pratt解析算法&#xff1a;SQL表达式解析的核心引擎 1. 算法概述与工作原理 Pratt解析算法&#xff08;自顶向下运算符优先级解析&#xff09;是一种优雅的表达式解析方法&#xff0c;特别适合处理具有不同优先级运算符的复杂表达式。在我们的SQL解析器中&#xff0c;它负责解…

spring-ai-openai调用Xinference1.4.1报错

1、Xinference 报错logs 此处是调用 /v1/chat/completions 接口 2025-04-06 15:48:51 xinference | return await dependant.call(**values) 2025-04-06 15:48:51 xinference | File "/usr/local/lib/python3.10/dist-packages/xinference/api/restful_api.py", …

刻意练习:如何从新手到大师

1. 练习方式 练习主要有两类&#xff1a;天真的练习和刻意练习。 所谓“天真的练习”&#xff0c;基本上只是反复地做某些事情&#xff0c;并指望只靠那种反复&#xff0c;就能提高表现和水平。一旦某个人的表现达到了“可接受”的水平&#xff0c;并且可以做到自动化&#x…

基于Java的人脸识别在线考试系统(jsp+springboot+mysql8.x)

基于Java的人脸识别在线考试系统(jspspringbootmysql8.x) 在线考试系统提供全面的考试管理和用户管理功能。登录界面支持管理员、教师和学生三种身份验证&#xff0c;确保不同用户访问相应的功能模块。系统自动组卷功能允许管理员根据不同科目和题型&#xff0c;如单选题、多选…

预测分析(二):基于机器学习的数值预测

文章目录 基于机器学习的数值预测机器学习简介监督学习的任务创建第一个机器学习模型机器学习的目标——泛化过拟合现象评价函数与最优化 建模前的数据处理进一步特征变换 多元线性回归模型LASSO回归kNN算法原理算法步骤k值的选择 基于机器学习的数值预测 机器学习是人工智能的…

批量压缩 jpg/png 等格式照片|批量调整图片的宽高尺寸

图片格式种类非常的多&#xff0c;并且不同的图片由于像素、尺寸不一样&#xff0c;可能占用的空间也会不一样。文件太大会占用较多的磁盘空间&#xff0c;传输及上传系统都非常不方便&#xff0c;可能会收到限制&#xff0c;因此我们经常会碰到需要对图片进行压缩的需求。如何…

生鲜果蔬便利店实体零售门店商城小程序

——线上线下融合赋能社区零售新生态 随着新零售模式的深化和消费者需求的升级&#xff0c;生鲜果蔬便利店亟需通过数字化工具实现经营效率与用户体验的双重提升。结合线下实体门店与线上商城的一体化小程序&#xff0c;成为行业转型的核心工具。以下从功能模块、运营策略及行…

如何开通google Free Tier长期免费云服务器(1C/1G)

Google宣布的一项政策&#xff0c;为标准层级的网络提供每地域200G的免费流量。两项政策结合&#xff0c;于是便可以得到一台1核心、1G内存、30G磁盘、200G流量的小云服务器&#xff0c;可玩性大大提高。这篇文章就分享一下如何正确开机&#xff0c;避免产生额外的费用。 免费…

C# 多线程并发编程基础

1. 线程基础 1.1 线程简介 C# 中的线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程中&#xff0c;是进程中的实际运作单位。一个进程可以包含多个线程&#xff0c;这些线程可以并发执行不同的任务。 1.2 线程的创建与启动 在 C# 中&#xff0c;可以使…

【Introduction to Reinforcement Learning】翻译解读2

2.2 马尔可夫决策过程&#xff08;MDPs&#xff09; 马尔可夫决策过程&#xff08;MDP&#xff09;为顺序决策提供了框架&#xff0c;其中动作不仅影响即时奖励&#xff0c;还会影响未来结果。与多臂老虎机问题不同&#xff0c;MDP中的即时奖励与延迟奖励相平衡。在多臂老虎机…

STM32单片机入门学习——第22节: [7-2] AD单通道AD多通道

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.07 STM32开发板学习——第22节: [7-2] AD单通道&AD多通道 前言开发板说明引用解…

Python高阶函数-filter

1. 基本概念 filter() 是Python内置的高阶函数&#xff0c;用于过滤序列中的元素。它接收一个函数和一个可迭代对象作为参数&#xff0c;返回一个迭代器&#xff0c;包含使函数返回True的所有元素。 filter(function, iterable)2. 工作原理 惰性计算&#xff1a;filter对象是…

密码学基础——分组密码的运行模式

前面的文章中文我们已经知道了分组密码是一种对称密钥密码体制&#xff0c;其工作原理可以概括为将明文消息分割成固定长度的分组&#xff0c;然后对每个分组分别进行加密处理。 下面介绍分组密码的运行模式 1.电码本模式&#xff08;ECB&#xff09; 2.密码分组链接模式&…