图解Mamba——从流体力学的角度理解Mamba

1.Transformer的问题

image.png
上面是Transformer的网络结构。对于一句话的每个单词,都需要跟所有单词算注意力机制。因此注意力机制的计算复杂度为 O ( n 2 ) O(n^2) O(n2),其中 n n n为句子的长度,即单词(符号)的个数。如下图所示。
image.png
所以这也是现在大模型如此吃数据和算力、耗电费的根本原因。
然而,这个过程忽视了数据内在结构的关联关系,而是采取一种一视同仁的暴力模式。比如上面的图,整个句子"The animal didn’t cross the street because it was too tired",很明显,我们把目光注重到"animal",“street"和"tired"这些名词和形容词就大概了解到整个句子的意思,而对应一些介词"the”,副词"too"其实可以"一眼划过"。

2.State Space Model(线性的时不变系统)

2.1.State Space Model网络结构

image.png
SSM(State Space Model)对应公式表述如下:
image.png
h ′ ( t ) h'(t) h(t)其实就为下一个 h ( t ) h(t) h(t)的意思,即 h ′ ( t ) = A h ( t ) + B x ( t ) h'(t)=Ah(t)+Bx(t) h(t)=Ah(t)+Bx(t)也可以表述为 h i ( t ) = A h i − 1 ( t ) + B x ( t ) h_i(t)=Ah_{i-1}(t)+Bx(t) hi(t)=Ahi1(t)+Bx(t) y ( t ) y(t) y(t)加上 D x ( t ) Dx(t) Dx(t)就类似残差。
我们称之为时不变系统,是因为 A B C D ABCD ABCD是不变的,即与 A B C D ABCD ABCD时间无关。这是一种假设,而且是一种强假设

2.2.连续系统离散化

原文State Space Model作者通过"零阶保持(Zero-Order Hold,ZOH)"给出一种从连续系统转换为离散系统的ABC参数对应关系。
image.png
对应连续的输入信号后,仅根据固定的输入时间步长 Δ \Delta Δ对其进行采样
A ‾ = e x p ( Δ A ) , B ‾ = ( Δ A ) − 1 ( e x p ( Δ A ) − I ) ⋅ Δ B \overline A=exp(\Delta A),\overline B=(\Delta A)^{-1}(exp(\Delta A)-I)\cdot \Delta B A=exp(ΔA),B=(ΔA)1(exp(ΔA)I)ΔB

2.3.通过卷积实现SSM并行化

image.png
将SSM展开,得到中间图,类似于RNN的感觉。之后,我们可以通过不同的卷积核来模拟同时处理多个输入。
image.png
如图所示,通过三种不同的卷积核(图中三种不同颜色的虚线框)进行并行计算,一次输出 y k − 1 , y k , y k + 1 y_{k-1},y_k,y_{k+1} yk1,yk,yk+1

3.Mamba——有选择性的SSM

image.png
核心思想就是将SSM的时不变性改为时变性,可以看到这里的 B , C B,C B,C都改成 B t , C t B_t,C_t Bt,Ct,直接或者间接地受 Δ t \Delta _t Δt控制, Δ t \Delta _t Δt起一个类似总开关的作用。
换句话说,就是让 B B B C C C由固定的变成了可变的,根据输入的 x t x_t xt和它的压缩投影学习可变参数。A为了简化保持不变,蓝色部分(投影及其连线)就是所谓的选择机制。目的是根据输入内容有选择性地记忆和处理信息,从而提高对复杂数据的适应能力。这个思想就类似增加了开关的LSTM。
输入特征维度
对于传统的SSM模型,参数矩阵是静止的。
image.png
Mamba对 B , C B,C B,C进行了调整
image.png
其中步长 Δ t \Delta _t Δt像是观察窗口。步长较小时,模型倾向于忽略具体的单词,更多地依赖于之前的上下文信息。通过忽大忽小的步长 Δ t \Delta _t Δt实现注意力机制选择。
注意力机制希望达到的效果
image.png
左边是LTI 的效果,输出只能对规则的输入特征进行发现,而右边上面能自己找重点了,带色的尽管开始间隔大小不一,但都能找出来排好队。右下是Mamba希望选择注意力机制达到的能力体现,再看到黑的后就想到以前,后面应该跟着蓝色的。也就是说,对于非线性时变数据,具备了很强的特征捕捉能力
将大多数SSM架构比如H3的基础块,与现代神经网络比如transformer中普遍存在的门控MLP相结合,组成新的Mamba块。
image.png

4.从流体力学的角度理解Mamba

本小节从流体力学与李指数映射的角度来理解Mamba,该观点来源于b站up主梗直哥丶(见参考资料1)。
Transformer描述的是粒子运动通过自注意力机制映射动态调整每个输入的权重,牛顿力学互作用力来动态调整自己的动沙似粒子间,通过这训练的过程,就是在用牛顿力学拟合入(粒子)独立计算与其他输入的关系。
而Mamba描述的是流体运动。通过李指数映射来建模时空结构。流体运动描述的是连续介质中的分子集体行为,运动是整体的,内部各点之间有强烈的相互关系和依赖。流体的每个部分都受到整体流体运动的影响,通过内部压力、粘性等因素相互作用。这更符合记忆的本质,因为记忆系统具有连续性、动态变化性和整体关联性,这些特性与流体的性质非常相似。流体模型能够更好地描述记忆中的信息如何相互关联、如何随着时间和新信息的出现进行动态调整和整合。
李指数映射(Lie exponential map)是一种数学工具,用于描述和分析一个向量场如何沿着另一个向量场发生变化,比如流体力学、电磁场、广义相对论的时空结构等,解决了动态系统中相互作用的描述。它是群论和微分几何中重要的概念,来源于李群和李代数的理论,是挪威数学家索菲斯李引入的。
Mamba结构图中, h t − 1 h_{t-1} ht1更新到 h t h_t ht,就类似与人类大脑memory的更新,而是 x t x_t xt就像我们每一次的输入, y t y_t yt就像我们每一次经过大脑后的输出
如果把记忆的流淌比作一个水流管道系统,可以看做一个“李群”,进行各种复杂变换(比如旋转、推移等)。固定矩阵 A就是主管道(全局演变路径),类似于流体运动的全局关系,让系统状态更新有固定的全局路径和规则,因此能表现出更高的灵活性和适应性。 B t , C t B_t,C_t Bt,Ct就是阀门或旋钮, Δ t \Delta _t Δt这个离散化因子,就像是流体力学中的时间步长,决应扩休运动的离散时间点。选择机制就像是根据具体情况选择和调整旋钮,控制流体在管道中的流动路径。
训练 mamba 的过程就是用李指数映射拟合流体力学动态系统,找到主管道 A A A,调整阀门和旋钮 B t , C t , Δ t B_t,C_t,\Delta _t Bt,Ct,Δt,获得最优流体流动路径,让模型能在高维特征空间中进行高效导航和决策。
总的来说,跟Transformer的自注意力机制相比,Transformer的自注意力机制更强调个体的独立性,能够捕捉长长距离的上下文依赖关系。而Mamba更强调整体性与全局关系,利用李指数映射实现状态更新与决策。因此,有人认为Mamba在NLP领域是不可能成功的。在NLP领域里边的这种文本的建模非常重要的一点就是长距离依赖的一个建模。Mamba在超过1000token一的这个长度下,它的建模就做不好了。而大模型最有珍贵价值的一点就在于它的这样的一个长距离的一个建模。但是Mamba在CV领域是有很大用处的。Mamba在这个stable diffusion上就是会有很大的用,因为stable diffusion上面的这个我们尤其是在做这个video建模的时候,我们在做这个视频建模的时候,我们可能非常需要建模的就是帧和帧之间的这个连贯性

参考资料

1.AI大讲堂:革了Transformer的小命?专业拆解【Mamba模型】_哔哩哔哩_bilibili
2.一文通透想颠覆Transformer的Mamba:从SSM、HiPPO、S4到Mamba_mamba模型-CSDN博客
3.《大规模语言模型从理论到实践》张奇 桂韬 郑锐 ⻩萱菁 著
4.Mamba: Linear-Time Sequence Modeling with Selective State Spaces,https://arxiv.org/pdf/2312.00752

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Latex | 数学公式

Latex 最近在学习使用 LaTeX 来敲公式,写材料。说实话,这个工具在写公式方面,确实堪称神器!不只是我,连爱因斯坦要是看到它,估计都会点个赞。 在这里,我也得给大家分享一个宝藏网址&#xff1…

打工人必看!AI+PS插件轻松搞定电商产品图!保姆教程来啦!

大家好哇!我是你们的AIGC测评博主米兔! 在当今电商蓬勃发展的时代,一张高质量、具有吸引力的产品图能够迅速吸引消费者的目光,提升购买欲望。今天,我们就来探讨一下如何利用AI结合PS插件制作电商产品图,让…

斜率优化详解

斜率优化 [HNOI2008] 玩具装箱 状态转移方程: f i m i n ( f i , f j ( s u m i i − s u m j − j − L ) 2 ) i > j f_imin(f_i,f_j(sum_ii-sum_j-j-L)^2){i>j} fi​min(fi​,fj​(sumi​i−sumj​−j−L)2)i>j 设A为 s u m i i sum_ii sumi​i&…

计算机二级Access选择题考点

在Access中,若要使用一个字段保存多个图像、图表、文档等文件,应该设置的数据类型是附件。在“销售表"中有字段:单价、数量、折扣和金额。其中,金额单价x数量x折扣,在建表时应将字段"金额"的数据类型定义为计算。若…

C语言调用so/dll动态库

文章目录 windows系统linux系统windows 与 linux下 C 调用动态库的差异 C语言调用动态链接库 windows系统 windows系统下&#xff0c;C语言调用win下的动态库dll&#xff0c;使用头文件<windows.h>。 准备基础C代码 lauf.c #include <stdio.h>// 定义函数&#x…

一键把家里孩子的涂鸦变为动画

最近&#xff0c;发现一款可以让涂鸦变成动画的工具&#xff08;Animated Drawings&#xff09;。 家里有孩子喜欢涂鸦的有福了&#xff0c;这是一个新的增加亲子互动的工具&#xff0c;可以让你孩子的涂鸦变成动画&#xff0c;动起来。 生成动画的过程非常简单&#xff0c;只…

Python解析Word文档的自动编号

关于自动编号的知识可以参考《在 Open XML WordprocessingML 中使用编号列表》 链接&#xff1a;https://learn.microsoft.com/zh-cn/previous-versions/office/ee922775(voffice.14) python-docx库并不能直接解析出Word文档的自动编号&#xff0c;因为原理较为复杂&#xff…

Macbook M芯片Maven的安装与配置

Macbook M芯片Maven的安装与配置 下载 搜索Maven 进入网站 https://maven.apache.org/download.cgi 点击Download 点击如下链接进行下载&#xff1b; 将下载好的文件放到你的指定位置 双击进行解压 配置环境变量 进入终端 在终端中输入 open ~/.bash_profile输入以下内…

CCNA 0基础入门

OSI & TCP/IP OSI参考模型 TCP/IP协议 应用层 ------↓表示层 ------>应用层会话层 ------↑传输层 ------>传输层网络层 ------>网络互联层链路层 ------>网络接口层物理层 ------>↑ 物理层 传输的信号以及网线以及接线 主要作用是产生并检测电…

16 DTLS协议

加密解密基本概念 什么是非对称加密 什么是公钥 这个就是谁都能获得的钥匙什么是私钥 只有一个人能获得 非对称加密就是公钥上的锁&#xff0c;私钥才能打开&#xff0c;私钥上的锁公钥才能打开。比如说就是地下党接头的时候&#xff0c;把一个信息放在盒子里&#xff0c;然…

pikachu靶场上的暴力破解

目录 一、暴力破解 基于表单的暴力破解 验证码绕过(on server) ​编辑 验证码绕过(on client) ​编辑 token防爆破? 二、暴力破解的相关知识点 (1)Burte Force&#xff08;暴力破解&#xff09;概述 (2)验证码的绕过原理 【验证码机制原理】 【客户端可能存在的安全…

智能型程控直流电子负载的介绍

智能型程控直流电子负载是一种高精度、高稳定性的电子设备&#xff0c;主要用于模拟各种实际负载情况&#xff0c;对电源设备进行测试和调试。它能够精确控制电流、电压、功率等参数&#xff0c;以满足不同应用场景的需求。 智能型程控直流电子负载的主要特点有以下几点&#x…

连接查询-外连接(FULL JOIN)、内连接(JOIN)、自身连接

一、表与表之间存在着某种联系&#xff0c;如果一个查询必须在多个表之间完成&#xff0c;则需要用到连接查询 二、连接查询的SQL查询语句 格式&#xff1a; SELECT A1&#xff0c;A2&#xff0c;...&#xff0c;Am FROM R1&#xff0c;R2&#xff0c;..&#xff0c;Rn WH…

推荐这3个APP,帮助你成长

扇贝阅读 当年考英语四级&#xff0c;扇贝阅读帮了很大的帮&#xff0c;这个应用我推荐给了好多同学使用&#xff0c;大家一致反馈不错。 提供很多原版的英文原著供学习&#xff0c;还自带翻译功能&#xff0c;并且提供单词本&#xff0c;遇到不懂的单词可以纪录到单词本中&am…

车载网络安全指南 网络安全框架(二)

返回总目录->返回总目录<- 目录 一、概述 二、网络安全组织管理 三、网络安全活动 四、支撑保障 一、概述 汽车电子系统网络安全活动框架包含汽车电子系统网络安全活动、组织管理以及支持保障。其中,网络安全管理活动是框架的核心,主要指汽车电子系统生命周期各阶段…

Day 14:2938. 区分黑球和白球

Leetcode 2938. 区分黑球和白球 桌子上有 n 个球&#xff0c;每个球的颜色不是黑色&#xff0c;就是白色。 给你一个长度为 n 、下标从 0 开始的二进制字符串 s&#xff0c;其中 1 和 0 分别代表黑色和白色的球。 在每一步中&#xff0c;你可以选择两个相邻的球并交换它们。 返…

E10:流程明细表表单字段值变化触发事件

效果– //window.WeFormSDK.showMessage("这是一个E10的提示", 3, 2);// 获取表单实例const weFormSdk window.WeFormSDK.getWeFormInstance();// 获取主表字段fieldIdconst bt weFormSdk.convertFieldNameToId("bt");const lcbh weFormSdk.convertFi…

第五讲:51单片机+RA8889驱动控制彩屏 完整源码说明 【 源码v1.2 】

51单片机驱动控制彩屏系列讲座 第一讲&#xff1a;单片机STC89C52RA8889驱动控制彩屏【 源码v1.0 】 第二讲&#xff1a;单片机STC89C52RA8889驱动控制彩屏 代码移植介绍 第三讲&#xff1a;单片机STC89C52RA8889驱动控制彩屏 代码的压缩&#xff08;Keil编译器&#xff09; 第…

C++ 中的负无穷大赋值

1&#xff0c;代码先行 示例&#xff1a; #include<iostream> #include<limits>using namespace std;int main() {float inf_pos numeric_limits<float>::infinity();float inf_neg -1*inf_pos;cout << "inf_pos " << inf_pos &l…

揭秘:消费1000,竟能领回2000?每天还有额外收入?

大家好&#xff0c;我是吴军&#xff0c;今天将为大家揭秘一种令人眼前一亮的商业模式——循环购模式。你可能会问&#xff0c;消费1000元&#xff0c;商家却送出了2000元的“好处”&#xff1f;每天还有钱领&#xff0c;这些钱还能提现&#xff1f;这究竟是怎么一回事&#xf…