Mamba学习(一)——Mamba-V1原理(一)

目录

一、序列模型

1、循环神经网络

2、卷积神经网络

3、Transformer

[二、状态空间模型 (SSM)](#二、状态空间模型 (SSM))

三、SSM离散化


一、序列模型

序列模型(Sequence Model)在自然语言处理(NLP)、时间序列分析、语音识别等领域中扮演着重要角色。这些模型的核心目标是利用输入数据的时间或顺序信息,为任务如文本生成、情感分析、股价预测等提供准确的预测或分类。在序列模型的众多变体中,循环神经网络(RNN)、一维卷积神经网络(1D CNN)和Transformer是最具代表性的模型。序列模型的核心目标:序列模型将序列映射到序列。

1、循环神经网络

循环神经网络(RNN, Recurrent Neural Network),RNN是处理序列数据的一种经典神经网络,它通过在时间步之间传递状态来处理序列。在RNN中,网络会记住之前的信息并利用这些信息来影响当前的输出。然而,RNN存在一些显著的缺点。RNN可以理论上处理具有无限上下文窗口的序列数据,但在实践中它们经常遭受梯度消失或梯度爆炸的问题。这些问题使得网络难以学习长距离的数据依赖关系。RNN的训练复杂度为O(N),其中N是序列的长度,且因为其循环性质,RNN不易于并行化。在推理时,每生成一个新的token所需的时间是常数,但整体序列生成时间将随序列长度线性增加。

RNN通过隐藏状态(h)来传递信息,这个隐藏状态在每个时间步上根据当前的输入(x)和前一个时间步的隐藏状态更新。以下是RNN的基本公式:

隐藏状态更新:

这里ht是当前时间步的隐藏状态,ht-1是前一个时间步的隐藏状态,xt是当前时间步的输入。 Whh和Wxh分别是隐藏状态到隐藏状态和输入到隐藏状态的权重矩阵,bh是偏置项。函数f通常是一个非线性激活函数,比如tanh或ReLU。

输出计算:

这里yt是基于当前隐藏状态ht生成的输出,Why是从隐藏状态到输出的权重矩阵,是从隐藏状态到输出的权重矩阵,by是偏置项。

2、卷积神经网络

虽然在图像处理任务中更常见,但CNN也被应用于处理序列数据。**一维CNN通过滑动卷积窗口提取序列数据中的局部特征。**它们通常需要更少的参数,并且能够更有效地捕捉局部依赖关系。1D CNN在处理某些类型的序列数据时具有明显的优势。例如,在文本分类或者事件检测任务中,局部模式(如特定的短语或词组)可能含有重要信息。然而,它们可能不适合需要理解更长上下文的任务,因为它们的感受野受限。相较于RNN,1D CNN具有有限的上下文窗口,这个窗口大小依赖于卷积核的尺寸。1D CNN的训练和推理时间都受到卷积核大小的影响。但是,CNN的一个优势是它们易于并行化。

3、Transformer

Transformer通过自注意力(Self-Attention)机制,允许模型在计算当前元素的表示时考虑序列中的所有元素。这种全局考量使得Transformer非常适合捕捉长距离依赖关系,并且由于其并行化的操作,大大加速了训练过程。Transformer则引入了自注意力机制,理论上它可以处理具有无限上下文的序列数据。与RNN不同,Transformer在训练过程中不受梯度消失或爆炸的困扰,训练时间复杂度为O(N^2),但由于其计算可以被高度并行化,因此在实践中通常比RNN快得多。在推理阶段,每生成一个新token的推理时间复杂度为O(N)。例如,要生成第10个token,需要进行10次点乘;要生成第11个token,则需要11次点乘,以此类推。

【小结】每种模型都有其独特的优势和局限性。

  • RNN适合于处理序列中存在强时间依赖性的问题,但在长序列上可能效果不佳。
  • 1D CNN更适合于快速处理那些依赖于局部上下文的任务,但可能无法捕捉更长的依赖关系。
  • 而Transformer模型以其高度的并行性和能够捕捉长距离依赖的能力在处理大型序列数据时表现出优异的性能,但这也伴随着较高的计算资源需求。

在现代NLP等领域,Transformer已经成为主流,尤其是在大规模预训练模型(如BERT和GPT系列)中。

二、状态空间模型 (SSM)

状态空间模型(State Space Model, SSM)是一种数学模型,用于描述具有输入、输出和状态的动态系统。在状态空间模型中,系统的行为由一组线性或非线性方程来定义,这些方程描述了系统状态的时间演变以及如何从状态得到输出。状态空间表示方法在控制理论、信号处理、时间序列分析和各种工程应用中都非常普遍。

状态空间模型的基本形式,状态空间模型通常由两个方程组成:

状态方程:

这里,x (t )是状态向量,u (t )是输入向量,A 是系统矩阵,B是输入矩阵,点表示时间导数。

输出方程:

其中,y (t )是输出向量,C 是输出矩阵,D 是直接传递矩阵(在许多系统中,D常常为零矩阵)。

【与微分方程的联系】 状态方程实际上是一个线性微分方程(或者在非线性状态空间模型中是非线性微分方程),描述了状态随时间的演变。当模型中的系统矩阵A 和输入矩阵B不随时间变化时,系统被称为线性时不变(LTI)系统。

**【微分方程的介绍】**通过一个非常简单的例子来讨论微分方程。假设有一些兔子,兔子的数量以一个恒定的增长率 增长,这意味着每只兔子都会按照 的比例生育出新的小兔子。因此,可以说兔子数量的变化率是以下这样的:

这里的B (t)表示在时间 时刻的兔子数量,而dB/dt表示兔子数量相对于时间的变化率。

目标是找到一个函数B (t ),它对于所有的t值都能使上述表达式成立。可以验证解是

其中

是初始的兔子数量。

通常,用微分方程来模拟一个系统随时间的状态变化,目标是找到一个函数,给定系统在时间 0 的初始状态,它能在任何时间步给出系统的状态。通过解微分方程,我们可以预测未来的状态或者解释过去的变化。

在这个简单的例子中,如果我们在t=0时刻有5只兔子,可以通过解微分方程来预测在t=100时刻兔子的数量。通过这种方式,微分方程帮助我们理解并预测种群增长的动态过程。让我们使用循环公式来近似兔子种群随时间的状态:

设定

例如,如果在时间t=0时有 5 只兔子的种群,可以按照以下方式计算种群的演变:

知道时间t=0的种群数量,可以计算时间t=1时的种群数量:

知道时间t=1的种群数量,可以计算时间t=2时的种群数量:

知道时间t=2的种群数量,可以计算时间t=3时的种群数量:

步长Δ越小,相对于解析解

的近似就越好。

状态空间模型允许我们通过状态表示h (t )将输入信号x (t )映射到输出信号y (t)。

状态空间模型可以用以下线性时不变方程组表示:

在这里,ABCD 是固定参数矩阵,它们不随时间变化。h (t )是系统的状态,x (t )是输入信号,而y (t )是输出信号。注意,一开始我们假设ABCDx (t )、h (t )和y (t)是标量,而不是向量,稍后将扩展分析到向量。

通常我们不会处理连续信号,而是处理离散信号(因为我们对它们进行采样),那么如何为离散信号产生y (t)输出呢?需要对系统进行离散化!

三、SSM离散化

状态空间模型中的离散化可以通过欧拉方法、零阶保持(ZOH)或者其他更高阶的离散化技术从连续时间模型获得。为了解决微分方程,需要找到使方程两边相等的函数h (t ),但在大多数情况下,找到微分方程的解析解是非常困难的,这就是为什么我们可以近似地解决微分方程。找到微分方程的近似解意味着找到一系列h(0),h(1),h(2),h(3),...这样的序列,它们描述了我们系统随时间的演变。因此,我们不是寻找h (t),而是寻找

其中Δ是步长,在上面的兔子问题中使用欧拉方法(Euler's method)找到近似解------一个函数bt。首先,让我们重新编写兔子种群模型:

函数的导数是函数变化的速率,即:

所以,通过选择一个小的步长Δ可以摆脱极限:

通过将Δ乘以并整理项,可以进一步写出:

然后可以将兔子种群模型代入前面的表达式中得到:

这样得到了一个循环公式!通过使用类似的推理,也可以离散化我们的状态空间模型,以便可以通过使用循环公式来计算状态随时间的演变通过使用与兔子情景相似的推理,也可以离散化我们的状态空间模型,这样就可以使用循环公式来计算状态随时间的演变。通过使用导数的定义,我们知道:

这是(连续的)状态空间模型:

可以将状态空间模型代入第一个表达式中,得到以下结果:

在这里,是离散化后的模型参数。这使我们能够也为离散时间步长计算系统的输出y(t)。在实践中,我们不是选择离散化步长Δ,而是将其作为模型的参数,以便可以通过梯度下降法学习。通过这种方式,我们可以将连续时间的状态空间模型转换为离散时间模型,从而在数字系统中进行模拟和分析。现在得到了一个循环公式,它允许迭代地一步步计算系统的状态,前提是知道上一个时间步的状态。

公式 (1a) 和 (1b) 代表一个连续时间系统的状态方程和输出方程。

而公式 (2a) 和 (2b) 是这个系统的离散时间等价形式,其中代表离散化后的参数。这样我们也可以计算系统在离散时间步的输出y(t)。在Mamba论文中,与使用欧拉方法不同,采用了零阶保持(ZOH,Zero-Order Hold)规则来离散化系统。

第一阶段将"连续参数"(Δ,A,B)转化为"离散参数"()通过固定公式

其中一对()被称为离散化规则。可以使用各种规则,例如公式中定义的零阶保持(ZOH)。

注意:实际操作中,我们不会选择离散步长Δ,而是将其作为模型的一个参数,以便可以通过梯度下降法进行学习。下面推导连续系统的参数A和B如何通过零阶保持(ZOH)被转换为离散系统的参数,对于连续时间系统,有状态方程:

其中A是系统矩阵,B是输入矩阵,u(t)是输入信号,x(t)是状态向量。

目标是将这个连续时间系统离散化,以便在t = kΔ时,系统的状态可以用输入信号和先前状态来表示。在离散时间步长Δ内,状态变化可以通过以下方程近似:

其中是在时间步的状态,是在相同时间步的输入,而是我们需要找到的离散化参数。为了找到,考虑在时间步长Δ内系统的演变。

由于内是恒定的,可以将输入视为一个常数。因此,我们可以将状态方程

内积分得到:

由于是恒定的,可以将其从积分中提出来:

积分的第一部分可以简化为:

这里我们使用了变量替换

并且是A的矩阵指数函数。

对于第二部分,由于是常数,有:

现在,可以使用矩阵指数的性质

来找到

接下来,我们需要找到,已经有了:

由于

可以将表达为的函数

可以通过ΔA解出

但是,需要将来表示。由于,可以将重写为:

现在,可以解出:

由于,有:

因此,的最终表达式为:

这可以简化为:

相关推荐
买大橘子也用券2 小时前
26软件系统安全赛-Fake Emotion(复盘)
python·深度学习·安全·网络安全
AI人工智能+2 小时前
施工许可证智能识别系统通过融合计算机视觉与自然语言处理技术,实现了建筑行业关键证件的自动化信息提取
人工智能·深度学习·计算机视觉·ocr·施工许可证识别
春日见2 小时前
5分钟入门强化学习之蒙特卡洛(MC)算法与实现
运维·服务器·人工智能·深度学习·算法·机器学习
2401_8769641312 小时前
【湖北专升本】2026湖北专升本真题PDF+备考资料汇总
数据结构·人工智能·经验分享·深度学习·算法·计算机视觉
森诺Alyson17 小时前
前沿技术借鉴研讨-2026.5.28(眼动数据预测抑郁&自杀倾向)
论文阅读·人工智能·深度学习·分类·论文笔记
Dfreedom.17 小时前
深度学习量化技术全景解析:从校准算法到量化算子的完整指南
人工智能·深度学习·算法·量化·模型加速
AI街潜水的八角17 小时前
基于YOLO26电池顶盖焊接缺陷检测系统1:电池顶盖焊接缺陷检测数据集说明(含下载链接)
人工智能·深度学习·yolo·目标跟踪
jay神17 小时前
深度学习模型优化:P2PNet模型MAE下降17.30%
人工智能·python·深度学习·计算机视觉·毕业设计
生成论实验室18 小时前
算力时代结束,判断力时代开始
人工智能·深度学习·机器人·自动驾驶·gpu算力