重温被Mamba带火的SSM:线性系统和HiPPO矩阵

ae8ec59c44dd892c02aa90aa34fede79.gif

©PaperWeekly 原创 · 作者 | 苏剑林

单位 | 科学空间

研究方向 | NLP、神经网络

前几天,笔者看了几篇介绍 SSM(State Space Model)的文章,才发现原来自己从未认真了解过 SSM,于是打算认真去学习一下 SSM 的相关内容,顺便开了这个新坑,记录一下学习所得。

SSM 的概念由来已久,但这里我们特指深度学习中的 SSM,一般认为其开篇之作是 2021 年的 S4,不算太老,而 SSM 最新最火的变体大概是去年的 Mamba [1]。

当然,当我们谈到 SSM 时,也可能泛指一切线性 RNN 模型,这样 RWKV [2]、RetNet [3] 还有此前我们在《Google新作试图“复活”RNN:RNN能否再次辉煌?》介绍过的 LRU 都可以归入此类。不少 SSM 变体致力于成为 Transformer 的竞争者,尽管笔者并不认为有完全替代的可能性,但 SSM 本身优雅的数学性质也值得学习一番。

尽管我们说 SSM 起源于 S4,但在 S4 之前,SSM 有一篇非常强大的奠基之作《HiPPO: Recurrent Memory with Optimal Polynomial Projections》[4](简称 HiPPO),所以本文从 HiPPO 开始说起。

1ffa6ee8696103e65291b07c497a7bfd.png

基本形式

先插句题外话,上面提到的 SSM 代表作 HiPPO、S4、Mamba 的一作都是 Albert Gu [5],他还有很多篇 SSM 相关的作品,毫不夸张地说,这些工作筑起了 SSM 大厦的基础。不论 SSM 前景如何,这种坚持不懈地钻研同一个课题的精神都值得我们由衷地敬佩。

言归正传。对于事先已经对 SSM 有所了解的读者,想必知道 SSM 建模所用的是线性 ODE 系统:

402b888bfe32b1cf8e9e3630aa4c700c.png

其中:

7e894c1be52f8df24064cb2788eb834a.png

当然我们也可以将它离散化,那么就变成一个线性 RNN 模型,这部分我们在后面的文章再展开。不管离散化与否,其关键词都是“线性”,那么马上就有一个很自然的问题:为什么是线性系统?线性系统够了吗?

我们可以从两个角度回答这个问题:线性系统既足够简单,也足够复杂。简单是指从理论上来说,线性化往往是复杂系统的一个最基本近似,所以线性系统通常都是无法绕开的一个基本点;复杂是指即便如此简单的系统,也可以拟合异常复杂的函数,为了理解这一点,我们只需要考虑一个 的简单例子:

d53c667cceb57d169cda6816fa4edf0d.png

这个例子的基本解是 。这意味着什么呢?意味着只要 足够大,该线性系统就可以通过指数函数和三角函数的组合来拟合足够复杂的函数,而我们知道拟合能力很强的傅里叶级数也只不过是三角函数的组合,如果在加上指数函数显然就更强了,因此可以想象线性系统也有足够复杂的拟合能力。

当然,这些解释某种意义上都是“马后炮”。HiPPO 给出的结果更加本质:当我们试图用正交基去逼近一个动态更新的函数时,其结果就是如上的线性系统。这意味着,HiPPO 不仅告诉我们线性系统可以逼近足够复杂的函数,还告诉我们怎么去逼近,甚至近似程度如何。

6beb5ee55708ab35c9a75209a8873e3a.png

有限压缩

接下来,我们都只考虑 的特殊情形, 只不过是 时的平行推广。此时, 的输出是一个标量,进一步地,作为开头我们先假设 ,HiPPO 的目标是:用一个有限维的向量来储存这一段 的信息。

看上去这是一个不大可能的需求,因为 意味着 可能相当于无限个点组成的向量,压缩到一个有限维的向量可能严重失真。不过,如果我们对 做一些假设,并且允许一些损失,那么这个压缩是有可能做到的,并且大多数读者都已经尝试过。比如,当 在某点 阶可导的,它对应的 阶泰勒展开式往往是 的良好近似,于是我们可以只储存展开式的 个系数来作为 的近似表征,这就成功将 压缩为一个 维向量。

当然,对于实际遇到的数据来说,“阶可导”这种条件可谓极其苛刻,我们通常更愿意使用在平方可积条件下的正交函数基展开,比如傅里叶(Fourier)级数,它的系数计算公式为

a9432b3468e5e4d58e2cf08eda4523d6.png

这时候取一个足够大的整数 ,只保留 的系数,那么就将 压缩为一个 维的向量了。

接下来,问题难度就要升级了。刚才我们说 ,这是一个静态的区间,而实际中 代表的是持续采集的信号,所以它是不断有新数据进入的,比如现在我们近似了 区间的数据,马上就有 的数据进来,你需要更新逼近结果来试图记忆整个 区间,接下来是 、 等等,这我们称为“在线函数逼近”。而上面的傅里叶

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值