当前位置:   article > 正文

2024的新宠儿——Mamba(2):从SSM到S4的升级之路_mamba s4的实现

mamba s4的实现

SSM到S4的三步升级:离散化SSM、循环/卷积表示、基于HiPPO处理长序列

离散数据的连续化:基于零阶保持技术做连续化并采样

由于除了连续的输入之外,还会通常碰到离散的输入(如文本序列),不过,就算SSM在离散数据上训练,它仍能学习到底层蕴含的连续信息,因为在SSM眼里,sequence不过是连续信号signal的采样,或者说连续的信号模型是离散的序列模型的概括

那模型如何处理离散化数据呢?答案是可以利用零阶保持技术(Zero-order hold technique)

  1. 首先,每次收到离散信号时,我们都会保留其值,直到收到新的离散信号,如此操作导致的结果就是创建了 SSM 可以使用的连续信号
  2. 保持该值的时间由一个新的可学习参数表示,称为步长(siz)—— \Delta,它代表输入的阶段性保持(resolution)
  3. 有了连续的输入信号后,便可以生成连续的输出,并且仅根据输入的时间步长对值进行采样


这些采样值就是我们的离散输出,且可以针对A、B按如下方式做零阶保持(做了零阶保持的在对应变量上面加了个横杠)

最终使我们能够从连续 SSM 转变为离散SSM,使得不再是函数到函数x(t) → y(t),而是序列到序列xₖ → yₖ,所以你看到,矩阵\bar{A}\bar{B}现在表示模型的离散参数,且这里使用k,而不是t来表示离散的时间步长

注意:我们在保存时,仍然保存矩阵的连续形式(而非离散化版本),只是在训练过程中,连续表示被离散化(During training, the continuous representation is discretized)

循环结构表示:方便快速推理

总之,离散 SSM 允许可以用离散时间步长重新表述问题

在每个时间步,都会涉及到隐藏状态的更新(比如h_k取决于\bar{B}x_k\bar{A}x_{k-1}的共同作用结果,然后通过Ch_k预测输出y_k)

为方便大家理解其中的细节,我再展开一下

有没有眼前一亮?如此,便可以RNN的结构来处理

然后可以这样展开(其中,h_k始终是\bar{B}x_k\bar{A}x_{k-1}的共同作用之下更新的)

卷积结构表示:方便并行训练

在经典的图像识别任务中,我们用过滤器(即卷积核kernels)来导出聚合特征,而SSM也可以表示成卷积的形式

由于我们处理的是文本而不是图像,因此我们需要一维视角

而用来表示这个“过滤器”的内核源自 SSM 公式

但怎么理解这个公式呢?一般的文章可能一带而过,但本文咱们还是通过一个例子一步一步理解

      1.与卷积一样,我们可以使用 SSM 内核来检查每组token并计算输出


      2.内核将移动一次以执行下一步的计算


      3.最后一步,我们可以看到内核的完整效果:


至于上图中的是咋计算得到的,别忘

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/679853
推荐阅读
相关标签
  

闽ICP备14008679号