Mamba v2诞生:1 儒(Transformers)释(SSD)道(Mamba)本是一家?!

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。

近年来,Transformer 模型作为自然语言处理领域的重要里程碑,为语言建模等任务带来了显著的进展。然而,最近出现的诸如Mamba的状态空间模型SSM表现出了令人瞩目的潜力,尤其是在小到中等规模的情况下甚至在某些情况下表现出了超越 Transformer 的性能。

这些新型模型的出现为带来了全新的思路和可能性,通过对结构化半可分离矩阵的各种分解方法的理论研究,可以将状态空间模型SSM与注意力机制Attention的变种进行紧密关联,进而提出一种状态空间对偶SSD的理论框架。

状态空间对偶使得研究人员设计一种新的架构 (Mamba-2),其核心层是对 Mamba(选择性SSM)进行改进,速度提高了2-8倍,同时在语言建模方面能够保持对Transformers的压力。

概览

Mamba-2的关键点在于结构化状态空间对偶性,简称SSD。它主要涉及到如下的关键点:

  • SSD模型是一个特定的层,有点类似S4,、S5或者注意力层,它可以合并到深度神经网络中的某一层。

  • SSD框架是这个模型的通用推理框架 

  • SSD算法是一种比以前的SSM系列更高效计算的算法(层),相对于S4 Layer和S5 Layer

我想读者应该要学会接受层这个概念,每个层里面封装了一段数据处理的逻辑。很多的深度的神经网络都是将一个一个的块(或者层)叠加和组合,产生很多奇妙的化学反应。

SSD最大的作用在于将SSM和各种注意力变体联系了起来。

SSD模型的矩阵A与多头SSM

先来看看Mamba-1的算法:

其中xt为t时刻的输入,yt为t时刻的输出。定义的 𝑥∈𝑅𝑇→𝑦∈𝑅𝑇映射。将 𝑥𝑡和𝑦𝑡视为标量,将隐藏状态ℎ𝑡视为𝑁长的一维向量,其中𝑁是一个独立的超参数,称为状态大小、状态维数或状态扩展因子。

选择性状态空间模型SSM允许 (𝐴,𝐵,𝐶)矩阵参数随时间变化,这里张量 𝐶的形状为𝐶∈𝑅(𝑇,𝑁),张量A的形状为𝐴∈𝑅(𝑇,𝑁,𝑁),张量B的形状为B∈𝑅(𝑇,𝑁)。<可以理解为T*N的矩阵>

为了让计算更加的高效,一般而言结构化SSM通常采用对角矩阵来构造𝐴 。在这种情况下的矩阵𝐴,其实只要存储𝑁×𝑁矩阵的对角线元素就可以了。那么𝐴可以简化为𝐴∈𝑅(𝑇,𝑁)。

Mamba-2的SSD层只做了一个小的修改:它将对角线矩阵𝐴进一步限制为“矩阵I乘以标量”,也就说矩阵𝐴的对角线元素必须都是相同的值,其余的元素都为0。在这种情况况下,可以只用𝑇表示,也可以识别为𝐴t。因为它是一个标量,所以也可以表示为at。

SSM的基本方程仅针对单维输入x∈RT 定义。若 X∈R(T,P) ,有P个单独的通道,那么就可以对每个通道使用相同的动态参数矩阵(ABC),这就是SSM单头模型的定义。P一般称之为头部的维度。

下面的图展示了SSM和Transformer的head的概念。左边每个维度都对应一个独立的SSM(p=1),而右边则是Transformer的多头注意力<忘记了可以温习一下!>

多个头完全可以独立构建,在研究论文中,它采用了一个单头来研究。其实扩展到多头也是一样的原理,在 Mamba-2,P的取值和Transformer保持一致,为64或者128。一个单头有P通道,按照这个尺寸可以扩展到d_model维度。

所以选择性的SSM模型可以用如下的式子表示:

看过Mamba专栏的读者都会发现,矩阵A在不同的SSM有不同的构造方法, 从结构化、对角化到标量不断地进化着。

SSD模型

按照这个式子,再假设A为标量(I矩阵乘以一个标量),那么SSM怎么来表示呢。下来定义一个矩阵L,这里的ai为输入相关的标量

然后定义M为

最后, M通过基本矩阵乘法对将一维输入映射到一维输出的序列变换进行编码。x∈RT→y∈RT ,或者说y=Mx,和之前式1是一样的。

对于式子三, 重命名(C,B,X)↦(Q,K,V),可以得到:

是不是很眼熟,这个公式和注意力机制很相似,事实上,如果全部at=1 ,那么L就是下三角形的因果掩码,公式三等价于因果注意力。<不熟悉的回头去温习下。>

那么SSD的这种构造方法如何成为SSM和Attention的桥梁呢?

SSD拉手SSM

所谓的“对偶性”Duality是指在方程中定义的两个模型,式1在对标量恒等式结构画At的情况下,实际上是式3完全相同的模型。

与以前的 SSM 相比,SSD与Mamba 的核心层几乎相同,但在循环A矩阵上具有更多的结构。

1) Mamba-1 S6在A上使用对角线结构,而Mamba-2 SSD在A上使用标量次恒等式结构。

2) Mamba-1的head尺寸为P=1,即所有通道完全由单独的SSM独立控制(见上图),而Mamba-2的head尺寸为P>1 ,默认情况下P=64。

3) 通过A限制标量-时间-恒等式的对角线结构,递归中的动态参数(SSM(ABC))在状态空间的所有的输入N元素之间共享,也在给定head的所有P 通道中共享。

换言之,单个SSM  head具有总状态大小为P×N, 都由Mamba-1中的单独控制,而在Mamba-2中则由单个共享递归控制。

进行这些的主要动机还是在于效率。那么共享动态参数SSM(ABC)会不会对性能有所损伤。

在Mamba中引入选择性(例如A ,取决于输入X )的主要原因之一是让 SSM 能够控制是记住还是忽略特定信息。若这些信息应该被忽略,那么整个状态可以一起忽略它。因此,若动态参数SSM(ABC)在所有功能之间共享,应该也不是不可以,不过还需要观察。

SSD拉手注意力机制

与标准注意力机制相比,SSD也只有两个区别,其一,softmax 规范化被丢弃。其二,在乘法中使用了单独的元素掩码矩阵。第一个差异其实在线性RNN已经解释过了。<可以链接回去温习!>

第二个区别是 SSD 与标准线性注意力的区别:

刚才推导的式子中多出来一个掩码矩阵L,导致标准注意力分数〈Qi,Kj〉会因权重的问题而减弱。

毕竟:

不过通过不同的掩码矩阵L,利用Structured Masked Attention(SMA)。如下图所示,可以构造出很多经典的注意力。

在继续下篇之前,建议读者回去温习下Mamba,然后再继续攀登Mamba-2。

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

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

相关文章

RPA-UiBot6.0数据采集机器人(海量信息一网打尽)内附RPA师资培训课程

前言 友友们是否曾为海量的数据信息而头疼,不知道如何从中精准抓取你所需的数据?小北的这篇博客将为你揭晓答案,让我们一起学习如何运用RPA数据采集机器人,轻松实现海量信息的快速抓取与整理,助力你的工作效率翻倍! 诚邀各位友友参与小北博客的评论,共同开启自动…

传输大咖24|镭速传输揭秘:确保UDP数据完整性的先进策略

在现代网络通信中&#xff0c;UDP&#xff08;User Datagram Protocol&#xff09;因其低延迟和高效率的特点而受到青睐&#xff0c;尤其是在需要快速传输大量数据的场景中。然而&#xff0c;UDP协议本身并不保证数据的可靠性和一致性&#xff0c;这就要求使用UDP进行数据传输的…

【JAVASE】异常(下)

四&#xff1a;异常的处理 &#xff08;2&#xff09;try-catch捕获并处理 throws 对异常并没有处理&#xff0c;而是将异常报告给抛出异常方法的调用者&#xff0c;由调用者处理。如果真正要对异常进行处理&#xff0c;就需要try-catch 语法格式&#xff1a; 语法格式&#…

springcloud Feign调用拦截器(统一处理拷贝请求头实现透传信息、内部调用鉴权、打印feign调用)

springcloud Feign调用拦截器&#xff08;统一处理拷贝请求头实现透传信息、内部调用鉴权、打印feign调用日志&#xff09; 实现接口Feign.RequestInterceptor 实现接口 feign.RequestInterceptor 并注入到IOC容器即可生效 示范代码如下 拷贝请求头&#xff0c;将原请求信…

SVN安装详细教程

&#x1f4d6;SVN安装详细教程 ✅1. 下载✅2. 安装✅3. 使用 ✅1. 下载 官方地址&#xff1a;https://tortoisesvn.net/downloads.html 123云盘地址&#xff1a;https://www.123pan.com/s/4brbVv-rsoWA.html ✅2. 安装 双击TortoiseSVN-1.14.6.29673-x64-svn-1.14.3.msi安装…

宇宙数字宣布2023年上半年盈利翻倍,数字货币挖矿业务持续增长

2023年3月8日宇宙数字公司在2023年上半年盈利翻倍的消息,彰显了该公司在数字货币挖矿领域的卓越表现和领先地位。这一成就是宇宙数字创新研发策略成功的明证,同时也体现了其高效能挖矿产品和解决方案在全球市场的广泛认可和需求。 随着数字货币市场的持续变化和发展,宇宙数字公…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【06】【商品服务】接口文档地址_三级分类_SPU_SKU

持续学习&持续更新中… 学习态度&#xff1a;守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【06】【商品服务】接口文档地址_三级分类_SPU_SKU 接口文档地址三级分类效果图建表后台组建数据的树形结构在人人(后台管理系统)中实现管理商品的三级分类路径规则使用…

声临其境!当ChatTTS遇上腾讯云HAI,定制你的专属智能语音服务

引言 ​ 「语音」作为人工智能的「启蒙钥匙」&#xff0c;不仅率先踏出实验室大门&#xff0c;步入寻常百姓家&#xff0c;也成为了人类与AI初次触电的「桥接技术」。初期&#xff0c;智能语音技术的研究重心落在了语音识别领域&#xff0c;致力于使机器具备理解人类语言的能…

身份证数字识别DBNET

采用DBNET检测身份证数字所在区域&#xff0c;然后使用切割字符的方法&#xff0c;使用PCASVM训练和分类&#xff0c;支持C/PYTHON开发&#xff0c;只需要OPENCV 身份证数字识别DBNETPCASVM

【ARM Cache 及 MMU 系列文章 6 -- Cache 寄存器 CTR | CLIDR | CCSIDR | CSSELR 使用详解 1】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Cache 常用寄存器Cache CSSELR 寄存器Cache CSSELR 使用场景Cache CSSELR 操作示例 Cache CLIDR 寄存器LoUU 介绍LoUU 使用 LoUIS 介绍CLIDR 使用 Cache CCSIDR 寄存器 Cache 常用寄存…

mysql引入表名称的注意事项

1、遇到问题 mapper中的文件是这样的 解析出来的sql是这样的 sql显示为&#xff1a;select * from ‘tableName’ 2、解决方法 mapper文件种使用${tableName}而不是#{tableName}

网工内推 | 联通公司,云计算售前,AWS认证优先

01 联通数字科技有限公司 &#x1f537;招聘岗位&#xff1a;云计算售前工程师 &#x1f537;职责描述&#xff1a; 1.了解私有云&#xff0c;公有云&#xff0c;混合云等云计算技术知识&#xff0c;了解云计算行业现状及发展趋势。 2.承担区域项目售前工作支持&#xff0c;为…

【iOS】UI学习——UITableView

UI学习&#xff08;四&#xff09; UITableView基础UITableView协议UITableView高级协议和单元格 UITableView基础 dateSource:数据代理对象 delegate:普通代理对象 numberOfSectionInTableView:获得组数协议 numberOfRowsInSection:获得行数协议 cellForRowAtIndexPath:创建单…

ORPC-851(工业级)晶体管光耦,兼容替代LTV-851、PC851

提供隔离反馈 逻辑电路之间的接口 带基极引脚高可靠晶体管输出光耦 电平转换 DC和AC输入 SMPS中的调节反馈电路 消除接地环路 特征 电流传输比 &#xff08; CTR &#xff1a; 最低 50% IF 5mA&#xff0c; VCE 5V &#xff09; 宽工作温度范围 -55~100C 高输入输出隔离…

【python010】获取任意多边形区域内的经纬度点并可视化

1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题、知识点等&#xff0c;如获取任意多边形区域内的经纬度点并可视化&#xff0c;找了N篇文章没发现有效的解决方案。 2.欢迎点赞、关注、批评、指正&#xff0c;互三走起来&#xff0c;小手动起来&#xff01; 3.欢…

【一步一步了解Java系列】:重磅多态

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff1a;小闭…

低代码开发平台一般都有哪些功能和模块?

在当今快速变化的数字化时代&#xff0c;企业对于高效、灵活且经济的软件开发解决方案的需求愈发迫切。低代码开发平台应运而生&#xff0c;成为众多企业实现数字化转型的首选工具。本文将详细探讨低代码开发平台一般具备的主要功能和模块&#xff0c;以及它们如何助力企业提升…

6月5日 C++day3

#include <iostream>using namespace std;class Per { private:string name;int age;int *high;double *weight; public:Per(){cout << "Per的无参构造" << endl;}Per(string name,int age,int high,double weight):\name(name),age(age),high(new…

trace32 显示用户进程用户态调用栈

在只加载了linux vmlinux符号表的情况下&#xff0c;trace32 只能显示内核态的调用栈函数信息&#xff0c;无法显示用户态调用栈的函数信息&#xff1a; 查看进程maps 确认地址0x40616C为进程/bin/box的虚拟地址&#xff1b;而0xFFFF904E12FC为/lib/libc-2.30.so的地址&#x…

字节跳动Seed-TTS文本到语音模型家族

字节跳动的SEED TTS&#xff08;Seed-TTS&#xff09;是一系列大规模自回归文本转语音&#xff08;TTS&#xff09;模型&#xff0c;能够生成与人类语音几乎没有区别的高质量语音。该模型在语音上下文学习方面表现出色&#xff0c;尤其在说话者相似度和自然度方面的表现&#x…