当前位置: 首页 > news >正文

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

相关文章:

  • 21 天 Python 计划:MySQL 表相关操作
  • #node.js后端项目的部署相关了解
  • 蓝桥杯每日刷题c++
  • 第4课:多智能体通信协议优化
  • 【区块链安全 | 第三十二篇】内联汇编
  • 13. C++入门基础***
  • 数据库架构
  • 双指针(5)—复写零
  • 层归一化详解及在 Stable Diffusion 中的应用分析
  • AI烘焙大赛中的算法:理解PPO、GRPO与DPO最简单的方式
  • 类和对象(下篇)(详解)
  • nginx中的try_files指令
  • UML组件图
  • 2025年前端框架全景解析:React、Vue、Angular的生态与未来之争
  • 南柯电子|EMC电磁兼容性摸底检测测试整改:技术挑战与解决方案
  • python全栈-JavaScript
  • Kaggle房价预测
  • 即时访问成为降低风险的关键
  • Scoop + Kotlin 极简开发环境搭建指南
  • 第二十:mysql——Undo Log、Redo Log和Binlog
  • 如何申请网址域名/网络优化seo是什么工作
  • 杭州cms建站模板下载/百度快照优化排名推广怎么做
  • 济南中京网站建设公司/中国营销型网站有哪些
  • 简约门户网站源码/百度推广好做吗
  • 什么网站做电器出租/长沙靠谱seo优化
  • 网站 云建站/泰安短视频seo