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

文章目录

    • 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_imagdA, dB = (1 + dt * A /2) / (1 - dt * A / 2), dt * B / (1 - dt * A / 2)#计算(范德蒙矩阵乘法-可以被优化)#返回实部两倍-核添加共轭对相同return 2 * ((B * C) @ (dA[:, None] ** np.arrange(L))).realdef forward(u, parameters):L = u.shape[-1]K = kernel(L, *parameters)#用FFT卷积 y = u * KK_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.mzph.cn/news/724277.shtml

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

相关文章

LLM量化、高保真图生视频、多模态肢体运动生成、高分辨率图像合成、低光图像/视频增强、相机相对姿态估计

本文首发于公众号:机器感知 LLM量化、高保真图生视频、多模态肢体运动生成、高分辨率图像合成、低光图像/视频增强、相机相对姿态估计 EasyQuant: An Efficient Data-free Quantization Algorithm for LLMs Large language models (LLMs) have proven to be very s…

android实战视频教程,flutter开发实战详解pdf

前言 这是一篇软文、但是绝对不是鸡汤;为啥不是呢?因为我文笔太差…偶尔矫情发发牢骚(勿喷) 说说程序猿行业 现在社会上给IT行业贴上了几个标签:高薪、高危、高大上、秃顶(哈哈)。这些标签我…

C++的类与对象(三)

目录 类的6个默认成员函数 构造函数 语法 特性 析构函数 特性 类的6个默认成员函数 问题:一个什么成员都没的类叫做空类,空类中真的什么都没有吗? 基本概念:任何类在什么都不写时,编译器会自动生成以下六个默认…

Linux 性能优化的全景指南,都在这一篇里了,建议收藏!

Linux 性能优化 性能指标 高并发和响应快对应着性能优化的两个核心指标:吞吐和延时 应用负载角度:直接影响了产品终端的用户体验 系统资源角度:资源使用率、饱和度等 性能问题的本质就是系统资源已经到达瓶颈,但请求的处理还…

MySQL下实现纯SQL语句的递归查询

需求 有一个部门表,部门表中有一个字段用于定义它的父部门; 在实际业务中有一个『部门中心』的业务; 比如采购单,我们需要显示本部门及子部门的采购单显示出来。 结构 数据如下: 实现方式如下: WITH RECUR…

内衣洗衣机名牌排行榜前十名:十款强大性能内衣洗衣机精心力荐

小型内衣洗衣机一般是为婴儿宝宝,或者一些有特殊需要的用户而设计使用的,宝宝衣物换洗频繁,而且对卫生方面的除菌要求高,而为避免交叉感染,所以一般不适合和大人的衣物放在一起洗,因此对于有宝宝的家庭来说…

Android多线程实现方式及并发与同步,Android面试题汇总

一. 开发背景 想要成为一名优秀的Android开发,你需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样。 我们的项目需要开发一款智能硬件。它由 Web 后台发送指令到一款桌面端应用程序,再由桌面程序来控制不同的硬件设…

Plasmo框架开发浏览器插件配置newtab页面,并可以跳转

有关plasmo框架添加页面可以看官方文档:Browser Extension Pages – Plasmo 想要给插件添加一个页面,可以通过添加newtab.tsx添加: 或者通过添加tabs文件夹添加多个页面: 想要访问的话,只需要通过:chrome-…

Python爬虫实战第三例【三】【上】

零.实现目标 爬取视频网站视频 视频网站你们随意,在这里我选择飞某速(狗头保命)。 例如,作者上半年看过的“铃芽之旅”,突然想看了,但是在正版网站看要VIP,在盗版网站看又太卡了,…

2024年腾讯云轻量16核32G28M服务器优惠价格3468元15个月

2024年腾讯云轻量16核32G28M服务器优惠价格3468元15个月,380GB SSD云硬盘,6000GB月流量。 一张表看懂腾讯云服务器租用优惠价格表,一目了然,腾讯云服务器分为轻量应用服务器和云服务器CVM,CPU内存配置从2核2G、2核4G、…

Linux下du命令和df命令的使用

du命令作用是估计文件系统的磁盘已使用量,常用于查看文件或目录所占磁盘容量。df命令是统计磁盘使用情况,可以用来查看磁盘已被使用多少空间和还剩余多少空间。du命令语法du [选项] [文件或目录名称]参数:-a:--all, 列…

C#,数值计算,求解微分方程的预测校正法(修正欧拉法)算法与源代码

Leonhard Euler 1 微分方程 微分方程,是指含有未知函数及其导数的关系式。解微分方程就是找出未知函数。 微分方程是伴随着微积分学一起发展起来的。微积分学的奠基人Newton和Leibniz的著作中都处理过与微分方程有关的问题。微分方程的应用十分广泛,可…

To 有缘看到的朋友,To myself

To 有缘看到的朋友,To myself 零、00时光宝盒 我们生而为人,而不是什么神仙妖怪,自然逃不脱凡尘种种不易。 世界并不完美,面对很多事情我们都很无奈甚至悲哀,但生活总要继续下去,当困难悄悄地来临&#xff…

【vue3之组合式API】

组合式API 一、setup1.写法2.如何访问3.语法糖4.同步返回对象 二、reactive()和ref()1.reactive()2.ref() 三、computed四、watch函数1侦听单个数据2.侦听多个数据3. immediate4. deep5.精确侦听对象的某个属性 五、生命周期函数六、组件通信1.父传子2. 子传父 七、模版引用1. …

shell脚本一键部署docker

Docker介绍 Docker 是一个开源的平台,用于开发、交付和运行应用程序。它利用容器化技术,可以帮助开发人员更轻松地打包应用程序及其依赖项,并将其部署到任何环境中,无论是开发工作站、数据中心还是云中。以下是 Docker 的一些关键…

【Linux】软件包管理器yum

目录 一、yum是什么? 二、查看软件包 三、安装与卸载软件 1、如何安装软件 2、如何卸载软件 四、yum源的配置 一、yum是什么? 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人…

如何在华为云服务器部署安防监控EasyCVR平台?

随着视频技术的快速发展,安防视频汇聚平台EasyCVR可支持的协议也在不断拓展,平台兼容多类型的协议接入,包括:国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK,如:海康ehome、海康sdk、大…

YOLOv7创新改进:SPPF创新涨点篇 | SPPELAN:SPP创新结合ELAN ,效果优于SPP、SPPF| YOLOv9

💡💡💡本文独家改进:新颖SPPF创新涨点改进,SPP创新结合ELAN,来自于YOLOv9,助力YOLOv7,将SPPELAN代替原始的SPPF 💡💡💡在多个私有数据集和公开数据集VisDrone2019、PASCAL VOC实现涨点 收录 YOLOv7原创自研 https://blog.csdn.net/m0_63774211/category…

C语言常见关键字:一文打尽

关键字 1. 前言2. 什么是关键字3. extern-声明外部符号4. auto-自动5. typedef-类型重定义(类型重命名)6. register-寄存器6.1 存储器6.2 register关键字的作用 7. static-静态7.1 static修饰局部变量7.1.1 代码对比7.1.2 原理分析 7.2 static修饰全局变…

Java中常见延时队列的实现方案总结

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…