Mamba模型学习笔记

news2024/9/21 20:22:32

笔记来源: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ˉhy1+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=xKˉ
其图示为:

第二个式子与前面的图完全对应,就是一个 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 的固定性,提供了稳定性和确定性,通过李指数映射实现高效状态更新和决策。

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

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

相关文章

支持iPhone 16新品预售,饿了么同步上线专人配送等特色服务

9月10日凌晨,2024年 Apple 秋季新品发布会上正式揭晓iPhone 16新机。9月10日一早,饿了么同步宣布:今年将携手近4000家Apple 授权专营店,支持iPhone 16新品预售及现货的同步开售。新机现货首发当日,饿了么消费者最快半小…

Mysql | 知识 | 事务隔离级别

转账案例缘起 我的钱包,共有 100 元。 今天我心情好,我决定给你的转账99元,最后的结果肯定是我的余额变为 1元,你的余额多了99元。 转账这一动作在程序里会涉及到一系列的操作,假设我向你转账 99元 的过程是有下面这…

哪些原因导致ERP成功率这么低?

哪些原因导致ERP成功率这么低? 有一句名言是“幸福的家庭都是相似的,不幸的家庭却各有各的不幸。”,这句名言应用到企业数字化的实施落地中也是适用的,数字化成功实施的企业也都是相似的,数字化实施失败的企业却有各种…

安卓玩机工具-----适合安卓机型的“搞机工具箱” 功能齐全 玩机推荐

搞机工具箱最新版是一款相当出色的电脑端手机工具箱软件,搞机工具箱正式版功能强劲,可以帮助用户不需要root就能够直接对手机进行调节,方便对手机进行更加全面的掌控,搞机工具箱便捷好用,只需要根据文字提示及自己的需…

开源的 Windows 12 网页体验版!精美的 UI 设计、丰富流畅的动画

大家周二好呀!博主今天给小伙伴们分享一款炫酷的 Windows 12 体验版,网页效果拉满,非常值得我们去尝试! 如果你对未来的Windows操作系统充满期待,那么这款开源的Windows 12 网页体验版绝对不容错过!这不仅…

如何编辑pdf文件?金舟PDF编辑器解决PDF编辑、转换问题!

如何编辑pdf文件?pdf是电脑上便携的文档格式之一,不管是阅读,还是打印,都不会出现排版错乱的问题,并且在任意系统上都能“正常”展示,不受影响。这也是pdf文件运用较为广泛的原因之一。 不少用户在接触到pd…

【数据结构与算法 | 灵神题单 | 前后指针(链表)篇】力扣19, 61,1721

1. 力扣19:删除链表的倒数第N个节点 1.1 题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: …

cache miss问题C++示例

原题是&#xff1a; const int LEN 64*1024*1024; int *arr new int[LEN]; for (int i 0; i < LEN; i 2) arr[i] * i; // 循环1 for (int i 0; i < LEN; i 8) arr[i] * i; // 循环2第二个循环比第一个循环少了四倍的计算量&#xff0c;理论上应该要快4倍&#xff…

深度解析RAG:你必须要了解的RAG优化方法

RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种结合检索和生成能力的技术框架&#xff0c;旨在通过从外部知识库中检索相关信息来增强生成模型的输出。其基本思想是利用大型语言模型&#xff08;LLM&#xff09;的生成能力&#xff0c;同时通过检索机制获取…

OpenStack × OceanBase: 打造高可用可扩展的基础设施平台

OceanBase 社区资深总监封仲淹在9月3日参加 OpenInfra 亚洲峰会中&#xff0c;分享了OceanBase与OpenStack的联合解决方案。本文将介绍这一联合方案的技术亮点及其为用户带来的独特价值。 OpenStack长期以来一直是云计算领域的先行者&#xff0c;通过提供强大的开源平台&#x…

西门子博途零基础学PLC必会的100个指令

#西门子##PLC##自动化##工业自动化##编程##电工##西门子PLC##工业##制造业##数字化##电气##工程师# 工控人加入PLC工业自动化精英社群 工控人加入PLC工业自动化精英社群

MATLAB求解0-1线性规划问题的详细分析

引言 0-1线性规划是整数规划中的一种特殊形式&#xff0c;它广泛应用于资源分配、工厂选址、投资组合优化、物流运输等多个领域。0-1线性规划的特点是&#xff0c;决策变量只能取0或1的离散值&#xff0c;通常用于描述“是-否”决策问题。随着计算机技术的发展&#xff0c;数学…

红日靶机(一) 笔记

红日靶机(一)笔记 概述 域渗透靶机&#xff0c;可以练习对域渗透的一些知识&#xff0c;主要还是要熟悉 powershell 语法&#xff0c;powershell 往往比 cmd 的命令行更加强大&#xff0c;而很多渗透开源的脚本都是 powershell 的。例如 NiShang&#xff0c;PowerView 等等。…

料品档案没有配置主供应商信息

这个问题经常会出现在普通用户的面前。没有合适的工程人员去打理料品档案。信息是缺漏的。用友给出来的提示&#xff0c;也让人摸不着头脑。只能是记下来备用吧。

Ai+若依(集成easyexcel实现excel表格增强)

EasyExcel 介绍 官方地址:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一…

Web3 项目安全手册

现如今针对 Web3 项目的攻击手法层出不穷&#xff0c;且项目之间的交互也越发复杂&#xff0c;在各个项目之间的交互经常会引入新的安全问题&#xff0c;而大部分 Web3 项目研发团队普遍缺少的一线的安全攻防经验&#xff0c;并且在进行 Web3 项目研发的时候&#xff0c;重点关…

JavaWeb中处理 Web 请求的方式总结

文章目录 JavaWeb中处理 Web 请求的方式总结1. 原始的 Servlet 方式1.1. 环境搭建**创建 Maven 或 Gradle 项目**&#xff1a;**添加 Servlet 依赖**&#xff1a;**创建 Servlet 类**&#xff1a;**配置项目**&#xff1a;**配置 Tomcat**&#xff1a; 1.2. 路由机制1.3. 示例代…

[产品管理-4]:NPDP新产品开发 - 2 - 制定企业经营战略目标的结构化方法与工具

目录 一、SWOT分析工具 1、SWOT分析工具概述 2、SWOT分析与企业战略目标制定的关系 3、SWOT分析在企业战略目标制定中的应用实例 4、SWOT分析的改进与应用建议 二、P E S T L E 分 析&#xff1a;外部环境分析 2.1 概述 1. 政治因素&#xff08;Political&#xff09; …

2024第三届大学生算法大赛 真题训练3 解题报告 | 珂学家

前言 题解 C. 洞穴探险 题目描述&#xff1a; 简单来说&#xff0c;就是 在一个无向图中&#xff0c;两个点之间关系 (存在多条简单路径&#xff0c;一条简单路径&#xff0c;不联通&#xff09;, 请判断两点之间的关系。 思路: 并查集 tarjan割边 对于通联和非联通&#x…

Java学习Day41:手刃青背龙!(spring框架之事务)

1.spring事务概念 在数据层和业务层保证一系列数据库操作原子性成功失败&#xff01;&#xff08;相比事务可以在业务层开启&#xff09; 1.事务定义&#xff1a;关键字&#xff1a;Transactional&#xff08;一般写在接口上&#xff09; 2.事务管理器&#xff1a;在JdbcCon…