SSM离散化表示
除了连续的输入之外,还会通常碰到离散的输入(如文本序列)。所以SSM需要离散化形式,就是下面公式2和3。
SSM离散化过程
但是好奇这个离散化过程是如何进行的?
《一文通透想颠覆Transformer的Mamba:从SSM、HiPPO、S4到Mamba》文章提到过程:
那模型如何处理离散化数据呢?可以利用零阶保持技术(Zero-order hold technique)
1、首先,每次收到离散信号时,我们都会保留其值,直到收到新的离散信号,如此操作导致的结果就是创建了 SSM 可以使用的连续信号。
2、保持该值的时间由一个新的可学习参数表示,称为步长(siz)——
,它代表输入的阶段性保持(resolution)。
3、有了连续的输入信号后,便可以生成连续的输出,并且仅根据输入的时间步长对值进行采样。
这些采样值就是我们的离散输出,且可以针对A、B按如下方式做零阶保持(做了零阶保持的在对应变量上面加了个横杠)
最终使我们能够从连续 SSM 转变为离散SSM。
离散化SSM表示的矩阵计算
看了很多文章,还是不明白,离散化SSM的矩阵A和B(上面带横杠)是如何计算得来的。
忽然灵机一动,大学课本中不知道是否有相关内容,翻出三十年前的课本,还真的有相关的内容,就是下面两页:
然后又找来了文章《MPC-连续状态空间方程到离散》,摘录相关内容如下:
连续状态方程:(从上面的公式(11-108)很容易得到下面的公式)
转变为离散方程:
在tk<=t<tk+1时候,根据上面的零阶保持技术(Zero-order hold technique),u(t)恒等于uk,所以B*uk就是一个常数矩阵,根据矩阵积分原理,可以提到积分后面:
tk+1-tk就是步长(siz)——
,这样矩阵A(上带横线)就获得了。
计算离散的矩阵B:
这样矩阵B(带上横线)就也得到了。
推导完毕!