Mamba v2诞生:2 那些烧脑的矩阵们

2024-06-07 22:36
文章标签 v2 矩阵 诞生 mamba 烧脑

本文主要是介绍Mamba v2诞生:2 那些烧脑的矩阵们,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

Mamba的矩阵表达式

上一篇介绍了Mamba的概览,先来温习下Mamba-1模型公式:

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

选择性状态空间模型SSM(Mamba-1)允许 (𝐴,𝐵,𝐶)矩阵参数随时间变化,这里张量 𝐶的形状为𝐶∈𝑅(𝑇,𝑁),张量A的形状为𝐴∈𝑅(𝑇,𝑁,𝑁),张量B的形状为B∈𝑅(𝑇,𝑁)。

那么将输入和输出扩展为序列,则可以得到下式:

将序列模型改写为矩阵变换,则提供了理解模型结构和特征的强大工具。一般的非线性RNN(如LSTM)不能写成矩阵表达式,但状态空间模型可以。事实上,只要展开SSM递归的定义,SSM第(2)式就可以写成矩阵变化格式:

其中Mij可以定义为:

各位读者,A的上标乘号代表连乘,而下边则代表着从i到j。下图为推导过程,不喜就跳过吧。

在mamba-2中因为Ai这个矩阵的设计方式是对角线元素的取值都相同为ai,其余的元素为0。所以将A抽出来,则可以得到:

这个时候将1,2,4的式子放在一起已经包含式子3:

其中L为:

推导过程就不展开了,但是可以看看下面的例子:x,y均为T维的向量,x乘以一个下图的下三角矩阵,则等同于右侧的公式。<要好好推敲一下!>

许多序列模型明确地被激励或定义为矩阵序列变换—最显著的是 Transformers,其中的注意力矩阵。另一方面,RNN和SSM以前没有采用矩阵的模式来表达。通过提供SSM的显式矩阵变换形式就打开新的大门。从计算的角度来看,任何计算状态空间模型前向传递的方法都可以看作是半可分矩阵上的矩阵乘法算法。

半可分矩阵

Semiseparable Matrices

若是下三角部分(即对角线上或对角线下)中包含的每个子矩阵的秩最多为 N,则 (下三角) 矩阵𝑀 是 N-Semiseparable Matrices。

这里将 N 称为半可分矩阵的阶或秩。半可分矩阵有许多结构化表示,包括分层半可分 (HSS)、顺序半可分 (SSS) 和 Bruhat 形式 。在Mamba-2中主要使用SSS形式。

若一个下三角矩M∈𝑅(𝑇,𝑇)可以写为如下的格式:

则它一定会有一个N-SSS的表现形式。而一个N-SSS的矩阵M(4)一定可以表示为如下,

这个方程将广泛的被使用于Mamba-2的快速算法推导。

那来看看1-Semiseparable Matrices的特殊情况,Mamba-2的矩阵A也是标量,那么这个时候:

SSD模型的对偶性可以看作是半可分离矩阵上的两种不同的矩阵乘法算法。这时其实SSM就是一个半可分矩阵的转换。

其中M根据(5)可以进行如下的变换:

将矩阵切分之后,可以将这些矩阵块分为四种颜色。

  • 橙色:每个对角线块都是一个较小的半可分离矩阵,可以随意计算

  • 绿色:只有T/Q 完全不同的绿色块,中间有很多是共享,可以使用批处理 matmul计算

  • 黄色:黄色项本身形成一个1-半可分离矩阵,可以使用SSM扫描

  • 蓝色:与绿色类似,这些可以使用批处理 matmul 进行计算

其实这些分解刚好可以很巧妙的构造出分块和状态传递(下图中间部分)。一切都可以切块,然后能加速的加速,能用SSM扫描的扫描,最终将输出并行算出结果。

半可分矩阵为状态空间对偶 (SSD) 提供了全新的视角,其中对偶模式分别指线性时间半可分矩阵乘法算法和二次时间朴素矩阵乘法。

线性形式是一种结构化的矩阵乘法算法,它利用半可分离矩阵的结构按顺序计算输出  。二次形式是实现完整矩阵的朴素矩阵乘法算法。

SSD也提出了一种更通用的混合算法,可以看作是结合了线性和二次形式,最终获得美妙的结果。这种利用半可分离矩阵的块分解,进而推导出一种新的矩阵乘法算法让人耳目一新!

若存在有点恍惚,请移步“Mamba”温习功课!

这篇关于Mamba v2诞生:2 那些烧脑的矩阵们的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1040491

相关文章

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

线性代数|机器学习-P35距离矩阵和普鲁克问题

文章目录 1. 距离矩阵2. 正交普鲁克问题3. 实例说明 1. 距离矩阵 假设有三个点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​,三个点距离如下: ∣ ∣ x 1 − x 2 ∣ ∣ 2 = 1 , ∣ ∣ x 2 − x 3 ∣ ∣ 2 = 1 , ∣ ∣ x 1 − x 3 ∣ ∣ 2 = 6 \begin{equation} ||x

野火霸天虎V2学习记录

文章目录 嵌入式开发常识汇总1、嵌入式Linux和stm32之间的区别和联系2、stm32程序下载方式3、Keil5安装芯片包4、芯片封装种类5、STM32命名6、数据手册和参考手册7、什么是寄存器、寄存器映射和内存映射8、芯片引脚顺序9、stm32芯片里有什么10、存储器空间的划分11、如何理解寄存器说明12、如何操作寄存器的某一位 STM32F407芯片学习1、stm32单片机启动流程s

【线性代数】正定矩阵,二次型函数

本文主要介绍正定矩阵,二次型函数,及其相关的解析证明过程和各个过程的可视化几何解释(深蓝色字体)。 非常喜欢清华大学张颢老师说过的一段话:如果你不能用可视化的方式看到事情的结果,那么你就很难对这个事情有认知,认知就是直觉,解析的东西可以让你理解,但未必能让你形成直觉,因为他太反直觉了。 正定矩阵 定义 给定一个大小为 n×n 的实对称矩阵 A ,若对于任意长度为 n 的非零向量 ,有 恒成

kaggle竞赛宝典 | Mamba模型综述!

本文来源公众号“kaggle竞赛宝典”,仅用于学术分享,侵权删,干货满满。 原文链接:Mamba模型综述! 型语言模型(LLMs),成为深度学习的基石。尽管取得了令人瞩目的成就,Transformers仍面临固有的局限性,尤其是在推理时,由于注意力计算的平方复杂度,导致推理过程耗时较长。 最近,一种名为Mamba的新型架构应运而生,其灵感源自经典的状态空间模型,成为构建基础模型的有力替代方案

python科学计算:NumPy 线性代数与矩阵操作

1 NumPy 中的矩阵与数组 在 NumPy 中,矩阵实际上是一种特殊的二维数组,因此几乎所有数组的操作都可以应用到矩阵上。不过,矩阵运算与一般的数组运算存在一定的区别,尤其是在点积、乘法等操作中。 1.1 创建矩阵 矩阵可以通过 NumPy 的 array() 函数创建。矩阵的形状可以通过 shape 属性来访问。 import numpy as np# 创建一个 2x3 矩阵mat

【UVA】10003-Cutting Sticks(动态规划、矩阵链乘)

一道动态规划题,不过似乎可以用回溯水过去,回溯的话效率很烂的。 13988658 10003 Cutting Sticks Accepted C++ 1.882 2014-08-04 09:26:49 AC代码: #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include

算法练习题17——leetcode54螺旋矩阵

题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。  代码 import java.util.*;class Solution {public List<Integer> spiralOrder(int[][] matrix) {// 用于存储螺旋顺序遍历的结果List<Integer> result = new ArrayList

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相似对角化5.2 已知两个矩阵相似,求某个矩阵中的未知参数5.3 相似时,求可逆矩阵P,使