【AI学习】Mamba学习(十二):深入理解S4模型

#1024程序员节|征文#

HiPPO的学习暂告一段落,按照“HiPPO->S4->Mamba 演化历程”,接着学习S4。

S4对应的论文:《Efficiently Modeling Long Sequences with Structured State Spaces》
文章链接:https://ar5iv.labs.arxiv.org/html/2111.00396,https://arxiv.org/abs/2111.00396

上一篇文章初步了解了S4(Structured State Space sequence model)这个序列模型,接下来深入学习一下。

文章的第二章讲述了算法背景,接着学习。从第二章可以看出,发展到S4模型,作者才引入了SSM,而HiPPO那篇论文是没有提到SSM的。

2、S4背景:状态空间

在这里插入图片描述

图1中的四个属性描述了状态空间模型(SSM):经典的连续时间表示、用HiPPO框架解决长距离依赖问题、离散时间递归表示,以及可并行化的卷积表示。特别是2.4节介绍了SSM卷积核K,这是我们在第3节中理论贡献的重点。

2.1 状态空间模型:连续时间潜在状态模型

状态空间模型由简单的方程(1)定义。它将一维输入信号u(t)映射到N维潜在状态x(t),然后投影到一维输出信号y(t)。
在这里插入图片描述
SSM在许多科学学科中广泛使用,并且与潜在状态模型如隐马尔可夫模型(HMM)相关。我们的目标是简单地将SSM作为一个黑盒表示,用于深度序列模型,其中A、B、C、D是梯度下降学习的参数。在本文的其余部分,为了表述方便,我们将省略参数D(或者等价地,假设D = 0),因为项Du可以被视为一个跳跃连接,并且容易计算。

前面说过,Du项相当于残差连接,而整个模型中一般也有残差连接,可以合并到整个模型,而在SSM方程这里省略。

2.2 用HiPPO解决长距离依赖问题

先前的工作发现基本的SSM(1)在实践中实际上表现非常差。直观地,一个解释是线性一阶ODEs解决为指数函数,因此可能遭受梯度在序列长度上呈指数增长(即,梯度消失/爆炸问题[32])。为了解决这个问题,线性状态空间层(LSSL)利用了连续时间记忆的HiPPO理论[16]。HiPPO指定了一类特定的矩阵A∈RN×N,当它们被纳入(1)时,允许状态x(t)记忆输入u(t)的历史。这个类别中最重要的矩阵由方程(2)定义,我们将称之为HiPPO矩阵。例如,LSSL发现简单地将SSM从随机矩阵A修改为方程(2)将其在顺序MNIST基准测试上的性能从60%提高到98%。

在这里插入图片描述

2.3 离散时间SSM:递归表示

为了在离散输入序列(u0, u1, …)上应用而不是连续函数u(t),(1)必须通过一个步长∆来离散化,该步长表示输入的分辨率。从概念上讲,输入uk可以被视为对隐含的连续信号u(t)的采样,其中uk = u(k∆)。
为了离散化连续时间SSM,我们遵循先前的工作,使用双线性方法[43],将状态矩阵A转换为近似A。离散SSM是:
在这里插入图片描述

方程(3)现在是序列到序列的映射uk → yk,而不是函数到函数的映射。此外,状态方程现在是一个递归的xk,允许离散SSM像RNN一样计算。具体来说,xk ∈ RN可以被视为具有转换矩阵在这里插入图片描述的隐藏状态。

从符号上讲,本文中我们使用AB、…来表示由(3)定义的离散SSM矩阵。注意,这些矩阵是A和步长∆的函数;当它清晰时,我们为了符号方便而省略了这种依赖。

2.4 训练SSM:卷积表示

递归SSM(3)不适用于在现代硬件上进行训练,因为它是顺序的。相反,线性时不变(LTI)SSM(如(1))和连续卷积之间有一个众所周知的联系。相应地,(3)实际上可以写成一个离散卷积。
为了简单起见,让初始状态为x−1 = 0。然后展开(3)得到
在这里插入图片描述

这可以向量化为一个卷积(4),并为卷积核(5)提供一个明确公式。
在这里插入图片描述

换句话说,方程(4)是一个单一的(非循环)卷积,并且可以使用FFTs高效计算,前提是K是已知的。然而,计算(5)中的K并非易事,这是我们在第3节中技术贡献的重点。我们称K为SSM卷积核或滤波器。

个人说明

前面介绍部分就提到“SSM由于具体的理论原因,它尚未适用于深度学习。深度 SSM 实际上即使在简单的任务上也很困难,但当配备最近为解决连续时间记忆(就是HiPPO)问题而导出的特殊状态矩阵 A 时,可以表现得非常好”。第二章部分进一步阐释,“基本的 SSM在实践中表现非常差。直观地说,一种解释是线性一阶常微分方程解为指数函数,因此可能会受到序列长度中梯度指数缩放的影响(即消失/爆炸梯度问题)。”其实,熟悉RNN的训练就会知道,RNN的训练就面临梯度爆炸或消失的问题。

S4 这里选取的矩阵 A 为 HiPPO-LegS的矩阵形式, 但是LegS 所满足的 ODE 是矩阵A、B下面要除以t的。就是下面的形式:
在这里插入图片描述

不知道为啥HiPPO-LegS的矩阵形式直接用到SSM方程效果就可以很好。
这里面有点奇怪,回头需要再看看相关论文:《Legendre memory units: Continuous-time representation in recurrent neural networks. In Advances in Neural Information Processing Systems, pages 15544–15553, 2019.》
苏神在文章《重温状态空间模型SSM:HiPPO的高效计算(S4)》也进行了分析,这种修改之后,导致时间度量无法对整个历史平均的取权重,而是历史信息呈现指数衰减的效应,就是更看重时间较近的信息。

离散时间 SSM这里的离散化还是使用了双线性的近似方式,没有采用解析解。要在后面Mamba模型才使用离散化的解析解。

在前面介绍部分,就提到,深层 SSM 原则上可以解决 LRD 问题,但是由于状态表示引起的计算和内存要求过高,LSSL 在实践中不可行。以及,“尽管提出了 LSSL 的 理论上有效的算法,但这些算法在数值上是不稳定的。特别是,特殊 A 矩阵在线性代数意义上是高度非正规的,这阻碍了传统算法技术的应用。因此,尽管 LSSL 表明 SSM 具有很强的性能,但它们目前作为通用序列建模解决方案在计算上是不切实际的。”这就引出了下一章,具体的S4方法。

注:正规矩阵的一个重要性质是它可以经过一个‌酉变换变为对角矩阵。厄米矩阵(Hermitian matrices)和酉矩阵(unitary matrices)都是正规矩阵的典型例子。

3、Method: Structured State Spaces (S4)

具体方法,咱们直接跳到最终方法部分:
在这里插入图片描述
这个方法,就是把HiPPO 矩阵A分解为正规矩阵和低秩矩阵的和。这个分解的目的,就是为了方便的实现矩阵A的对角化。
为什么要对角化?为了计算简便。前面的公式5的卷积形式,矩阵A的L次幂,如果是对角矩阵,计算就可以大大简化。

文章3.1节,给出了这种对角化动机的目的。
在这里插入图片描述
但是文章接着说,不幸的是,由于数值问题,对角化的简单应用在实践中不可行。尽管有其他方法,数值上也不稳定。

那怎么办,3.2节给出方法:将HiPPO 矩阵A分解为正态矩阵和低秩矩阵的和。这样处理后获得了一个反对称矩阵,“重点来了,反对称矩阵不单单一定可以对角化,它一定可以被正交矩阵(复数域叫做酉矩阵)对角化!酉矩阵一般数值稳定性都非常好”。
在这里插入图片描述
这里的生成函数如何理解?其实也简单,熟悉卷积运算的就知道,卷积运算计算量大,可以先做FFT,在频域变成乘法,然后IFFT。这是利用FFT的简化卷积运算经常使用的方法。只不过,这里傅立叶变换所需要的实际是“截断生成函数”,将无限长度截断为L。
在这里插入图片描述
最后,再总结一下S4的架构细节。
在这里插入图片描述
具体第三章涉及的公式推导,可以参见苏神在文章《重温状态空间模型SSM:HiPPO的高效计算(S4)》中的详细推导。

最后

再重温一下上篇《Mamba学习(十一):S4》提到的问题和S4的方法:

解决的主要问题
  • 序列建模中长距离依赖(LRDs)的有效处理。
  • 现有模型在处理非常长序列时的局限性。
  • 先前基于SSM的方法在计算和内存需求上的高成本问题。
方法
  • 提出了S4模型,它基于SSM的新参数化,通过将状态矩阵A分解为低秩和正规项的和,使得A可以被稳定地对角化。
  • 利用Woodbury identity和Cauchy核的计算,将SSM的计算复杂度从O(N^2L)降低到O(N+L),其中N是状态维度,L是序列长度。
  • 在多个任务和数据集上验证了S4模型的性能,包括顺序CIFAR-10、WikiText-103语言建模、图像分类和时间序列预测等。

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

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

相关文章

【移动应用开发】界面设计(二)实现水果列表页面

续上一篇博客 【移动应用开发】界面设计(一)实现登录页面-CSDN博客 目录 一、采用ViewBinding实现一个RecyclerView 1.1 在app/build.gradle中添加recyclerview依赖,并打开viewBinding (1)在app/build.gradle中添加…

CORS预检请求配置流程图 srpingboot和uniapp

首先要会判断预检请求 还是简单请求 简单请求 预检请求 #mermaid-svg-1R9nYRa7P9Pll4AK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1R9nYRa7P9Pll4AK .error-icon{fill:#552222;}#mermaid-svg-1R9nYRa7P9Pll4…

智能园艺:Spring Boot植物健康系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理植物健康系统的相关信息成为必然。开发合适…

51单片机——OLED显示图片

取模软件:链接:https://pan.baidu.com/s/1UcrbS7nU4bsawNxsaaULfQ 提取码:gclc 1、如果图片大小和格式不合适,可以先用Img2Lcd软件进行调整图片大小,一般取模软件使用的是.bmp图片,可以进行输出.bmp格式。软件界面如下&#xff1…

开源vGPU方案 HAMi实现细粒度GPU切分——筑梦之路

前言 为什么需要 GPU 共享、切分等方案? 在使用GPU的过程中我们会发现,直接在裸机环境使用,都可以多个进程共享 GPU,怎么到 k8s 环境就不行了? 1. 资源感知 在 k8s 中资源是和节点绑定的,对于 GPU 资源…

打包方式-jar和war的区别

1、jar包 JAR包是类的归档文件,与平台无关的文件格式,其实jar包就是java的类进行编译生成的class文件进行打包的压缩包。 JAR以ZIP文件格式为基础,与ZIP不同的是,JAR不仅用于压缩和发布,还用于部署和封装库、组件和插…

R实验——logistic回归、LDA、QDAKNN

数据集介绍: mpg,miles per gallon即油耗,这个数据集来自卡内基梅隆大学维护的StatLib库。1983年美国统计协会博览会使用了该数据集。这个数据集是对StatLib库中提供的数据集稍加修改的版本。根据Ross Quinlan(1993)在预测属性“mpg”中的使…

利用飞腾派进行OpenCV开发

实验目标: 完成飞腾平台OpenCV开发。 实验大纲: Mat数据结构加载、显示、保存图像读写像素RGB图像分离彩色图转灰度图 Mat数据结构 Mat是一个类,由两个数据部分组成:矩阵头(大小,通道,数据类型等)和数据块(像素 值)。创建示例…

vue3 选中对话框时,对话框右侧出一个箭头

先看下做出的效果&#xff1a; html代码&#xff0c;其中listPlan.records是后台拿到的数据进行遍历 <template><ul class"list"><li style"height: 180px;width: 95%":key"index"v-for"(item, index) in listPlan.record…

Android 判断手机放置的方向

#1024程序员节&#xff5c;征文# 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 需求 老板&#xff1a;我有个手持终端&#xff0c;不能让他倒了&#xff0c;当他倒或者倾斜的时候要发出报警&#xff1b; 程序猿&#xff1a;我这..... 老板…

Servlet(三)-------Cookie和session

一.Cookie和Session Cookie和Session都是用于在Web应用中跟踪用户状态的技术。Cookie是存储在用户浏览器中的小文本文件&#xff0c;由服务器发送给浏览器。当用户再次访问同一网站时&#xff0c;浏览器会把Cookie信息发送回服务器。例如&#xff0c;网站可以利用Cookie记住用…

Python与MySQL

一、Python 操作 MySQL 数据库软件 我们在上一篇文章《SQL入门》中使用了图形化工具DBeaver操作MySQL数据库软件&#xff0c;除了使用图形化工具以外&#xff0c;我们也可以使用编程语言来执行 SQL 从而操作数据库&#xff0c;可以在 Python 中&#xff0c;使用第三方库 pymys…

设计师的新宠:7款不容错过的界面设计软件

在UI设计领域&#xff0c;设计师们常常需要借助各种工具来实现他们的创意。市场上众多的设计软件让设计师们有了丰富的选择&#xff0c;但同时也带来了选择困难。一个好的软件界面设计工具不仅能提升工作效率&#xff0c;还能为设计师提供丰富的资源和参考&#xff0c;帮助他们…

Python:背景知识及环境安装

一、计算机的基础概念 1.1 什么是计算机&#xff1f; 最早我们有计算器&#xff0c;但是他只能完成算数运算的功能 而计算机能完成的工作有&#xff1a; &#xff08;1&#xff09;算术运算 &#xff08;2&#xff09;逻辑判断 &#xff08;3&#xff09;数据存储 &#xff08…

使用AutoDL训练YOLO等计算机视觉网络模型(AutoDL+Xftp+VS Code),附详细操作步骤

前言 本文记录利用AutoDL云服务器&#xff0c;使用VS Code远程连接进行模型训练&#xff0c;步骤完整&#xff0c;操作简便&#xff0c;不需要使用任何命令即可快速运行&#x1f680;。 专栏目录&#xff1a;YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Bac…

分享几个办公类常用的AI工具

办公类 WPS AI讯飞智文iSlideProcessOn亿图脑图ChatPPT WPS AI 金山办公推出的协同办公 AI 应用&#xff0c;具有文本生成、多轮对话、润色改写等多种功能&#xff0c;可以辅助用户进行文档编辑、表格处理、演示文稿制作等办公操作。 https://ai.wps.cn/ 讯飞智文 科大讯飞推…

博弈论 C++

前置知识 若一个游戏满足&#xff1a; 由两名玩家交替行动在游戏进行的任意时刻&#xff0c;可以执行的合法行动与轮到哪位玩家无关不能行动的玩家判负 则称该游戏为一个公平组合游戏。 尼姆游戏&#xff08;NIM&#xff09;属于公平组合游戏&#xff0c;但常见的棋类游戏&…

企业数字化转型建设方案(数据中台、业务中台、AI中台)

方案介绍&#xff1a; 企业数字化转型建设方案中的数据中台是企业数字化转型的核心基础设施&#xff0c;负责数据的整合、治理、共享和应用&#xff0c;将数据转化为资产&#xff0c;服务于业务决策和运营。业务中台是连接数据中台和技术中台的桥梁&#xff0c;负责业务的抽象…

Redis Search系列 - 第六讲 基准测试 - Redis Search VS. MongoDB VS. ElasticSearch

目录 一、引言二、Redis Search 2.x版本的性能提升三、Redis Search VS. MongoDB VS. ElasticSearch3.1 测试环境3.2 100%写 - 基准测试3.3 100%读 - 基准测试3.4 混合读/写/搜索 - 基准测试2.5 搜索延迟分析3.6 读延迟分析3.7 写延迟分析3.8 Redis Search VS. ElasticSearch3.…

DSPy:不需要手写prompt啦,You Only Code Once!

论文地址&#xff1a;https://arxiv.org/abs/2310.03714   项目地址&#xff1a;https://github.com/stanfordnlp/dspy 文章目录 1. 背景2. 签名3. 模块3.1 预测模块3.2 其他内置模块 4. 提词器5. 评估目标6. 代码分析6.1 _prepare_student_and_teacher6.2 _prepare_predicto…