【AI学习】Mamba学习(十五):关于S4模型计算优化的再学习

前面理解了S4模型,但是对于具体的优化算法,还是没有完全理解透彻。现在补充学习。

S4 = SSM + HiPPO + Structured Matrices

具体方案:Structured State Spaces (S4)

简单总结:用HiPPO-LegS的矩阵形式初始化SSM,解决训练的稳定性问题。但是,基于卷积的并行化训练,依然处理复杂度很高,需要简化。

对角化

如何简化计算?最直接的思维就是矩阵A的对角化。前面的公式5的卷积形式,矩阵A的L次幂,如果是对角矩阵,计算就可以大大简化。
文章3.1节,给出了这种对角化动机的目的。

在这里插入图片描述

但是文章接着说,不幸的是,由于数值问题,对角化的简单应用在实践中不可行。尽管有其他方法,数值上也不稳定。
为什么数值不稳定,简单看一下,以N=3为例,对角化的结果是:

在这里插入图片描述

“HiPPO 矩阵的对角化涉及到的矩阵元素在状态大小 N 增大时会呈指数级增长,这使得对角化在数值上变得不稳定和不可行”。

那怎么办,3.2节给出方法:将HiPPO 矩阵A分解为正态矩阵和低秩矩阵的和。这样处理后获得了一个反对称矩阵,“重点来了,反对称矩阵不单单一定可以对角化,它一定可以被正交矩阵(复数域叫做酉矩阵)对角化!酉矩阵一般数值稳定性都非常好”。

S4 Parameterization: Normal Plus Low-Rank

前面的讨论意味着我们应该进行共轭计算通过条件良好的矩阵 V 。理想的情况是,当矩阵 A 可由完全条件(即酉)矩阵对角化时。根据线性代数的谱定理,这正是normal矩阵的一类。然而,这类矩阵具有限制性;特别是它不包括HiPPO 矩阵(2)。
我们观察到,尽管 HiPPO 矩阵不是normal矩阵,但它可以被分解为normal和低秩矩阵的和。然而,这本身仍然没有用:与对角矩阵不同,对这个幂进行累加(在(5)中)仍然很慢,也不容易优化。我们通过同时应用三种新技术克服了这一瓶颈。
在这里插入图片描述
上面的描述还是有点抽象,分解来看:

矩阵A分解为Normal Plus Low-Rank (NPLR)形式

在这里插入图片描述
上面说的公式(2)就是下面的LegS形式,对于的低秩r=1
在这里插入图片描述
论文中在附录C.1NPLR Representations of HiPPO Matrices进行了说明。

已知 HiPPO 矩阵A可以表示为:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
“重点来了,可以看到这是一个反对称矩阵,所以它一定可以(在复数域中)对角化!于是我们就将A分解为了可对角化矩阵与低秩矩阵之和!可能有读者质疑,原本 A就 一定是可对角化矩阵,但还是有数值稳定性问题,难道这个反对称矩阵的对角化不用担心数值稳定性问题吗?
重点的重点来了,反对称矩阵不单单一定可以对角化,它一定可以被正交矩阵(复数域叫做酉矩阵)对角化!酉矩阵一般数值稳定性都非常好,所以不用担心这个问题,这也就是为什么我们不直接对角化 ,而绕一圈来构建反对称矩阵的原因。”
在这里插入图片描述
这样就将矩阵A转换为了正规矩阵+低秩矩阵的形式。

但是,论文中指出:然而,这本身仍然没有用:与对角矩阵不同,对这个幂进行累加(在(5)中)仍然很慢,也不容易优化。
公式5见下面:

在这里插入图片描述

生成函数

论文中指出,利用截断的生成函数!

这里的生成函数如何理解?熟悉卷积运算的就知道,卷积运算计算量大,可以先做FFT,在频域变成乘法,然后IFFT。这是利用FFT的简化卷积运算经常使用的方法。只不过,这里傅立叶变换所需要的实际是“截断生成函数”,将无限长度截断为L。
在这里插入图片描述
直观地说,生成函数基本上将SSM卷积滤波器从时域转换为频域。重要的是,它保留了相同的信息,并且可以从其生成函数的评估中恢复所需的SSM卷积滤波器。
这样 就把矩阵的幂的问题转化为矩阵求逆。
在这里插入图片描述

Woodbury Correction

然后,通过Woodbury恒等式来解决低秩问题。
虽然DPLR矩阵由于低秩项而不能有效地求幂,但它们可以通过众所周知的Woodbury恒等式有效地反转。
在这里插入图片描述
有了这个恒等式,我们可以将DPLR矩阵A上的SSM生成函数转换为仅在其对角分量上的生成函数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Cauchy Kernel

在这里插入图片描述
柯西矩阵计算是数值分析中一个研究得非常好的问题,有快速算法和基于著名的快速多极方法(FMM)的快速数值算法。

在这里插入图片描述

在这里插入图片描述
具体第三章涉及的公式推导,可以参见苏神在文章《重温状态空间模型SSM:HiPPO的高效计算(S4)》中的详细推导。

S4模型的处理示意图

在S5的论文中,给出了S4模型的处理示意图。
在这里插入图片描述

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

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

相关文章

【C++】新手入门指南

> 🍃 本系列为初阶C的内容,如果感兴趣,欢迎订阅🚩 > 🎊个人主页:[小编的个人主页])小编的个人主页 > 🎀 🎉欢迎大家点赞👍收藏⭐文章 > ✌️ 🤞 &#x1…

小程序开发进阶之路-AI编程助手

之前,我独自一人开发了一个名为“心情追忆”的小程序,旨在帮助用户记录日常的心情变化及重要时刻。从项目的构思、设计、前端(小程序)开发、后端搭建到最终部署,所有环节都由我一人包办。经过一个月的努力,…

Cursor的chat与composer的使用体验分享

经过一段时间的试用,下面对 Composer 与 Chat 的使用差别进行总结: 一、长文本及程序文件处理方面 Composer 在处理长文本时表现较为稳定,可以对长文进行更改而不会出现内容丢失的情况。而 Chat 在更改长的程序文件时,有时会删除…

【笔记】自动驾驶预测与决策规划_Part6_不确定性感知的决策过程

文章目录 0. 前言1. 部分观测的马尔可夫决策过程1.1 POMDP的思想以及与MDP的联系1.1.1 MDP的过程回顾1.1.2 POMDP定义1.1.3 与MDP的联系及区别POMDP 视角MDP 视角决策次数对最优解的影响 1.2 POMDP的3种常规解法1.2.1 连续状态的“Belief MDP”方法1. 信念状态的定义2. Belief …

Latex公式转换编辑网站

https://editor.codecogs.com/ https://www.latexlive.com/home## https://simpletex.cn/ai/latex_ocr https://webdemo.myscript.com/views/math/index.html# 参考 https://latex.91maths.com/ https://web.baimiaoapp.com/image-to-latex https://blog.csdn.net/qq_45100…

注意力机制的目的:理解语义;编码器嵌入高纬空间计算;注意力得分“得到S*V”;解码器掩码和交叉注意力层用于训练;最终的编码器和输出实现大模型

目录 注意力机制的目的:理解语义中的它是小白兔 词编码器嵌入高纬空间 计算注意力得分“得到S*V” 权重QKV:连接权重 训练阶段使用解码器:翻译后的语句 解码器掩码和交叉注意力层用于训练 最终的编码器和输出实现大模型 Transformer模型中,QKV QKV的作用 举例说明…

【万字详解】如何在微信小程序的 Taro 框架中设置静态图片 assets/image 的 Base64 转换上限值

设置方法 mini 中提供了 imageUrlLoaderOption 和 postcss.url 。 其中: config.limit 和 imageUrlLoaderOption.limit 服务于 Taro 的 MiniWebpackModule.js , 值的写法要 ()KB * 1024。 config.maxSize 服务于 postcss-url 的…

【MatLab手记】 --从0到了解超超超详过程!!!

文章目录 MatLab笔记一、命令行窗口二、变量命名规则三、数据类型1. 数字2. 字符与字符串3. 矩阵3.1 矩阵创建3.2 矩阵的修改和删除3.3 矩阵的拼接与重构重排3.4 矩阵的运算方法3.5 矩阵的下标 4. 元胞数组(类似数据容器)5. 结构体 四、逻辑与流程控制五…

实现uniapp-微信小程序 搜索框+上拉加载+下拉刷新

pages.json 中的配置 { "path": "pages/message", "style": { "navigationBarTitleText": "消息", "enablePullDownRefresh": true, "onReachBottomDistance": 50 } }, <template><view class…

IDM扩展添加到Edge浏览器

IDM扩展添加到Edge浏览器 一般情况下&#xff0c;当安装IDM软件后&#xff0c;该软件将会自动将IDM Integration Module浏览器扩展安装到Edge浏览器上&#xff0c;但在某些情况下&#xff0c;需要我们手动安装&#xff0c;以下为手动安装步骤 手动安装IDM扩展到Edge浏览器 打…

AndroidStudio-常用布局

一、线性布局LinearLayout 线性布局内部的各视图有两种排列方式: 1.orientation属性值为horizontal时&#xff0c;内部视图在水平方向从左往右排列。 2.orientation属性值为vertical时&#xff0c;内部视图在垂直方向从上往下排列。 如果不指定orientation属性&#xff0c;…

Pr 入门系列之八:使用关键帧(上)

不论是固定效果、标准效果或是第三方效果&#xff0c;都可以通过改变属性的值来达到效果控制的目的。 任何动画要表现运动或变化&#xff0c;前后至少要给出属性值的两个不同的关键状态&#xff0c;称之为“关键帧” Keyframe。 而中间状态的变化和衔接&#xff0c;则是由计算机…

万字长文解读深度学习——循环神经网络RNN、LSTM、GRU、Bi-RNN

&#x1f33a;历史文章列表&#x1f33a; 深度学习——优化算法、激活函数、归一化、正则化深度学习——权重初始化、评估指标、梯度消失和梯度爆炸深度学习——前向传播与反向传播、神经网络&#xff08;前馈神经网络与反馈神经网络&#xff09;、常见算法概要汇总万字长文解读…

qt QMovie详解

1、概述 QMovie 是 Qt 框架中用于处理动画文件的类。它支持多种动画格式&#xff0c;包括 GIF 和一些常见的视频格式&#xff08;尽管对视频格式的支持依赖于底层平台&#xff09;。QMovie 类主要用于在 QLabel 或 QGraphicsView 等控件中显示动画。通过加载动画文件&#xff…

ip addr show

本文内容来自智谱清言 ip addr show 是 Linux 系统中用于显示网络接口配置的命令。这个命令属于 iproute2 软件包&#xff0c;该软件包在大多数 Linux 发行版中都是预安装的。ip addr show 命令可以用来查看所有网络接口的当前配置&#xff0c;或者指定某个特定接口的配置。 …

【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程

1. 简介 ESP32支持5种低功耗模式&#xff0c;低功耗管理单元包括调压器、功耗控制器、电源开关单元、电源域隔离单元 (Isolation Cell) 等部分。 1.1 RTC单元 RTC单元是ESP32低功耗管理的核心&#xff0c;可用于管理低功耗模式的进入和退出&#xff0c;控制时钟源、PLL、电源开…

重学 Android 自定义 View 系列(三):自定义步数进度条

前言 本篇文章主要是实现仿QQ步数View&#xff0c;很老的一个View了&#xff0c;但技术永不落后&#xff0c;开搂&#xff01; 最终效果如下&#xff1a; 1. 结构分析 QQStepView 主要由三个元素组成&#xff1a; 显示一个圆环进度条&#xff0c;通过外环和内环的角度变化来…

Spring中的过滤器和拦截器

Spring中的过滤器和拦截器 一、引言 在Spring框架中&#xff0c;过滤器&#xff08;Filter&#xff09;和拦截器&#xff08;Interceptor&#xff09;是实现请求处理的两种重要机制。它们都基于AOP&#xff08;面向切面编程&#xff09;思想&#xff0c;用于在请求的生命周期…

查缺补漏----用户上网过程(HTTP,DNS与ARP)

&#xff08;1&#xff09;HTTP 来自湖科大计算机网络微课堂&#xff1a; ① HTTP/1.0采用非持续连接方式。在该方式下&#xff0c;每次浏览器要请求一个文件都要与服务器建立TCP连接当收到响应后就立即关闭连接。 每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引…

C++之vector类的模拟实现

片头 嗨~小伙伴们&#xff0c;今天我们来一起学习关于C的vector类的模拟实现&#xff0c;准备好了吗&#xff1f;咱们开始咯~ 一、基本框架 namespace bit {template<class T>class vector {public:typedef T* iterator;typedef const T* const_iterator;// 针对const修…