【AI学习】Mamba学习(十三):简单了解S5模型,S5论文速读

news2024/11/24 22:41:53

学习了S4模型后,简单看一下S5模型。

来自两篇文章的摘要

苏神在文章《重温状态空间模型SSM:HiPPO的高效计算(S4)》中简单提到了S5模型:

由于 HiPPO 的推导是基于u(t)是一维函数进行的,所以到目前为止,S4 的输入uk也都还是标量。那么 S4 怎么处理向量序列输入呢?
非常暴力,它直接对每个分量独立地应用一遍前述线性状态方程,每个方程使用不同的Δ, B, C参数,然后将结果拼接起来,这个做法直到作者最新的 Mamba 依然还被应用。
当然,也有简化的做法,直接在单个 RNN 中处理向量输入,只需要相应地将 B, C改为矩阵就行,这就是 S5 (作者不是 Albert Gu 了),这种做法可以理解为单纯借用了 S4 的线性 RNN 形式以及 HiPPO 的矩阵A,而抛开了 HiPPO 的其他细枝末节,也取得了不错的效果。

Mamba 对向量的处理方式

《一文通透想颠覆Transformer的Mamba:从SSM、HiPPO、S4到Mamba》中也提到Mamba的这种处理方式:

每个序列中每个token的维度为D,Mamba 的处理方式是,给这 D 个 dimension的每个 dimension 都搞一个独立的 SSM,即SSM被独立地应用于每个通道(To operate over an input sequence 𝑥 of batch size 𝐵 and length 𝐿 with 𝐷 channels, the SSM is applied independently to each channel)

如何理解:“每个 dimension 都搞一个独立的 SSM”这点呢?
比如在transformer论文中,一个token便有512大小的维度,如此便可以为每个维度均创建一个状态空间SSM,且每个维度之间彼此独立
其实这个做法也类似transformer中的多头注意力,头与头之间彼此独立,夸张点说,虽然在transformer论文中,每个token有8个注意力头(每个头的维度为64),但你如果要弄成512个注意力头 也没人会拦着你(每个头的维度为1)
在这里插入图片描述

S5 论文速读

S5模型来自文章《Simplified State Space Layers for Sequence Modeling》
文章链接:https://arxiv.org/abs/2208.04933 https://ar5iv.labs.arxiv.org/html/2208.04933

定义

S4:structured state space sequence model
S5:Parallelizing Linear State Space Models With Scans

摘要

使用结构化状态空间序列(S4)层的模型在长距离序列建模任务中取得了最先进的性能。S4层结合了线性状态空间模型(SSM)、HiPPO框架和深度学习来实现高性能。我们以S4层的设计为基础,引入了一个新的状态空间层,即S5层。S4层使用许多独立的单输入、单输出SSM,而S5层使用一个多输入、多输出SSM。我们在S5和S4之间建立了一个连接,并利用它来开发S5模型所使用的初始化和参数化。其结果是,状态空间层可以利用高效且广泛实施的并行扫描,使S5的计算效率与S4相匹配,同时在几个远程序列建模任务上实现了最先进的性能。S5在远程竞技场基准测试中的平均得分为87.4%,在最困难的Path-X任务中的平均分为98.5%。

介绍

在这里插入图片描述

高效地对长序列进行建模是机器学习中的一个挑战性问题。解决任务所需的信息可能编码在相隔数千个时间步长的观测之间。为了解决这一问题,已经开发了专门化的循环神经网络(RNNs)、卷积神经网络(CNNs)和transformers的变体。特别是,为了解决标准transformers在序列长度上的二次复杂度问题,引入了许多高效的transformers方法,但这些更高效的变换器在非常长的序列任务上的表现仍然不佳。

Gu等人(2021a)提出了一种使用结构化状态空间序列(S4)层的替代方法。S4层通过许多独立的单输入单输出(SISO)线性状态空间模型(SSMs)来定义非线性序列到序列的转换,并通过非线性混合层将它们耦合在一起。每个SSM利用HiPPO框架通过使用特别构建的状态矩阵进行初始化。由于SSMs是线性的,每个层可以等价地实现为卷积,然后可以通过在序列长度上并行化来高效应用。多个S4层可以堆叠在一起创建深度序列模型。这样的模型在长序列建模任务上取得了显著的改进,包括在特别设计的长范围竞技场(LRA)基准测试上,该基准测试旨在严格测试长序列模型。扩展已经显示出在原始音频生成和长电影片段分类方面的良好性能。

文章引入了一种新的状态空间层,即S5层,如图1所示。S5在两个主要方面简化了S4层。首先,S5使用一个多输入多输出(MIMO)SSM代替S4中的许多独立SISO SSM。其次,S5使用高效且广泛实现的并行扫描。这消除了S4使用的卷积和频域方法的需要,后者需要非平凡的卷积核计算。

由此产生的状态空间层具有与S4相同的计算复杂性,但完全以递归方式在时域中操作。然后建立了S4和S5之间的数学关系。这种联系允许继承对S4成功至关重要的HiPPO初始化方案。不幸的是,S4用于初始化的特定HiPPO矩阵不能以数值稳定的方式对角化以供S5使用。然而,与DSS层和S4D层的最新工作一致,我们发现HiPPO矩阵的对角近似可以实现相当的表现。我们将Gu等人(2022)的结果扩展到MIMO设置中,为在S5中使用对角近似提供了理论依据。我们利用S4和S5之间的数学关系来通知参数化和初始化的其他几个方面,我们进行了彻底的消融研究,以探索这些设计选择。

最终的S5层具有许多理想属性。它易于实现,在序列长度上具有线性复杂性,并且可以高效地处理时变SSM和不规则采样的观测(这在S4的卷积实现中是不切实际的)。S5在各种长序列建模任务上实现了最先进的性能,LRA平均为87.4%,在最困难的Path-X任务上达到了98.5%的准确率。

背景

在这里插入图片描述
针对S5模型的背景。
在这里插入图片描述
在这里插入图片描述

S5 Layer

描述了S5的结构、参数化和计算,特别关注这些方面与S4的不同之处
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
初始化 先前的工作表明,深度状态空间模型的性能对状态矩阵的初始化很敏感。我们在第2.2节中讨论了,为了有效应用并行扫描,状态矩阵必须是对角的。我们也在第2.3节中讨论了,HiPPO-LegS矩阵不能稳定地对角化,但是HiPPO-N矩阵可以。在第4节中,我们将S5的动态与S4联系起来,以建议为什么在MIMO设置中使用类似HiPPO的矩阵进行初始化也可以很好地工作。我们通过实验支持这一点,发现使用HiPPO-N矩阵对角化可以带来良好的性能,并在附录E中进行消融研究,与其他初始化进行比较。我们注意到DSS(Gupta等人,2022)和S4D(Gu等人,2022)层也通过使用HiPPO-N矩阵的对角化在SISO设置中发现强大的性能。

共轭对称性 具有实数条目的可对角化矩阵的复数特征值总是成共轭对出现。我们通过使用一半数量的特征值和潜在状态来强制执行这种共轭对称性。这确保了实数输出,并将并行扫描的运行时间和内存使用减少了一半。这个想法也在Gu等人(2022)中讨论过。

在这里插入图片描述
在这里插入图片描述

S4与S5之间的关系

现在建立S4和S5之间的联系。在4.1节中,我们展示在特定条件下,S5 SSM的输出可以被看作是某个特定S4系统计算出的潜在状态的投影。这种联系让我们可以继承S4成功的关键——HiPPO初始化方案。不幸的是,S4用于初始化的特定HiPPO矩阵不能以数值稳定的方式对角化,以适应S5使用的高效并行扫描。然而,与DSS(Gupta et al., 2022)和S4D(Gu et al., 2022)层的最新工作一致,我们发现对HiPPO矩阵的对角近似可以实现相当的性能。我们将Gu等人(2022)的结果扩展到MIMO设置中,为在S5中使用对角近似提供了理论依据。我们利用S4和S5之间的数学关系来指导参数化和初始化的其他几个方面,并且我们进行了彻底的消融研究来探索这些设计选择。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

博弈论 C++

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

揭开C++ STL的神秘面纱之string:提升编程效率的秘密武器

目录 🚀0.前言 🚈1.string 构造函数 🚝1.1string构造函数 🚝1.2string拷贝构造函数 🚈2.string类的使用 🚝2.1.查询元素个数或空间 返回字符串中有效字符的个数:size lenth 返回字符串目…

micro-app【微前端实战】主应用 vue3 + vite 子应用 vue3+vite

micro-app 官方文档为 https://micro-zoe.github.io/micro-app/docs.html#/zh-cn/framework/vite 子应用 无需任何修改,直接启动子应用即可。 主应用 1. 安装微前端框架 microApp npm i micro-zoe/micro-app --save2. 导入并启用微前端框架 microApp src/main.ts …

2024软考网络工程师笔记 - 第8章.网络安全

文章目录 网络安全基础1️⃣网络安全威胁类型2️⃣网络攻击类型3️⃣安全目标与技术 🕑现代加密技术1️⃣私钥密码/对称密码体制2️⃣对称加密算法总结3️⃣公钥密码/非对称密码4️⃣混合密码5️⃣国产加密算法 - SM 系列6️⃣认证7️⃣基于公钥的认证 &#x1f552…

为微信小程序换皮肤之配置vant

微信小程序自带的控件虽然具有很好的通用性和简洁性,但在面对一些复杂的交互场景和个性化的设计需求时,可能会显得力不从心。其功能的相对基础使得开发者在实现诸如多步骤复杂表单提交、实时数据交互与可视化展示、高度定制化的界面布局等方面&#xff0…

Navicat 安装

Navicat 安装步骤

qt 下载安装

1. 官网地址 https://www.qt.io/ 2. 下载 使用邮箱注册账号,登录,后边安装时也用的到 登录后: 这里需要电话号验证,电话号需要正确的,其他随便填,电话号中国区前需要86, 验证后自动下载 …

[CSP-J 2023] 一元二次方程(模拟)

变态的大模拟…… 洛谷题目传送门https://www.luogu.com.cn/problem/P9750 解题思路 主要还是模拟&#xff0c;题目让你求啥你就求啥&#xff0c;要注意细节。 然后化简根式的可以用质因数分解一下即可。 代码 #include<bits/stdc.h> using namespace std; #define …

opencv 图像翻转- python 实现

在做图像数据增强时会经常用到图像翻转操作 flip。 具体代码实现如下&#xff1a; #-*-coding:utf-8-*- # date:2021-03 # Author: DataBall - XIAN # Function: 图像翻转import cv2 # 导入OpenCV库path test.jpgimg cv2.imread(path)# 读取图片 cv2.namedWindow(image,1) …

C++基础与实用技巧第三节:内存管理与性能优化

第二章&#xff1a;C基础与实用技巧 第三节&#xff1a;内存管理与性能优化 1. 动态内存的管理策略与技巧 动态内存管理是C编程的核心部分之一&#xff0c;合理管理内存可以极大提高程序的性能和稳定性。在C中&#xff0c;动态内存的分配和释放通常使用new和delete运算符&am…

LeetCode_2427. 公因子的数目_java

1、题目 2427. 公因子的数目https://leetcode.cn/problems/number-of-common-factors/ 给你两个正整数 a 和 b &#xff0c;返回 a 和 b 的 公 因子的数目。 如果 x 可以同时整除 a 和 b &#xff0c;则认为 x 是 a 和 b 的一个 公因子 。 示例 1&#xff1a; 输入&#x…

基于springboot企业微信SCRM管理系统源码带本地搭建教程

系统是前后端分离的架构&#xff0c;前端使用Vue2&#xff0c;后端使用SpringBoot2。 技术框架&#xff1a;SpringBoot2.0.0 Mybatis1.3.2 Shiro swagger-ui jpa lombok Vue2 Mysql5.7 运行环境&#xff1a;jdk8 IntelliJ IDEA maven 宝塔面板 系统与功能介绍 基…

实现prometheus+grafana的监控部署

直接贴部署用的文件信息了 kubectl label node xxx monitoringtrue 创建命名空间 kubectl create ns monitoring 部署operator kubectl apply -f operator-rbac.yml kubectl apply -f operator-dp.yml kubectl apply -f operator-crd.yml # 定义node-export kubectl app…

RHCE的练习(4)

多端口访问多网站 第一步&#xff1a; 关闭防火墙&#xff08;因为要与外部连接访问&#xff09; [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0第二步&#xff1a; 创建新IP地址&#xff08;用于区分&#xff09; [rootlocalhost ~]# nmcli…

【南方科技大学】CS315 Computer Security 【Lab6 IoT Security and Wireless Exploitation】

目录 Introduction (Part 1: OS Security for IoT )Software RequirementsStarting the Lab 6 Virtual MachineSetting up the Zephyr Development EnvironmentDownload the Zephyr Source CodeInstalling Requirements and DependenciesSetting the Project’s Environment Va…

PoissonRecon学习笔记

1. Screened Poisson Reconstruction (SPR) 源码&#xff1a;https://github.com/mkazhdan/PoissonRecon However, as noted by several researchers, it suffers from a tendency to over-smooth the data. 泊松重建存在过度平滑的现象。 方法&#xff1a;position and gradi…

为Windows Terminal 配置zsh + Oh-My-Zsh!

参考&#xff1a; 为Windows Terminal 配置zsh Oh-My-Zsh! [非WSL] https://zhuanlan.zhihu.com/p/625583037 Package: zsh - MSYS2 Packages 安装配置 1、安装 Windows Terminal(必须) Method 1: 打开 Microsoft Store&#xff0c;搜索 “Windows Terminal”。点击 “…

Web应用框架-Django应用基础

1. 认识Django Django是一个用Python编写的开源高级Web框架&#xff0c; 旨在快速开发可维护和可扩展的Web应用程序。 使用Django框架的开发步骤&#xff1a; 1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护 Django官网&#xff1a; Djang…

开源表单生成器OpnForm

什么是 OpnForm &#xff1f; OpnForm 是一个开源的表单构建工具&#xff0c;旨在简化创建自定义表单的过程&#xff0c;特别适合无编码知识的用户。它通过人工智能优化表单创建流程&#xff0c;支持多种用途&#xff0c;如联系人表单、调查表等。OpnForm 提供了一个直观的拖放…

最优化方法-无约束优化算法(最速下降法)matlab实现

一、前言 最速下降法 &#xff0c;又称为梯度法&#xff0c;是一种无约束求解多元函数极小值的方法。最速下降法的起源可以追溯到19世纪&#xff0c;最早由数学家Cauchy在1847年提出。随着计算机技术的发展&#xff0c;最速下降法在20世纪50年代逐渐应用于各种优化问题&#x…