【论文翻译】结构化状态空间模型

文章目录

    • 3.2 对角结构化状态空间模型
      • 3.2.1 S4D:对角SSM算法
      • 3.2.2 完整应用实例
    • 3.3 对角化加低秩(DPLR)参数化
      • 3.3.1 DPLR 状态空间核算法
      • 3.3.2 S4-DPLR 算法和计算复杂度
      • 3.3.3赫尔维兹(稳定)DPLR形式

这篇文章是Mamba作者博士论文 MODELING SEQUENCES WITH STRUCTURED STATE SPACES
的第三章的部分翻译,为了解决计算上存在的代价问题,引入了结构化状态空间模型,介绍了对角结构化状态空间模型和低秩对角结构化状态空间模型。

3.2 对角结构化状态空间模型

为了解决SSM的计算瓶颈,我们使用一个允许我们变换和简化SSM的结构化结果。

Lemma 3.3 共轭是SSM的等价关系:
( A , B , C ) ∼ ( V − 1 AV , V − 1 B , CV ) (\textbf A, \textbf B, \textbf C) \sim(\textbf V^{-1}\textbf A \textbf V, \textbf V^{-1}\textbf B, \textbf C \textbf V) (A,B,C)(V1AV,V1B,CV)

证明:写出两个SSM, x x x x ~ \tilde{x} x~为对应的状态:
x ′ = A x + B u           x ~ = V − 1 AV x ~ + V − 1 B u y = C x                    y = CV x ~ x^{'} = \textbf Ax +\textbf Bu \ \ \ \ \ \ \ \ \ \tilde x = \textbf V^{-1}\textbf A \textbf V\tilde x +\textbf V^{-1}\textbf Bu \\ y = \textbf C x \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ y = \textbf C \textbf V \tilde x x=Ax+Bu         x~=V1AVx~+V1Buy=Cx                  y=CVx~

当用 V \textbf V V乘以SSM右侧,两个SSM相同,其中 x = V x ~ x = \textbf V \tilde x x=Vx~。因此它们在计算相同的算子 u ↦ y u\mapsto y uy,但是状态基被 V \textbf V V改变了。

Lemma 3.3说明了状态空间 ( A , B , C ) (\textbf A, \textbf B, \textbf C) (A,B,C) ( V − 1 AV , V − 1 B , CV ) (\textbf V^{-1}\textbf A \textbf V, \textbf V^{-1}\textbf B, \textbf C \textbf V) (V1AV,V1B,CV)
实际是等价的。换句话说,它们表示的是同一个映射 u ↦ y u\mapsto y uy,在SSM文献中也被叫做状态空间变换

对此一个非常自然的选择是对角矩阵形式,可能是最典型的形式。众所周知,几乎所有的矩阵在复平面上对角化。

Proposition 3.4 集合 D ⊂ C N × N \mathcal D \subset \mathcal C ^{N\times N} DCN×N 可对角矩阵在 C N × N \mathcal C ^{N\times N} CN×N 上稠密且满测度

换句话说,Proposition 3.4说明(几乎)所有的SSM可以等价成一个对角SSM。除此之外,对角SSM结构化可以解决问题一和问题二,特别是计算 K ‾ \overline{\textbf K} K成为一个成熟的结构化矩阵乘法有高效的时间和空间复杂度。

3.2.1 S4D:对角SSM算法

Remark 3.6. 对于对角SSM的例子, A \textbf A A是对交的,因此我们重载定义 A n \textbf A_n An代表其对角的迹。回想我们定义SISO情况为 B ∈ R N × 1 \textbf B \in \mathcal R ^ {N\times 1} BRN×1 C ∈ R 1 × N \textbf C \in \mathcal R ^ {1\times N} CR1×N,因此我们令 B n , C n \textbf B_n, \textbf C_n Bn,Cn直接索引它们的元素。

现在我们提出了S4D在对角SSM上解决了问题一和问题二

S4D 递归

在对角SSM上计算任何对角化都很简单,因为对角矩阵上的解析函数简化为其对角线上按元素进行。实现一个对角矩阵的矩阵乘法也很简单,因为它减少了元素级的乘法。因此对角SSM轻松地适合Definition3.1

S4D 卷积核:范德蒙矩阵乘法

A \textbf A A是对角的,计算卷积核变得十分简单:
K ‾ ℓ = ∑ n = 0 N − 1 C n A ‾ n ℓ B ‾ n    ⟹    K ‾ = ( B ‾ ⊤ ∘ C ) ⋅ V L ( A ‾ ) where V L ( A ‾ ) n , ℓ = A ‾ n ℓ ( 3.2 ) \begin{aligned}\overline{K}_\ell=\sum_{n=0}^{N-1}C_n\overline{A}_n^\ell\overline{B}_n\implies\overline{K}=(\overline{B}^\top\circ C)\cdot\mathcal{V}_L(\overline{A})\quad\text{where}\quad\mathcal{V}_L(\overline{A})_{n,\ell}=\overline{A}_n^\ell\quad(3.2)\end{aligned} K=n=0N1CnAnBnK=(BC)VL(A)whereVL(A)n,=An(3.2)
∘ \circ 是哈达玛积, ⋅ \cdot 是矩阵乘法, V \mathcal V V被称为范德蒙矩阵

再展开一下,我们可以把 K ‾ \overline {\textbf K} K写成下面的范德蒙矩阵-向量乘法
K ‾ = [ B ‾ 0 C 0 … B ‾ N − 1 C N − 1 ] [ 1 A ‾ 0 A ‾ 0 2 … A ‾ 0 L − 1 1 A ‾ 1 A ‾ 1 2 … A ‾ 1 L − 1 ⋮ ⋮ ⋮ ⋱ ⋮ 1 A ‾ N − 1 A ‾ N − 1 2 … A ‾ N − 1 L − 1 ] \overline{K}=\begin{bmatrix}\overline{B}_0C_0&\ldots&\overline{B}_{N-1}C_{N-1}\end{bmatrix}\begin{bmatrix}1&\overline{A}_0&\overline{A}_0^2&\ldots&\overline{A}_0^{L-1}\\1&\overline{A}_1&\overline{A}_1^2&\ldots&\overline{A}_1^{L-1}\\\vdots&\vdots&\vdots&\ddots&\vdots\\1&\overline{A}_{N-1}&\overline{A}_{N-1}^2&\ldots&\overline{A}_{N-1}^{L-1}\end{bmatrix} K=[B0C0BN1CN1] 111A0A1AN1A02A12AN12A0L1A1L1AN1L1
在这里插入图片描述

对角化结构SSM(S4D)有一个非常简单的解释。(左)对角化结构允许它被看作1维SSM的集合,或者scalar递归(右)。作为一个卷积模型,S4D有一个简单的可解释的卷积核,可以用两行代码实现。颜色代表独立的1-D SSM;紫色代表可训练参数。

时间和空间复杂度

原始方法计算3.2是通过范德蒙矩阵 V L ( A ‾ ) \mathcal V_L(\overline{\textbf A}) VL(A)和实现一个矩阵乘法,需要 O ( N L ) O(NL) O(NL)的时间和空间。

然而,范德蒙矩阵已经经过大量研究在理论上乘法可以以 O ~ ( N + L ) \tilde O(N+L) O~(N+L)操作和 O ( N + L ) O(N+L) O(N+L)空间实现。

3.2.2 完整应用实例

整个S4D方法可以直接应用,仅仅需要几行代码来参数化和初始化,核计算和完整的前向传播。

最后,注意结合不同的参数化选择可能导致在kernel实现上的少许不同。图3.1说明了用ZOH离散化的S4D核甚至可以进一步简化到两行代码。

def parameters(N, dt_min = 1e-3, dt_max = 1e-1):
    #初始化
    #几何均匀时间尺度 [第五章]
    log_dt = np.rnadom.rand() * (np.log(dt_max) - np.log(dt_min)) + np.log(dt_min)
    # S4D-Lin 初始化 (A, B) [第六章]
    A = -0.5 + 1j * np.pi * np.arange(N // 2)
    B = np.one(n // 2) + 0j
    #方差保持初始化 [第五章]
    C = np.random.randn(N // 2) + 1j * np.random.randn(N)
    return log_dt, np,log(-A.real, A_imag, B, C)

def kernel(L, log_dt, log_A_real, A_imag, B, C):
    #离散化(例如双线性变换)
    dt, A = np.exp(log_dt), -np.exp(log_A_real) + 1j * A_imag
    dA, dB = (1 + dt * A /2) / (1 - dt * A / 2), dt * B / (1 - dt * A / 2)
    #计算(范德蒙矩阵乘法-可以被优化)
    #返回实部两倍-核添加共轭对相同
    return 2 * ((B * C) @ (dA[:, None] ** np.arrange(L))).real

def forward(u, parameters):
    L = u.shape[-1]
    K = kernel(L, *parameters)
    #用FFT卷积 y = u * K
    K_f,u_f = np.fft.fft(K, n = 2 * L), np.fft.fft(u, n = 2 * L)
    return np.fft.ifft(K_f*u_f, n = 2 * L)[...,:L]

参数化和计算一通道S4D模型的完整Numpy示例

3.3 对角化加低秩(DPLR)参数化

当可能的时候,对角SSM在实际中使用是理想的因为它们的简单和灵活。然而,它们的强结构有时太过限制。特别是,Chapter 6将会说明基于HIPPO矩阵的重要SSM类(Chapter 4 和 5)不能在数值上表达为对角SSM,而使用一个对角结构的拓展替代。虽然我们推迟这一动机到部分二,这一部分从计算角度,独立地表示这个结构。除了和部分二中的特殊SSM的关系,这个重参数化背后的想法和算法理论上是独立的,在之后的序列模型中会用到3.6.2

这个部分定义了对角SSM的拓展依然可以高效计算的**对角低秩(DPLR)**SSM。我们主要的技术结果关注于发展这个参数化和展示如何高效计算所有的SSM表达(Section 2.3),特别是找到一个问题一和问题二的算法。

在这里插入图片描述

3.3.1给出了我们方法关键组成部分的总览并形式上定义了S4—DPLR参数化。3.3.2给出了主要的结构,说明S4是渐进有效的对于序列模型。证明在附录3.1。

3.3.1 DPLR 状态空间核算法

尽管从对角到DPLE矩阵的扩展看起来很小,额外的低秩项时矩阵计算更困难。特别是不像对角矩阵,计算等式2.8DPLR矩阵的幂次方依然很慢(和非结构化矩阵相同)并且难以被优化,我们通过同时应用三种新技术解决这个瓶颈。

  • 我们通过评估它的单元 ζ \zeta ζ的根截断生成函数 ∑ j = 0 L − 1 K ‾ j ζ j \sum _{j = 0}^{L - 1}\overline{\textbf K}_j\zeta^j j=0L1Kjζj来计算它的谱而不是直接计算 K ‾ \overline {\textbf K} K K ‾ \overline {\textbf K} K之后可以通过一个反FFT实现。
  • 这个生成函数和矩阵分解相近,现在包括一个矩阵求逆而不是幂。低秩项现在可以通过Woodbury恒等式(Proposition A.2)将$(A + PQ*){-1} 按 按 A^{-1}$真正减少到对角情形。
  • 最后,我们表明对角矩阵形式是Cauchy kernel 1 w j − ζ k \frac{1}{w_j - \zeta _k} wjζk1的等价形式,一个使用stable near-linear算法的充分研究问题。

3.3.2 S4-DPLR 算法和计算复杂度

我们的算法在循环和卷积表达下都是经过优化的,满足Definitions 3.1和3.2

Theorem 3.5 (S4递归) 给定任意步长 Δ \Delta Δ,计算提柜的以部可以在 O ( N ) O(N) O(N)操作下完成, N N N是状态大小。

Theorem 3.6 (S4卷积)给定任意步长 Δ \Delta Δ,计算SSM卷积核 K ‾ \overline{\textbf K} K可以被减少到4次Cauchy 乘法,需要仅仅 O ~ ( N + L ) \tilde O(N+L) O~(N+L)次操作和 O ( N + L ) O(N+L) O(N+L)空间

附录C.1,定义C.5形式上定义了Cauchy 矩阵,和有理插值问题相关。在数值分析上计算Cauchy 矩阵同样得到充分研究,有基于著名的快速多极子算法(FMM)的快速算术和数值算法。不同情况下这些算法的计算复杂度在附录C.1 Proposition C.6中展示。

3.3.3赫尔维兹(稳定)DPLR形式

独立于计算S4-DPLR的算法细节,我们使用一个基础DPLR参数化的修正来确保状态空间模型的稳定性。特别是,赫尔维茨矩阵(又称为稳定矩阵)是一类可以确保SSM渐进稳定的。

Definition 3.7. 一个赫尔维茨矩阵 A \textbf A A是一个所有本征值都有负实数部分的矩阵

从离散时间SSM角度,我们很容易明白为什么 A \textbf A A需要是一个赫尔维茨矩阵从基本原则和下面简单的观察。受限,展开RNN模式包含重复升幂 A ‾ \overline {\textbf A} A,只有在 A ‾ \overline {\textbf A} A的所有本征值在(复数)单位圆内或上才是稳定的。第二,变换(2.4)(不论是对于双线性还是ZOH离散化)映射复数左半平面到单位圆,因此计算一个SSM的RNN模式(例如自回归推断)需要 A \textbf A A是一个赫尔维兹矩阵。

从连续角度看,另一种方式看到至一点是线性ODE解是指数形式。我们也可以看到等价卷积形式有脉冲响应 K ( t ) = C e t A B K(t) = \textbf C e^{t\textbf A}\textbf B K(t)=CetAB t → ∞ t\rightarrow\infin t时, K ( t ) = C e t A B K(t) = \textbf C e^{t\textbf A}\textbf B K(t)=CetAB也会爆炸到 ∞ \infin

然而,控制一个常见DPLR矩阵的谱是困难的。在S4的先前版本,我们发现无限制DPLR矩阵在训练胡变成非赫尔维茨(因此不能再无限循环模式中运用)。

为了解决这一点,我们使用DPLR矩阵的小改建,我们称之为赫尔维茨 DPLR形式,我们可以使用参数 Λ − P P ∗ \Lambda - PP^* ΛPP代替 Λ + P Q ∗ \Lambda + PQ^* Λ+PQ。这相当于基本上绑定了参数 Q = − P Q = -P Q=P。注意在技术上这依然是一个DPLR,因此我们使用S4-DPLR算法作为黑盒。

接着,我们讨论这种参数化是如何让S4稳定。高阶想法是SSM的稳定性包含状态矩阵 A \textbf A A的谱,更容易被控制因为 − P P ∗ -\textbf P \textbf P^* PP是半负定矩阵(我们知道它的谱的符号)

Lemma 3. 8 一个矩阵 A = Λ − P P ∗ \textbf A = \Lambda - \textbf P \textbf P^{*} A=ΛPP是赫尔维茨的如果 Λ \Lambda Λ的所有迹有负的实数部分。

证明:我们首先观察到如果 A + A ∗ \textbf A +\textbf A^* A+A是半负定(NSD)的,那么 A \textbf A A是赫尔维茨的。这是因为 0 > v ∗ ( A + A ∗ ) v = ( v ∗ A v ) + ( v ∗ A v ) ∗ = 2 R e ( v ∗ A v ) = 2 λ 0>v^*(A+A^*)v = (v^*Av)+(v^*Av)^* = 2\mathcal Re(v^*Av) = 2\lambda 0>v(A+A)v=(vAv)+(vAv)=2Re(vAv)=2λ对于任何 A A A的(单位长度)本征对来说。之后,注意到条件暗示 A + A ∗ \textbf A +\textbf A^* A+A是半负定(NSD)的(非正数迹的实数对角矩阵)。因为矩阵 − P P ∗ -PP^* PP也是NSD的, A + A ∗ A+A^* A+A也是这样。

Lemma 3.8表明,对于赫尔维兹DPLR表示,控制学习的A矩阵的频谱变成简单地控制对角线部分 Λ \Lambda Λ。这是一个比控制一般DPLR矩阵容易得多的问题,可以通过正则化或重新参数化来强制执行(第3.4.2节)。

Remark 3.7. 赫尔维茨DPLR形式 Λ − P P ∗ \Lambda - PP* ΛPP有更少的参数而且在技术上表现能力差于不受限DPLR形式 Λ + P Q ∗ \Lambda + PQ^* Λ+PQ但在经验上并没有影响模型表现。

Remark 3.8. 潜在的稳定性问题只在使用S4在特定内容如自回归生成时上升,因为S4的卷积模式在训练时并没有升幂 A ‾ \overline {\textbf A} A因此对赫尔维茨矩阵并不是严格要求。在实践中,出于原则,我们仍然总是使用赫尔维茨DPLR。

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

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

相关文章

Blender和3ds Max哪个会是行业未来?

Blender和3ds Max都是很强大的三维建模和渲染软件,各有各的好处。选择哪个软件更好,要看你的需求、预算、技术水平以及行业趋势等因素。 Blender最大的优点是免费且开源,这对预算有限的个人和小团队来说很有吸引力。它有很多建模工具和功能&…

MyBatis介绍

MyBatis是一个优秀的持久层框架(就是将某些数据持久化到硬盘或其他存储器中的框架),它把jdbc对数据库的操作进行了封装,使用户只需关注sql本身,不需要去执行jdbc的那一套复杂的操作。 MyBatis通过配置xml文件或注解的方…

YOLOv9独家改进|动态蛇形卷积Dynamic Snake Convolution与RepNCSPELAN4融合

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、改进点介绍 Dynamic Snake Convolution是一种针对细长微弱的局部结构特征与复杂多变的全局形态特征设计的卷积模块。 RepNCSPELAN4是YOLOv9中的特…

智慧城市的新引擎:物联网技术引领城市创新与发展

目录 一、引言 二、物联网技术与智慧城市的融合 三、物联网技术在智慧城市中的应用 1、智慧交通管理 2、智慧能源管理 3、智慧环保管理 4、智慧公共服务 四、物联网技术引领城市创新与发展的价值 五、挑战与前景 六、结论 一、引言 随着科技的日新月异,物…

图像处理 mask掩膜

1,图像算术运算 图像的算术运算有很多种,比如两幅图像可以相加,相减,相乘,相除,位运算,平方根,对数,绝对值等;图像也可以放大,缩小,旋…

uni-app头像编辑上传

实现比较简单&#xff0c;文档中都有描述&#xff0c;就是第一次做可能会有疏漏&#xff0c;记录一下&#xff1a; <view class"edict-item" click"selectPic"><text class"item-name" :style"$em.$getThemeStyle([avatarConText…

GIT使用学习笔记 远程仓库篇

git clone xxxxx 将远程 你可能注意到的第一个事就是在我们的本地仓库多了一个名为 o/main 的分支, 这种类型的分支就叫远程分支。由于远程分支的特性导致其拥有一些特殊属性。 远程分支反映了远程仓库(在你上次和它通信时)的状态。这会有助于你理解本地的工作与公共工作的差…

ssm核心面试题汇总

文章目录 1. Spring1.1 Spring Beans1.谈谈你对Spring的理解以及优缺点2. 什么是Spring beans3. 配置注册Bean有哪几种方式4. Spring支持的几种bean的作用域5. 单例bean的优势6. 单例bean是线程安全的吗&#xff1f;如何优化为线程安全7. 谈一谈spring bean的自动装配8. Spring…

如何在jupyter notebook 中下载第三方库

在anconda 中找到&#xff1a; Anaconda Prompt 进入页面后的样式&#xff1a; 在黑色框中输入&#xff1a; 下载第三方库的命令 第三方库&#xff1a; 三种输入方式 标准保证正确 pip instsall 包名 -i 镜像源地址 pip install pip 是 Python 包管理工具&#xff0c;…

在排序数组中查找元素的第一个和最后一个位置[中等]

优质博文IT-BLOG-CN 一、题目 给你一个按照非递减顺序排列的整数数组nums&#xff0c;和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值target&#xff0c;返回[-1, -1]。 你必须设计并实现时间复杂度为O(log n)的算法解决此问…

Cookie 探秘:了解 Web 浏览器中的小甜饼

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

华为智慧教室3.0的晨光,点亮教育智能化变革

“教室外有更大的世界&#xff0c;但世界上没有比教室更伟大的地方。” 我们在求学阶段&#xff0c;都听说过这句话&#xff0c;但往往是在走出校园之后&#xff0c;才真正理解了这句话。为了让走出校园的孩子能够有能力&#xff0c;有勇气探索广阔的世界。我们应该准备最好的教…

【Leetcode】1588.所有奇数长度子数组的和

题目描述 思路 题目要求我们求解所有奇数长度数组的和。若暴力循环求解&#xff0c;时间复杂度过高。所以&#xff0c;我们可以采用前缀和优化。 如上图输入arr数组&#xff0c;sum[i]用于计算arr数组中前i个数的和。(在程序中&#xff0c;先给sum[0]赋值&#xff0c;等于arr[0…

平台总线式驱动开发

一、总线、设备、驱动 硬编码式的驱动开发带来的问题&#xff1a; 垃圾代码太多 结构不清晰 一些统一设备功能难以支持 开发效率低下 1.1 初期解决思路&#xff1a;设备和驱动分离 struct device来表示一个具体设备&#xff0c;主要提供具体设备相关的资源&#xff08;如…

Java项目:37 springboot003图书个性化推荐系统的设计与实现

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 springboot003图书个性化推荐系统的设计与实现 管理员&#xff1a;首页、个人中心、学生管理、图书分类管理、图书信息管理、图书预约管理、退…

阿里二面,redis宕机了,如何快速恢复数据

背景 有个同学阿里二面&#xff0c;面试官问&#xff1a;redis宕机了&#xff0c;如何恢复数据&#xff1f; 这位同学当时一脸懵&#xff0c;不知道如何回答。 分析分析这个问题&#xff0c;redis宕机&#xff0c;要想恢复数据&#xff0c;首先redis的数据有没有做持久化&…

基于Java springboot+VUE+redis实现的前后端分类版网上商城项目

基于Java springbootVUEredis实现的前后端分类版网上商城项目 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…

《操作系统真相还原》读书笔记五:mbr初体验

1.编写mbr汇编程序 SECTION MBR vstart0x7c00mov ax,csmov ds,axmov es,axmov ss,axmov fs,axmov sp,0x7c00; 清屏mov ax,0x600mov bx,0x700mov cx,0mov dx, 0x184fint 0x10; 设置光标结束mov ah,3mov bh,0int 0x10mov ax,messagemov bp,axmov cx,5mov ax,0x1301mov bx,0x2 ;…

2.14ALU,存储系统

IR存放当下欲执行的指令&#xff1b;PC存放下一条指令的地址&#xff1b; MAR存放欲访问的存储单元地址&#xff1b;MDR存放从存储单元取来的数据&#xff01; 地址译码器是主存的构成部分&#xff0c;不属于CPU&#xff1b;地址寄存器虽然一般属于主存&#xff0c;但是现代计…

联通移动电信卡推广分销开源版

联通移动电信卡推广分销开源版 一套完善&#xff0c;多功能&#xff0c;的号卡分销系统&#xff0c;多接口&#xff0c;包括运营商接口&#xff0c;无限三级代理&#xff0c; 目前市面上最优雅的号卡系统 自动安装向导 易于安装使用部署 多个第三方接口资源汇聚 &#xff0c;全…
最新文章