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

news2024/11/26 18:23:26

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

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

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

相关文章

C++中的结构体——结构体中const的使用场景

作用:用const来防止误操作 示例 运行结果

进阶篇02——索引

概述 结构 B树索引 在这里推荐一个可以将个各种数据结构可视化的网站:数据结构可视化 哈希索引 相关的一个面试题 分类 聚集索引和二级索引(非聚集索引) 思考题:索引思考题 创建索引语法 如果一个索引关联多个字段&#xff…

Android native层的线程分析(C++),以及堆栈打印调试

文章目录 Android native层的线程分析(C),多线程实现1.native线程的创建第一部分:android_thread模块第二部分:linux_thread模块 2.测试linux_thread模块3.Android native的Thread类3.1源码分析 4.native层堆栈调试方法 Android native层的线…

[13] CUDA_Opencv联合编译过程

CUDA_Opencv联合编译过程 详细编译过程可见我之前的文章&#xff1a;Win10下OpencvCUDA联合编译详细教程&#xff08;版本455、460、470,亲测可用&#xff01;&#xff01;&#xff01;&#xff09;本文给出Windows\linux下的opencvcuda的编译总结&#xff0c;摘自 <基于GP…

【SSM】医疗健康平台-项目开发准备

知识目标 了解架构&#xff0c;能够说出常用的架构及其优缺点 熟悉项目的技术栈&#xff0c;能够说出每个技术栈的用途 了解项目的功能结构&#xff0c;能够说出医疗健康项目的功能组成 掌握医疗健康项目的环境搭建&#xff0c;能够根据系统模块的划分搭建医疗健康项目中的父…

Java基础面试重点-2

21. JVM是如何处理异常&#xff08;大概流程&#xff09;&#xff1f; 如果发生异常&#xff0c;方法会创建一个异常对象&#xff08;包括&#xff1a;异常名称、异常描述以及异常发生时应用程序的状态&#xff09;&#xff0c;并转交给JVM。创建异常对象&#xff0c;并转交给…

推荐系统三十六式学习笔记:原理篇.近邻推荐09|协同过滤中的相似度计算方法有哪些?

目录 相似度的本质相似度的计算方法&#xff1a;1、欧式距离2、余弦相似度3、皮尔逊相关度4 、杰卡德&#xff08;Jaccard&#xff09;相似度 总结 相似度的本质 推荐系统中&#xff0c;推荐算法分为两个门派&#xff0c;一个是机器学习派&#xff0c;一个是相似度门派。机器学…

pytorch版本与torchvision版本不匹配问题处理

pytorch版本与torchvision版本不匹配问题处理 问题问题复现解决方法两点注意内容其一&#xff1a;pytorch版本与torchvision版本对应关系其二&#xff1a;CPU版本或GPU版本问题 问题 在新环境中&#xff0c;利用yolov8训练模型的时候报错&#xff0c;错误内容如下&#xff1a;…

探囊取物之渐变背景登录页面(基于ElementUI)

低配置云服务器&#xff0c;首次加载速度较慢&#xff0c;请耐心等候 预览页面&#xff1a;http://www.daelui.com/#/tigerlair/saas/preview/lxbupnc9dg5q 演练页面&#xff1a;http://www.daelui.com/#/tigerlair/saas/practice/lxbupnc9dg5q

ansible-Role角色批量按照node_export节点,并追加信息到Prometheus文件中

文章目录 剧本功能 inventory.yaml文件定义deploy.yaml角色定义node_exporter_lock角色定义任务角色main.yamlnode_exporter_tasks.yml角色触发任务notifyextra_tasks.yml角色prometheus_node_config.j2模板文件 执行命令查看变量 剧本功能 功能1&#xff1a; 批量执行node_ex…

【电子通识】焊接常见的不良有哪些?

在焊接完成后的调试阶段&#xff0c;有时总会发生一些奇怪的异常。也许是因为在焊接过程中出现了一些莫名其妙的焊接缺陷&#xff0c; 这些焊接缺陷产生的原因各不相同。 在实际的SMT贴片加工或插件焊接中&#xff0c;我们一般会采取一些方法来避免这些焊接不良的现象。那么常见…

PyCharm2018图文安装教程、附录软件下载

软件简介 PyCharm 2018是一款IDE集成开发环境&#xff0c;主要功能包括代码调试、语法高亮、智能提示、单元测试、版本控制等&#xff0c;支持Python 3.7&#xff0c;改进search everywhere功能等&#xff0c;可以让用户快速的开发程序。 软件下载 复制链接浏览器打开 https…

HTML静态网页成品作业(HTML+CSS)—— 电影泰坦尼克号介绍网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

译译交友项目介绍

一、 项目背景 随着社会的进步&#xff0c;英语作为一种国际语言&#xff0c;很多人都在学习英语&#xff0c;然而现在很多人都会因为学习英语而烦恼&#xff0c;有时还会因为是一个人学习而感到枯燥。面对情绪的低落&#xff0c;往往会使学习更困难。因此&#xff0c;我打造了…

Protected and unprotected Meilisearch projects(/health)

Elasticsearch 做为老牌搜索引擎&#xff0c;功能基本满足&#xff0c;但复杂&#xff0c;重量级&#xff0c;适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需求&#xff0c;极快&#xff0c;单文件&#xff0c;超轻量。 所以&#xff0c;对于中小型项目来说…

Qt 实战(4)信号与槽 | 4.1、信号与槽机制

文章目录 一、信号与槽机制1、基本概念2、信号与槽函数连接2.1、connect宏实现信号与槽连接2.2、Qt5新connect函数2.3、使用函数指针2.4、使用lambda表达式2.5、使用Qt Creator添加信号的槽函数 3、结论 前言&#xff1a; Qt信号与槽机制是一种用于处理对象间通信的强大机制&am…

2003远程桌面端口修改,Windows Server 2003远程桌面端口修改的专业操作指南

在网络安全日益受到重视的今天&#xff0c;修改Windows Server 2003远程桌面的默认端口已成为提高服务器安全性的常规操作。默认情况下&#xff0c;远程桌面使用的端口为3389&#xff0c;这一广为人知的端口号常常成为黑客攻击的目标。因此&#xff0c;通过修改远程桌面端口&am…

代码随想录-二叉树 | 111 二叉树的最小深度

代码随想录-二叉树 | 111 二叉树的最小深度 LeetCode 111 二叉树的最小深度解题思路代码难点总结 LeetCode 111 二叉树的最小深度 题目链接 代码随想录 题目描述 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说…

地推数据不再迷茫,Xinstall助你一臂之力!

在移动互联网时代&#xff0c;地推作为一种传统的推广方式&#xff0c;仍然占据着举足轻重的地位。然而&#xff0c;地推过程中产生的数据却常常让推广者感到头疼。数据分散、难以追踪、分析困难……这些问题不仅耗费了推广者大量的时间和精力&#xff0c;更可能导致决策失误&a…

vue30:v-model语法糖的本质

在Vue.js框架中&#xff0c;v-model 是一个指令&#xff0c;用于在表单输入和应用状态之间创建双向数据绑定。它本质上是语法糖&#xff0c;意味着它提供了一种更简洁的方式来编写代码&#xff0c;而不需要显式地编写额外的代码。 具体来说&#xff0c;v-model 背后实际上是由…