首页 > 其他分享 >Efficiently Modeling Long Sequences with Structured State Spaces

Efficiently Modeling Long Sequences with Structured State Spaces

时间:2024-06-12 10:34:09浏览次数:14  
标签:mathbb HiPPO Structured Long times State tilde mathcal S4

目录

Gu A., Goel K. and Re C. Efficiently modeling long sequences with structured state spaces. NeurIPS, 2022.

Mamba 系列第三作.

符号说明

  • \(u(t) \in \mathbb{R}\), 输入信号;
  • \(x(t) \in \mathbb{R}^N\), 中间状态;
  • \(y(t) \in \mathbb{R}\), 输出信号

S4

  • LSSL 中我们已经阐述了线性系统:

    \[x'(t) = A x(t) + Bu(t), \\ y(t) = C x(t) + D u(t) \]

    在兼顾 RNN, CNN 的优势的可能性, 并且离散化后说明 LSSL 实际上可以改写成卷积的形式, 从而实现高效的并行化:

    \[y = \mathcal{K}_L (\bar{A}, \bar{B}, C) * u + Du, \\ \mathcal{K}_L (A, B, C) := (CB, CAB, \ldots, CA^{L-1}B). \]

  • 现在的问题是, 如果 \(A\) 是固定的, 那么我们实际上只需要计算一次 \(\mathcal{K}_L\) 即可, 但是如果 \(A\) 不是固定的, 那么我们每次就需要付出额外的(相当多的)代价去计算 \(\mathcal{K}_L\), 其主要代价在于 \(A\).

  • 假设我们能够通过某个 \(V \in \mathbb{R}^{N \times N}\) 对角化 \(A\), 则我们有:

    \[\tilde{x}' = V^{-1} A V \tilde{x} + V^{-1} B u, \\ y = CV \tilde{x}. \]

    于是 \((V^{-1}AV)^{l}\) 计算起来就会比较方便了.

  • 但是问题是, 作者发现 HiPPO 矩阵的 \(V\) 的值的大小规模可以达到 \(2^{4N/3}\), 所以计算的时候会造成严重的数值问题.

  • S4 提出了一种改进方案:

    \[A = V(\Lambda - (V^*P) (V^*Q^*))V^*, \]

    其中

    \[P, Q \in \mathbb{R}^{N \times R}, \]

    为低秩矩阵.
    实际上可以证明, 对于所有的 HiPPO matrix, 都可以进行这样的分解.

  • 既然如此, S4 选择重参数化 \(A\) 为 \((\Lambda \in \mathbb{R}^{N \times 1}, P \in \mathbb{R}^{N \times 1}, Q \in \mathbb{R}^{N \times 1})\), 以及 \(B, C \in \mathbb{R}^{N \times 1}\), 为 5N 的可训练参数.

注: 我看代码的时候, 感觉发现 \(V\) 是没有保留的, 所以直接就是采用 \(V\) 变换后的那个方程了 (我一开始以为会用 HiPPO matrix 的初始的 \(V\) 最后做个转换的, 实际上没有).

注: 作者没有提及 \(\Delta t\) 是否是训练的, 我感觉应该和 LSSL 一样可训练吧.

注: \(R=1\) 不是必须的, 代码里设置了参数可以调节.

代码

[official-code]

标签:mathbb,HiPPO,Structured,Long,times,State,tilde,mathcal,S4
From: https://www.cnblogs.com/MTandHJ/p/18243436

相关文章

  • Combining Recurrent, Convolutional, and Continuous-time Models with Linear State
    目录概符号说明LSSL和其它方法的联系代码GuA.,JohnsonI.,GoelK.,SaabK.,DaoT.,RudraA.,andReC.Combiningrecurrent,convolutional,andcontinuous-timemodelswithlinearstate-spacelayers.NeurIPS,2021.Statespacerepresentaion-wiki.概Mamba......
  • LeetCode 409 Longest Palindrome All In One
    LeetCode409LongestPalindromeAllInOneLeetCode409最长回文算法题解Solutions//MapfunctionlongestPalindrome(s:string):number{constmap=newMap();letlen=0;for(leti=0;i<s.length;i++){if(map.has(s[i])){//配对,消元......
  • 使用Mybatis出现org.apache.ibatis.binding.BindingException: Invalid bound stateme
    一般的解决方式:1、检查xml文件名和mapper接口名字是否一致2、检查xml文件中的namespace和mapper接口的全类名是否一致3、检查xml文件中的方法名和mapper接口中的方法名是否一致4、检查target中是否存在xml文件,如果不存在有两种方式,第一种是在yml文件中配置,第二种是在pom.xm......
  • Docker中部署nacos报Caused by: java.lang.IllegalStateException: No DataSource set
    在进入nacos日志内部发现再次重启同样如此;其实从上面你也就很容易看出问题所在,没有数据;经过排查发现我在docker部署时之前部署的mysql容器并没有启动,需要启动mysql容器z输入两个命令分别启动和查看dockerstartmysqldps经过之后再次重启nacos进入日志后成功:​​​​​......
  • C# ViewState
    原文链接:https://www.cnblogs.com/wangqilong/p/12540397.html         https://www.cnblogs.com/firstyi/archive/2007/11/20/965957.html ViewState的使用比较简单,一两句话就可以了。赋值:ViewState[key]=value;取值:value=ViewState[key];最主要的作用......
  • [ICML2022]Open-Sampling Exploring Out-of-Distribution Data for Re-balancing Long
    引入开集样本训练模型有点像dropout,“破坏”某些模型参数防止尾部类的过拟合Motivation长尾学习中的训练数据集分布不平衡的问题,解决方法之一是重采样。重采样主要对于尾部类重复采用,但这种做法往往会导致尾部类的过拟合。为了缓解过拟合[2](Rethinkingthevalueoflabelsf......
  • long类型精度丢失问题的三种解决方案 (在Long长度大于17位时会出现精度丢失的问题)
    1.简介​对于Long类型的数据,如果我们在Controller层将结果序列化为json,直接传给前端的话,在Long长度大于17位时会出现精度丢失的问题2.解决方案2.1注解2.1.1@JsonFormat@JsonFormat(shape=JsonFormat.Shape.STRING)2.1.2@JsonSerialize@JsonSerialize(using=To......
  • goto 语句以及 setjump、longjump 函数的注意事项总结
    关于goto、setjmp、longjmp的注意事项,总结如下:goto语句避免滥用:goto语句虽然能够提供一种直接的跳转方式,但过度使用会使程序结构变得复杂,难以阅读和维护。应优先考虑使用结构化的控制流语句(如if、while、for等)。防止死循环:在使用goto语句时,要特别注意不要形成死......
  • ESSEN: Improving Evolution State Estimation for Temporal Networks using Von Neum
    我们采用以下六个分类标准:研究重点:这个标准突出了研究的核心目标。网络表示学习旨在找到有效的方法,将复杂的网络结构表示在低维空间中,使其更易于分析并在机器学习任务中使用。例如,Kipf和Welling[7]引入了图卷积网络(GCN)用于静态图上的半监督分类,而Nguyen等人[1......
  • C# Parallel foreach Parallel Source array was not long enough. Check srcIndex an
    //Indexwasoutsidetheboundsofthearray.//Sourcearraywasnotlongenough.ChecksrcIndexandlength,andthearray'slowerbounds//usingSystem;usingSystem.Collections.Concurrent;usingSystem.Collections.Generic;usingSystem.Linq;usingSy......