Mamba模型学习笔记

Mamba模型(Mmaba1, 没有mamba2) 其中,h ( t ) h(t)h(t)是当前的状态量,A AA是状态转移矩阵;x ( t ) x(t)x(t)为输入的控制量,B BB表示控制量对状态量的影响。y ( t ) y(t)y(t)表示系统的输出,C CC表示当前状态量对输出影响,D DD表示当前控制量对输出影响。如:使用Q、K运算得到score的过程中,将Q每一行与K每一列进行运算,需要N^2次点积,每次点积包含d次乘法。,即在计算是引入一个额外的线性层,对输入的输入的控制量和状态量进行选择,加强模型对不同输入形式的适应能力。 阅读详情

笔记来源:bilibili

Transformer 的死穴

Transformer 结构的核心是自注意力机制层,无论是 encoder 还是 decoder,序列数据都先经过位置编码后喂给这个模块。

但是自注意力机制的计算范围仅限于窗口内,而无法直接处理窗口外的元素。因此,这种机制无法建模超出有限窗口的任何内容,看不到长序列的世界。

解决有办法:增加窗口的长度。但是,这样会导致计算复杂度随着窗口长度的增加而呈现平方增加 O ( n 2 ) O(n^2) O(n2),因为每个位置的计算都需要与窗口内的所有其他位置进行比较。

Transformer 的本质:通过位置编码,把序列数据空间化,然后通过计算空间相关度反向建模时序相关度。可以看到,这个过程忽视了内存结构的细腻关联关系,而是采取了一种一视同仁的暴力关联模式。比如,一个句子中存在一定的语法,同时,一个句子中也可能存在冗余的信息。所以,Transformer 存在不易训练的问题。

时序数据,却使用空间化的注意力机制,在当时是为了充分利用 GPU 的并行能力,但这不是万能的。让长序列数据建模回归传统,某种程序上说,这是整个 SSM 类模型思考问题的初衷和视角,而 Mamba 是其中的佼佼者。

时序状态空间模型 SSM

连续空间的时序建模

有很多实际的问题都可以用左图所示的连续空间模型来建模,比如控制理论或线性系统领域。一般将其称为 LTI(linear time-invariant,线性时不变)系统,用公式表示就是:

h ′ ( t ) = A h ( t ) + B x ( t ) h'(t) = Ah(t)+Bx(t) h′(t)=Ah(t)+Bx(t)
y ( t ) = C h ( t ) y(t)=Ch(t) y(t)=Ch(t)
输入为 x x x,隐藏层的变量为 h ( t ) h(t) h(t), y ( t ) y(t) y(t) 为输出。上面的叫状态方程,下面的叫观测方程。ABCD 为参数矩阵。

之所以叫时不变,是因为,ABCD 是固定的,这是一个强假设(transformer 没有这样的假设)。D 在上面的式子中没写主要是因为在许多实际系统中,它可以是零。通过牺牲通用性,换来特定场景下的更高的性能,是所有 SSM 模型的最底层逻辑。

时序离散化与 RNN

连续系统不方便计算机的处理,所以要对它进行离散化展开,就是沿时间拉长,模型和 RNN 长相上几乎一样(上图中,中图所示)。

公式也类似,只是导数改为不同时刻角标,形成递归过程。

h t = A ˉ h y − 1 + B ˉ x t h_t = \bar{A}h_{y-1}+\bar{B}x_t ht​=Aˉhy−1​+Bˉxt​
y t = C h t y_t = Ch_t yt​=Cht​
原文给出了一种从连续系统转换为系统的 ABC 参数对应关系。它其实只是一种方法的举例,叫"零阶保持(Zero-Order Hold, ZOH)"。只用知道使用了一个 delta 函数,经过一组运算,可以提到新的 A 和 B。

A ˉ = e x p ( Δ A ) , B ˉ = ( Δ A ) − 1 ( e x p ( Δ A ) − I ) ⋅ Δ B \bar{A} = exp(\Delta A),\bar{B}=(\Delta A)^{-1}(exp(\Delta A)-I) \cdot \Delta B Aˉ=exp(ΔA),Bˉ=(ΔA)−1(exp(ΔA)−I)⋅ΔB

从效果上看,就是从上面的连续的输入,变成了下面离散的输入。输出也是。

以上是零阶保持的效果图,变成阶跃式的了。

并行化处理与 CNN

SSM 的最大特点是可以通过卷积实现了计算上的并行化(上图中,右图所示)。

其核心的思想是使用 CNN 对时序数据建模,借助不同尺度的卷积核,从不同时间尺度上捕获时序特征。其公式表示为:
K ˉ = ( C B ˉ , C A B ˉ , . . . , C A ˉ k B ˉ , . . . ) \bar{K}=(C\bar{B}, C\bar{AB},...,C\bar{A}^k\bar{B},...) Kˉ=(CBˉ,CABˉ,...,CAˉkBˉ,...)
y = x ∗ K ˉ y=x*\bar{K} y=x∗Kˉ
其图示为:

第二个式子与前面的图完全对应,就是一个 CNN 实现。时序递归状态方程改用卷积操作实现了,ABC 参数矩阵变成了 K ,就是图中的卷积核。体现在效果上,借助不同卷积核捕捉局部时间序列特征,可以同时对短期和长期依赖关系学习,并行计算提高了训练和推理的效率,使得 SSMs 在处理复杂的时序数据时表现出色。

在实际的问题中,往往会对 ABC 矩阵进一步简化,假设成更简单的对角阵来计算,这就是结构化 SSM,也叫 S4 模型。

在某种程序上,可以将 SSM 看成是 CNN 化的 RNN。

由于 SSM 有两个强假设:线性+时不变。所以极大的限制了其使用范围,因为大部分的系统是非线性,时变系统。而 Mamba 本质上是一个 SSM 模型的改进版,放开了这两个约束。

Mamba:选择性 SSM

Mamba 主要体现在设计了一种机制,让状态空间具备选择性,达到了 Transformer 的建模能力,同时在序列长度上实现了线性扩展(克服了 Transformer 的缺陷),可处理最长达百万长度的序列,而且效率很高,准确率很好。

在时间序列模型中设计了一个类似于 LSTM 的门结构,实现了选择性。BC 都带了 t,变成了时变参数,A 虽然没有直接含 t,但是通过 Δ t \Delta _t Δt​ 也变成了时变的, Δ t \Delta _t Δt​ 就是前面的离散函数。下面的蓝色部分就是所谓的选择机制。

最简单的理解就是:一个总开关( Δ t \Delta _t Δt​)+若干个旋钮( B t , C t B_t,C_t Bt​,Ct​ )=非线性时变系统。

要解决的问题

从某种角度看,序列建模的核心就是研究如何将长序列的上下文信息压缩到一个较小的状态中。比如,语言模型实际上就是在一个有限的词汇集合中不断进行转换。Transformer 的注意力机制虽然有效,但是效率低,因为它要存储整个上下文,导致推理和训练的时间较长。而 SSM 递归模型的状态是有限的(单纯是时不变导致的),其效率高但是有效性受限于状态的压缩能力。

而 Mamba 就是平衡了有效性与效率的点。本文关注了两种能力:

一是抓重点的能力(选择性复制任务):从大量的信息中选择和记住关键的信息,忽略不相关的部分。类似于在一个文章中找到关键词:

二是上下文联想,推理能力(诱导头任务)。在处理连续的信息时,能保持逻辑一致性和上下文的连贯性。

具体的改进的方法:由于 B 是时不变的(强假设的 LTI 系统),所以这导致了难以有效的选择上下文信息:无论输入的 x 是啥,B 一直不变(B (网络)与 x 无关)。所以,改进的方法就是让它时变:

全局卷积虽然可以用不同的卷积核进行时序特征捕捉,但是缺乏内容感知:不知道输入的重点与逻辑。但是 transformer 没有这些限制:既不是时不变系统,也不是线性系统。所以改进的方法就是:将其改成时变系统,并且改成非线性系统。

增加选择性的方法

增加选择性的本质是将 B 和 C 由固定的变成了可变的,根据输入 x t x_t xt​ 和它的压缩投影学习可变参数。A 为了简化,其自身还是不变的。蓝色部分(包括投影和连线)(上图所示)就是所谓的选择机制。目的是根据输入内容选择性地记忆和处理信息,从而提高对复杂序列数据的适应能力。

由于 Δ t \Delta _t Δt​ 使用了 τ \tau τ 激活函数,所以是非线性的,而 Δ t \Delta _t Δt​ 对 B t B_t Bt​, A A A, C t C_t Ct​ 都有作用,所以整个系统都是非线性时变的。所以整个系统的两个条件都放开了。

右侧公式中,投影出来的三条划线其实就是 S B , S C , S Δ S_B,S_C,S_\Delta SB​,SC​,SΔ​ 三个选择函数,共享一个投影模块,主要是为了实现参数共享和计算效率。

而左侧就是原来的算法,可以看到:ABC 和 Δ \Delta Δ 都是固定的。

所以,Mamba 的本质上是拿 LSTM 的门控思想换票到了 SSM 模型上,放开了时不变的约束放成非线性系统。

参数:

  • B:批次大小。表示一次输入的数据量的大小
  • L:序列长度。表示每个序列中包含的时间步数
  • N:特征维度。表示每个时间步的特征数量
  • D:输入特征维度

其中,步长大小 delta 像是一个观察窗口,会影响信息处理的焦点。步长较小时,模型倾向于忽略具体的单词,而更多地依赖之前的上下文信息。

当 focus 较小时,只能看到几个词。所以,这个就可以理解为,delta 实现了注意力的选择。

上图代码中的几个选择函数:

  • S B ( x ) = L i n e a r N ( x ) , S C ( x ) = L i n e a r N ( x ) S_B(x)=Linear_N(x),S_C(x)=Linear_N(x) SB​(x)=LinearN​(x),SC​(x)=LinearN​(x) 都是线性投影,这是很常见的神经网络操作,用于将输入数据转换到一个新的空间或维度。Linear 为线性层。
  • S Δ ( x ) = B r o a d c a s t D ( L i n e a r 1 ( x ) ) S_\Delta(x)=Broadcast_D(Linear_1(x)) SΔ​(x)=BroadcastD​(Linear1​(x)),广播是一个数据操作,它使得维度较小的数组可以与维度较大的数据进行算术操作。
  • τ Δ = s o f t p l u s \tau_\Delta=softplus τΔ​=softplus,这是一个平滑的非线性函数,通常用于网络中以添加非线性特征并帮助网络学习复杂的模式。

经过这样的设计,希望达到的效果:

左侧为 LTI 系统,输出只能对规则的输入特征进行原样的复制,而右边的选择性系统则可以自己找重点了。同时,右侧也有联想的能力了。对于非线性时变数据,具备了很强的特征捕捉能力。

核心原理:液体力学与李指数映射

Transformer 描述的是粒子运动,通过自注意力机制映射动态调整每个输入的权重,类似粒子间通过牛顿力学相互作用力来动态调整自己的轨迹。训练的过程,就是在用牛顿力学拟合粒子轨迹。每个输入(粒子)独立计算与其他输入的关系。

而 Mamba 描述的是液体运动,通过李指数映射来建模时空结构。流体运动描述的是连续介质中的分子集体行为,运动是整体的,内部各点之间有强烈的相互关系和依赖。液体的每个部分都受到整体液体运动的影响,通过内部压力,粘性等因素相互作用。这更符合记忆的本质,因为记忆系统具有连续性,动态变化性和整体关联性,这些特性与液体的性质非常相似。液体模型可以更好地描述记忆中的信息如何相互关联,如何随着时间和新信息的出现进行动态调整和整合。

李指数映射是一种数学工具,用于描述和分析一个向量场如何沿着另一个向量场发生变化,比如液体力学,电磁场,广义相对论的时空结构等,解决了动态系统中相互作用的描述。它是和微分任何中重要的概念,来源于李群和李代数的理论。

如果把记忆的流淌比作一个水流管道系统,可以看做一个李群,进行各种复杂变换(旋转,推移等)。固定矩阵 A 就是主管道(全局演变路径),类似于液体运动的全局关系,让系统状态更新有固定的全局路径和规则,因此可以表现出更高的灵活性和适应性。而 B t B_t Bt​ 和 C t C_t Ct​ 就是阀门或旋钮,delta 这个离散化因子,就像是液体力学中的时间步长,决定液体运动的离散时间点。选择机制就像是根据具体情况选择和调整旋钮,控制流体在管道中的流动路径。

训练 Mamba 的过程就是李指数映射假使流体力学动态系统,找到主管道 A,调整阀门和旋钮 B t , C t , Δ t B_t,C_t,\Delta t Bt​,Ct​,Δt 获得最优流体流动路径,让模型可以在高维特征空间中进行高效导航和决策。

Transformer 的自注意力机制粒子运动强调个体的独立性和动态调整,灵活性高,能动态调整权重,捕捉复杂的上下文依赖关系,但计算复杂度高,资源消耗大。Mamba 流体运动强调整体的连续性和全局关系,借用独特的矩阵 A 的固定性,提供了稳定性和确定性,通过李指数映射实现高效状态更新和决策。

关于Mamba和Mamba-2经典论文的学习笔记总结,以及Mamba和Transformer的对比总结,欢迎交流 分享一下Mamba的经典论文学习笔记,以及Mamba-2的提出,简单的对Mamba和Transformer的异同进行了归纳,本此分享从第一部分Mamba的提出背景和结构原理,第二部分Mamba与Transformer的异同,第三部分mamba-2的提出背景和结构原理,第四部分我的个人学习心得,这四个方面进行总结,欢迎交流 阅读详情

相关推荐

视觉Mamba综述——Visual Mamba: A Survey and New Outlooks论文总结

本文对视觉Mamba方法进行了全面的综述。我们首先对Mamba架构进行深入的概述,然后对具有代表性的可视化Mamba骨干网及其广泛的应用进行详细的研究。这些应用按照不同的模态进行了系统的分类,包括图像、视频、点云和多模态数据。最后,我们分析了可视化Mamba面临的挑战,并描绘了未来的发展方向,提供了有价值的展望,可能会影响这个动态演化领域的持续和未来发展。

m0_60273616的博客 8805

Mamba模型底层技术详解,与Transformer到底有何不同?

Mamba模型在CV等领域的扩展应用,在未来可能会井喷式出现。

soaring_casia的专栏 1万+

SSM与Mamba模型学习

是一种基于RRN的用于描述系统状态随时间变化的数学模型,由状态方程和观测方程组成。连续空间的时序建模状态方程通常是一个一阶或高阶的线性或非线性微分方程,描述系统状态如何随时间演化。观测方程通常是一个线性或非线性方程,表示观测数据与系统状态之间的关系,描述如何从系统状态中获得观测数据。ABC是固定的,所以叫时不变。SSM思路是从LTI线性时不变系统到线性最后到非线性,牺牲通用性,换得特定场景的高性能。时序离散化与GNN。

lsh2678227571的博客 3002

挑战Transformer的新架构Mamba解析以及Pytorch复现

我们介绍了Mamba的概念和架构,并且从头开始构建Mamba复现,这样可以将理论转化为实践。通过这种动手的方法,可以看到Mamba序列建模方法和效率。如果你想直接使用,可以看论文提供的代码。

deephub 1万+

Mamba2模型的实现

(形状为(batch, seqlen, d_model)),通过一个线性层(nn.Linear),该层将输入映射到一个更高维的空间,以便模型能够捕捉到更丰富的特征。部分通过一个一维卷积层,该层用于捕捉序列中的局部依赖关系。这里简单地完成了注意力计算,即对输入的序列内容进行注意力建模,而mask的存在可以使得模型在计算时只关注前面步骤中的Token而不会“窥视”未来的内容。Mamba2模型通过结合SSD的高效计算、一维卷积的局部特征提取能力以及残差连接和归一化的稳定性,实现了对序列数据的快速而准确的处理。

夏天又到了的专栏 1860

Vision Mamba代码笔记

事实上Vision Mamba重写了这个Mamba类,可以看到里边是由bimamba_type这个参数的(这其实也是Vision Mamba的主要贡献),执行如下代码。值得说明的一点是,如果你之前在跑其他的mamba,环境拿过来是不能直接直接用的,因为标准的Mamba类是没有bimamba_type这个参数的,所以,需要去Vim代码官网去找到mamba-1p1p1包,下载之后放自己项目里。按照官方readme.md配置,如果有问题照着下面这个链接改。我手敲的带中文注释的链接。

Zssss12的博客 1万+

机器学习17-Mamba

偏置参数,调整状态的初始值;通过这些改进,Mamba 能够根据输入内容,比如文本中的关键词、语音中的重音,来动态调整状态更新的 “敏感度”:对于重要的信息,会增强记忆,让记忆衰减得慢一些;之前,Transformer 凭借强大的注意力机制成为序列建模的主流架构,但它有两个明显的缺点:一是注意力机制的计算复杂度会随着序列长度的平方增长,在长序列任务中效率很低;标准的状态空间模型中,那些关键矩阵参数是固定的,不能根据输入内容动态调整状态更新策略,这在处理像自然语言这样的复杂序列时,会限制模型的建模能力。

2301_81230251的博客 729

一份关于 Mamba 和状态空间模型的可视化指南

状态空间包含完全描述一个系统的最少数量的变量。它是一种通过定义系统的可能状态来数学表示问题的方式。让我们简化一下。想象一下我们在迷宫中导航。"状态空间"是所有可能位置(状态)的地图。每个点代表迷宫中的一个唯一位置,具有特定的细节,比如离出口有多远。"状态空间表示"是对这张地图的简化描述。它显示你的当前位置(当前状态),你可以下一步去哪里(可能的未来状态),以及如何到达下一个状态(向右或向左移动)。

数智笔记 4656

Mamba 基础讲解【SSM,LSSL,S4,S5,Mamba】

🐍 Mamba是一种状态空间模型(SSM)架构,它改进了S4架构。选择性扫描算法(selective scan algorithm),允许模型过滤相关或者不相关的信息硬件感知的算法(hardware-aware algorithm),允许通过并行扫描(parallel scan)、核融合(kernel fusion)和重计算(recomputation)有效地存储(中间)结果。

zyw2002的博客 6万+

从图像处理到AI:手把手教你用Halcon DL Tool完成第一个缺陷检测项目

本文详细介绍了如何使用Halcon深度学习工具(DL Tool)完成金属表面缺陷检测项目。从环境准备、数据采集标注到模型训练与部署,手把手指导工程师快速构建AI质检系统,显著提升工业缺陷检测效率。特别针对金属反光等难点问题提供实用解决方案。

weixin_42531886的博客 290

PoE 的三大国际标准:PoE、PoE+、PoE++

很多人知道 PoE 能“一根网线,既供电又传数据”,但鲜少有人能说清楚:PoE 供电到底分几种标准?差别有多大?哪些设备要用 PoE,哪些必须上 PoE+ 或 PoE++?今天,我们就来一次彻底的“拆解”,把 PoE 的三大国际标准——讲得明明白白,顺便也帮你厘清网络工程中的常见“供电疑惑”。

网络技术联盟站 1551

Mamba学习笔记2:Mamba模型

所有 Mamba 模型,本质都是:在不同任务上,如何设计“扫描顺序 + 状态更新方式 + 融合结构”。

xiaofeixia002X的博客 879

S32K1XX Autosar开发实战|全网独家复现EB MCAL Port/Dio配置、详解引脚分层原理、实现经典跑马灯助力车载IO电控落地

在NXP S32K1XX系列车规MCU的AUTOSAR标准开发体系中,MCAL(微控制器抽象层)是软硬件解耦的核心载体,而Port端口模块与Dio数字IO模块是MCAL最基础、最核心的入门模块,也是车载指示灯、按键检测、继电器驱动、外设硬件启停控制的底层支撑。区别于传统裸机直接操作寄存器的开发方式,AUTOSAR架构采用分层隔离设计,Port负责硬件静态初始化、Dio负责动态电平操控,严格遵循车规级开发规范,杜绝硬件资源冲突、引脚配置混乱等问题。

getusushu的博客 44

《Mamba-ST:面向高效风格迁移的状态空间模型》学习笔记

风格迁移的目标是:给定内容图像与风格源图像,生成一张保留原内容但具有风格源艺术表现的新图像。当前主流架构多采用Transformer或扩散模型,但存在高计算负担问题。具体而言,Transformer的自注意力与跨注意力层内存占用大,扩散模型推理时间长。为克服这些问题,本文提出一种基于新兴状态空间模型(SSM)的创新架构——Mamba-ST。我们改造Mamba的线性方程以模拟跨注意力层的行为(将两个独立嵌入合并为单一输出),同时大幅降低内存占用与时间复杂度。

学无止境。 1552

Buildroot RK3568系统中更改GPU驱动为:panfrost

1:Kernel中开启Panfrost 2:更新mesa 到mesa-24.0.2 3:查看/proc/interrupts 中的panfrost 中断 4:LInux启动日志 5:查看GPU负载

OpenWrt/WLAN/驱动/Android/嵌入式开发总结 2080

手把手教你学PCIE(5.1)--pcie固件初始化的硬件初始化

PCIe 固件初始化的硬件初始化是一个复杂但至关重要的过程。通过正确配置 PCIe 控制器和相关硬件,可以确保系统的稳定性和性能。以上步骤和示例代码提供了一个基本的框架,实际开发中可能需要根据具体的硬件和需求进行调整和优化。

MHD0815的博客 1689

Mamba-ST 代码复现

MambaST 代码复现

学无止境。 595

10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地

小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1730

【论文阅读笔记】Mamba模型代码理解

Mamba模型代码实现及理解

寸先生的AI道路 3万+

【Frida Android】实战篇4:SSL Pinning 证书绑定绕过 Hook 教程(一)

在前两章中,我们学习了中间人抓包与 Hook 抓包的基础方法,这些方法在理想环境下能够有效获取网络请求数据。但在实际的企业级应用中,出于安全防护需求,很多 APP 会启用证书绑定(SSL Pinning)机制。这种机制会让客户端对服务器证书的校验更为严格,导致常规的抓包方法(即使将 BurpSuite/Charles 证书安装到系统信任区)也无法生效。因此,从本章开始,我们将系统学习 SSL Pinning 机制的绕过技术。SSL Pinning(证书绑定)是客户端校验服务器身份的进阶安全机制。

水滴石穿 1612

实现画布拖拽算子排布,通过flink实现算子编排计算,如何实现?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1072

【模型架构】学习最火热的Mamba、Vision Mamba、MambaOut模型

状态空间模型(State Space Model, SSM)是一种用于描述动态系统的数学模型,特别适用于时间序列分析和控制系统设计。它将系统的状态表示为一个状态向量,并通过状态方程和观测方程描述系统的动态行为和观测过程。因此,SSM是可以用于描述这些状态表示并根据某些输入预测其下一个状态可能是什么的模型,这就符合了作为深度学习模型基础架构的条件。SSM的计算示意图具体来说,可以用下面的公式描述上述过程:状态变量:描述系统当前状态的变量。状态变量通常是一个向量,包含系统当前时刻的所有信息。

cjy_colorful0806的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

图文并茂【Mamba模型】详解

Maarten Grootendorst大佬写了《A Visual Guide to Mamba and State Space Models》,以比较生动形象的图表和语言概括了Mamba的工作,介绍了为什么要提出Mamba、SSM是什么?如何从SSM到S4?如何从S4到Mamba?因此,本文以这篇blog为基础路径,用通俗易懂的语言详细介绍Mamba的来龙去脉,让初学者也能轻松读懂Mamba。状态空间是一组能够完整捕捉系统行为的最少变量集合。它是一种数学建模方法,通过定义系统的所有可能状态来表述问题。

薛定谔的猫的博客 5万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Mamba复现与代码解读

下图是Mamba论文中的算法介绍:上图中算法的核心是第5步和第6步:第5步是对连续的矩阵A,B进行离散化得到离散化后的矩阵。

zyw2002的博客 4万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

一文速览mamba的各种变体与改进:从MoE-Mamba、Vision Mamba、VMamba、Jamba到Falcon Mamba

其实早在今年4月,我便在微博上说道:本月已经攒了好多篇博客待写,十之八九为项目需要,十之一二为课程需要今年快结束了,截止目前为止,前三篇都已写了,至于MOE模型也写了deepseek,但mamba的几个重要变体一直没来得及写,原因就太多了,比如直到近期,具身机器人发文的速度稍稍慢下来了(注意,只是稍稍),便有时间写一下之前计划已久的大模型相关的文章,包括本文要写的各种mamba变体或改进毕竟本文之前的mamba解读确实影响力大,加之基于mamba的变体或改进又层出不穷,故本文来了。

结构之法 算法之道 1万+

什么是 Mamba 模型?

Mamba 作为状态空间模型 (SSM) 衍生的神经网络架构,适用于语言建模及其他序列建模任务。Mamba 架构凭借极速推理效能与计算效率(尤其长序列场景),成为自回归 LLM 领域首个可匹敌 Transformer 的替代架构。

Diablo20022003的博客 6357
上一篇: 论文阅读:A Spatiotemporal Multiscale Deep Learning Model for Subseasonal Prediction of Arctic Sea Ice
下一篇: xLSTM模型学习笔记
ghost_him
博客等级 码龄6年 598粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值