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。

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

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

相关文章

因子区间[牛客周赛44]

思路分析: 我们可以发现125是因子个数的极限了,所以我们可以用二维数组来维护第几个数有几个因子,然后用前缀和算出来每个区间合法个数,通过一个排列和从num里面选2个 ,c num 2 来计算即可 #include<iostream> #include<cstring> #include<string> #include…

数据库中锁的机制和MVCC协议以及隔离级别

文章目录 数据库中的锁锁与索引的关系释放锁的时机乐观锁与悲观锁行锁与表锁共享锁与排它锁意向锁记录锁、间隙锁和临键锁记录锁间隙锁临键锁 锁优化方案 MVCC协议MySQL的隔离级别脏读和幻读快照读和当前读 版本链Read ViewRead View 与已提交读Read View 与可重复读m_up_limit…

8. C#多线程基础概念

文章目录 一. 目标二. 技能介绍① 进程和线程② 为什么需要多线程③ C#实现多线程的方式④ 线程的操作(创建_终止_挂起_恢复) 一. 目标 进程和线程基本概念为什么需要多线程?C#实现多线程的方式?线程Thread的创建,终止,挂起和恢复? 二. 技能介绍 ① 进程和线程 什么是进程…

F5G城市光网,助力“一网通城”筑基数字中国

《淮南子》中说&#xff0c;“临河而羡鱼&#xff0c;不如归家织网”。 这句话在后世比喻为做任何事情都需要提前做好准备&#xff0c;有了合适的工具&#xff0c;牢固的基础&#xff0c;各种难题也会迎刃而解。 如今&#xff0c;数字中国发展建设如火如荼&#xff0c;各项任务…

C语言 | Leetcode C语言题解之第119题杨辉三角II

题目&#xff1a; 题解&#xff1a; int* getRow(int rowIndex, int* returnSize) {*returnSize rowIndex 1;int* row malloc(sizeof(int) * (*returnSize));row[0] 1;for (int i 1; i < rowIndex; i) {row[i] 1LL * row[i - 1] * (rowIndex - i 1) / i;}return row…

排序-快速排序

前言 本期主角 是这个小老头 图灵奖得主&#xff0c; 美国国家科学院外籍院士&#xff0c; 美国国家工程院外籍院士&#xff0c; 英国皇家工程院院士&#xff0c; 英国皇家学会院士 鼓掌&#x1f44f;&#x1f44f;&#x1f44f; 感觉这个小老头很叼噢(确实很叼) 从标…

MQTT.FX的使用

背景 在如今物联网的时代下&#xff0c;诞生了许多的物联网产品&#xff0c;这些产品通过BLE、WIFI、4G等各种各样的通信方式讲数据传输到各种各样的平台。 除了各个公司私有的云平台外&#xff0c;更多的初学者会接触到腾讯云、阿里云之类的平台。设备接入方式也有着多种多样…

react基础学习 JSX

JSX的测试网站 Babel Babel 可以测试代码的效果 JSX实现map列表 注意 key不一样&#xff08;使用遍历的时候&#xff09; 简单条件渲染 复杂条件渲染 绑定事件 function App() {const colorse (e)>{console.log("测试点击",e);}const colorse1 (name)>{…

数仓建模—指标体系指标拆解和选取

数仓建模—指标拆解和选取 第一节指标体系初识介绍了什么是指标体系 第二节指标体系分类分级和评价管理介绍了指标体系管理相关的,也就是指标体系的分级分类 这一节我们看一下指标体系的拆解和指标选取,这里我们先说指标选取,其实在整个企业的数字化建设过程中我们其实最…

vuInhub靶场实战系列-DC-6实战

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置二、信息收集2.1 主机发现2.1.1 nmap扫描存活主机2.1.2 arp-scan扫描存活主机 2.2 端口扫描2.3 指纹识别2.3.1 尝试指纹识别2.3.…

2024050302-重学 Java 设计模式《实战享元模式》

重学 Java 设计模式&#xff1a;实战享元模式「基于Redis秒杀&#xff0c;提供活动与库存信息查询场景」 一、前言 程序员&#x1f468;‍&#x1f4bb;‍的上下文是什么&#xff1f; 很多时候一大部分编程开发的人员都只是关注于功能的实现&#xff0c;只要自己把这部分需求…

现代控制中可控性的Gramian判据

知乎三角猫frank对于这块内容写的非常好&#xff0c;但这个输入的构造还是很难过于没头没尾 数学好的人&#xff0c;可能看一眼根据形式就能推出gramian的构造&#xff0c;但对我这种比较钻牛角尖的人&#xff0c;我就想有一个逻辑链条——gramian是怎么被构造出来的&#xff1…

eNSP学习——配置RIPv2认证

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建RIP网络 3、模拟网络攻击 4、配置RIPv2简单验证 5、配置RIPv2 MD5密文验证 需要eNSP各种配置命令的点击链接自取&#xff1a;华为&#xff45;NSP各种设备配置命令大全PD…

区块链游戏(链游)安全防御:抵御攻击的策略与实践

一、引言 区块链游戏&#xff0c;或称为链游&#xff0c;近年来随着区块链技术的普及而迅速崛起。然而&#xff0c;如同其他任何在线平台一样&#xff0c;链游也面临着各种安全威胁。本文将探讨链游可能遭遇的攻击类型以及如何通过有效的策略和技术手段进行防御。 二、链游可…

如何手动批准内核扩展 Tuxera NTFS for mac内核扩展需要批准 内核扩展怎么打开

在了解如何手动批准内核扩展之前&#xff0c;我们应该先了解什么叫做内核扩展。内核扩展又被称为KEXT&#xff0c;通过它可以实现macOS系统与软件组件之间的交互&#xff0c;例如磁盘管理、任务管理和内存管理等等。 kext 是内核扩展&#xff08;Kernel Extension&#xff09;…

[ue5]建模场景学习笔记(2)——用vectornoise降低重复率

1.问题分析&#xff1a; 利用改uv的方式降低重复率并不理想&#xff0c;在一定程度上的确能够达到降低重复率的效果&#xff0c;但远看仍然有较清晰的重复效果&#xff0c;尝试优化一下。 2.操作实现&#xff1a; 1.首先先看一下修改后的效果&#xff1a; 这是未修改前&#…

arco disign 封装数值范围组件

实现效果: 环境:vue3 arco disign vue a_input_number 实现代码: NumRange.vue <template> <span><a-input-numberv-model"minValue"style"width: 45%"v-bind"options"input"minInput"/><span:style"{…

Vue3中的常见组件通信之mitt

Vue3中的常见组件通信之mitt 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $refs…

JMeter的基本使用

JMeter的基本使用三步骤&#xff1a;1.添加线程、2.添加请求、3.添加查询结果的内容 如果需要添加token请求头来验证&#xff0c;则需要再加上一步骤&#xff1a;添加请求头 1.线程 添加线程的方式 主要修改者三个属性值 Number of Threads&#xff1a;并发线程数 Ramp-up…

转转回收业务策略中心的实践

1 背景 回收业务发展日益壮大&#xff0c;我们在邮寄、上门、门店三大履约模式下的业务逻辑日益复杂。同样都是在做回收这一个业务&#xff0c;即便履约方式不同&#xff0c;也有很多业务概念是一致的。为了避免各个业务闷头造轮子&#xff0c;同时又能拉齐三端的业务标准&…