Mamba自从出道就一直被拿来和Transformer对比,文章巨多,带着标题的爆炸性字样“颠覆Transfomer”,“全面包围”等等。文章深浅不一,小编认为其背后的设计思路以及演化过程更加重要。为此本专题将从山上有座庙开始,沿着RNN、SSM、S4、HIPPO一路走来。期间抛弃冗杂的文辞,以更接地气的模式协助读者打开新的逻辑思维。
SSM的三种表现形式
接着Mamab2的话题,SSM本身是连续模型,通过某些算法和特殊处理将其改造为能够支持离散输入的模型。其实转化为离散模型之后,它和RNN有了共同点。这个模型和人类记忆的习惯一样,就如同一遍看书,一边总结,一边感悟。
SSM的一个最为关键的特征就是它具备三种不同的表示形式:连续时间、循环模式(离散)和卷积模式。SSM可以在不同的范式之间切换,以便于更加适合特定应用场景的需求。
声明一下在传统SSM文献中,一般输入的符号采用u,输出为y,中间状态为x。之前比较那张比较漂亮的图,中间状态是h,这点读者知晓即可。
连续的SSM和离散的SSM在上文已经详细的介绍过了。这里重点介绍卷积的形态。首先先来回忆下离散SSM的公式如下:
这个时候可以拿出纸和笔,然后从x0开始,迭代的推理出中间状态x序列:
同理可以推理出y的序列,
仔细观察一上图,善于归纳总结的读者一定会发现任何输入都会逐步与如下的序列进行逐一运算,姑且称K之为卷积核。
为了更加直观的表达卷积核的意思,下面这幅图比较直观的表达K为卷积核的意义。卷积核K(长度根据场景可以定义,本文的例子长度为3)沿着输入滑动,每滑动一个窗格,与对应的输入相乘,然后累加得到输出。
卷积模式最大的好处在于要计算输出y的向量是可以并行计算的,在训练中具有很大的优势。而循环模式在推理的时候则占据优势。那么是不是可以混合使用呢,明显是可以的。
此时学霸就会举手,ABC都是不变的?没错,在上个章节提到了线性时不变性。LTI规定SSM参数A 、B和C对于任何时间而言都是固定的。这个意味着无论为SSM提供什么顺序,A 、B和C的值都保持不变。这里要Mark一下,带着问题在后面的章节找寻Mamba的解决之道。
勒让德多项式
在继续往下之前,先来补充一个知识点勒让德多项式(Legendre polynomials)。数学上,勒让德函数P(x)是以下勒让德微分方程的解。
前11阶的解和前6阶的曲线如下:
也许你会好奇为什么突然引入这个多项式。这里做些剧透:还记得傅里叶变换么,它允许将某个信号分解为不同频率的正弦函数组合,最终使得叠加之后的总和能够更好的接近原始信号。
而在不远的将来,HIPPO理论也做了同样的事情,只不过使用了不同阶的勒让德多项式代替不同频率的正弦函数来压缩和还原信号。
矩阵A与记忆殿堂
上图按照循环模式将SSM的模型展开,矩阵A捕获有关先前状态的信息来构建新状态。那么矩阵A和中间状态就很关键了,它类似人类的大脑,能记忆多少和能够有效提炼上下文就直接决定整个模型的好坏。相信福尔摩斯的矩阵A很强,而老年痴呆症患者的矩阵A就会很弱。
对于类音频和视频这种长序列甚至无限长度的数据流,对于Transformers的架构还是有挑战的。时间序列一般存在噪声,有些序列还是非平稳的。若只是单纯的拟合,而不考虑序列的内在结构,就变得有点暴力破解。在Transformers中使用的注意力机制并不能有效地检测基本的时间依赖性,毕竟Token的权重分配缺少了时间因素的考虑,另一方面Token序列有可能存在周期性。KAN也是在这个方面进行一些突破。
来个比较有感觉的场景,若有人让你背诵斐波那契数列,你可以1、 1、 2、 3、 5、 8、 13、 21、 34、 55、 89、 144、 233、 377、 610、 987……背诵一个上午。当然你也可以有其他的选择,记住公式𝐹0=1,𝐹1=1,𝐹𝑛=𝐹𝑛−1+𝐹𝑛−2(𝑛≧2),然后随着公式背出数字。
这有点像福尔摩斯(英国版小短剧)的记忆殿堂。下面伴随着小剧场来看看HiPPO的概念版,看看它是如何解决长序列的记忆能力:
假定有一段输入信号 | |
在t0时刻已经有一段曲线,先不管用什么办法,直接采用多项式拟合。 | |
这时候可以将多项式的系数,就是上面的a0,...,an记录下来作为状态。那意味着无论数据有多少,只需要记住固定的系数。伴随着输入,可以不断的更新这些系数。 | |
这样一来,就将所有的历史编码在状态中,而且不断更新。 | |
任何人的记忆都会存在衰减,例如越近的事情记得越清,越远的事情记得越模糊。这个衰减也是有个曲线的,红色的曲线和蓝色的曲线是一样的,都是指数衰减。高度代表着重建输出信号的精度(误差)。 |
哇,是不是很有意思。有个这么厉害的中间状态构造器,就可以比较近似的还原出所有的历史信息。要是运用在大模型中,上下文就不再是问题了。人人都是福尔摩斯,一目1000行。
到此已经不知不觉的介绍了HiPPO的原理。按照HIPPO理论方式构建矩阵A,目的是将迄今为止看到的所有输入信号近似为系数向量(勒让德多项式)。与傅立叶变换的区别在于,它不能完美地重建迄今为止的所有原始信号,而是较为精确还原较新信号,而较旧的信号呈指数衰减。因此,状态 ℎ(𝑡) 主要还是会更多关注最近看到令牌。
上图黑色线为输入信号线,蓝色为中间状态(64个系数),红色为重建的输入线。可以发现重建出来的信号,最新的偏差小,越早的偏差大,整体记忆是指数衰减。HiPPO利用了64个系数将10000多个单元进行压缩。SCIFAR是一个长序列模型的评估基准。可以看到拥有HiPPO的S4提高了将近30%。而Attension、CNN或者LSTM维持在60%+。
学霸又开始提问了,那么矩阵A的设计是不是要和HiPPO匹配,上图的矩阵格式有点腔调。没错,下回介绍。到此已经完成Mamba旅途的1/3了,还是那句老话,不要着急登顶,沿途看看风景(知识点)也不错。