5 Jun

重温SSM(二):HiPPO的一些遗留问题

书接上文,在上一篇文章《重温SSM(一):线性系统和HiPPO矩阵》中,我们详细讨论了HiPPO逼近框架其HiPPO矩阵的推导,其原理是通过正交函数基来动态地逼近一个实时更新的函数,其投影系数的动力学正好是一个线性系统,而如果以正交多项式为基,那么线性系统的核心矩阵我们可以解析地求解出来,该矩阵就称为HiPPO矩阵。

当然,上一篇文章侧重于HiPPO矩阵的推导,并没有对它的性质做进一步分析,此外诸如“如何离散化以应用于实际数据”、“除了多项式基外其他基是否也可以解析求解”等问题也没有详细讨论到。接下来我们将补充探讨相关问题。

离散格式

假设读者已经阅读并理解上一篇文章的内容,那么这里我们就不再进行过多的铺垫。在上一篇文章中,我们推导出了两类线性ODE系统,分别是:
\begin{align}
&\text{HiPPO-LegT:}\quad x'(t) = Ax(t) + Bu(t) \label{eq:legt-ode}\\[5pt]
&\text{HiPPO-LegS:}\quad x'(t) = \frac{A}{t}x(t) + \frac{B}{t}u(t) \label{eq:legs-ode}\end{align}
其中$A,B$是与时间$t$无关的常数矩阵,HiPPO矩阵主要指矩阵$A$。在这一节中,我们讨论这两个ODE的离散化。

点击阅读全文...

24 May

重温SSM(一):线性系统和HiPPO矩阵

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

SSM的概念由来已久,但这里我们特指深度学习中的SSM,一般认为其开篇之作是2021年的S4,不算太老,而SSM最新最火的变体大概是去年的Mamba。当然,当我们谈到SSM时,也可能泛指一切线性RNN模型,这样RWKVRetNet还有此前我们在《Google新作试图“复活”RNN:RNN能否再次辉煌?》介绍过的LRU都可以归入此类。不少SSM变体致力于成为Transformer的竞争者,尽管笔者并不认为有完全替代的可能性,但SSM本身优雅的数学性质也值得学习一番。

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

点击阅读全文...

15 Jul

《新理解矩阵6》:为什么只有方阵有行列式?

学过线性代数的朋友都知道,方阵和非方阵的一个明显不同是,对于方阵我们可以计算它的行列式,如果不是方阵的话,就没有行列式这个概念了。在追求统一和谐的数学系统中,为什么非方阵却没有行列式?也许对于这个问题最恰当的回答是——因为不够美。对于非方阵,其实也可以类似地定义它的行列式,定义出来的东西,跟方阵的行列式具有同样的性质,比如某行乘上一个常数,行列式值也就乘以一个常数,等等;而且还可以把其几何意义保留下来。但是,非方阵的行列式是不够美的,因为对于一个一般的整数元素的方阵,我们的行列式是一个整数;而对于一个一般的整数元素的非方阵,却导致了一个无理数的行列式值。另外,一个也比较重要的原因是,单单是方阵的行列式也够用了。综合以上两个理由,非方阵的行列式就被舍弃不用了。

非方阵的行列式不够漂亮

$n$阶方阵的行列式是每个向量的线性函数,它代表着向量之间的线性相关性;从几何上来讲,它就是向量组成的平行n维体的(有向)体积。我们当然期望非方阵的行列式也保留这些性质,因为只有这样,方阵行列式的那些运算性质才得以保留,比如上面说的,行列式的一行乘上一个常数,行列式值也乘上一个常数。我们考虑$m\times n$的矩阵,其中$ m < n $,我们将它看成是$m$个$n$维向量的组合。最简单的,我们先考虑$1\times 2$矩阵的行列式,也就是二维向量$(a,b)$的行列式。

点击阅读全文...

28 Feb

行列式的导数

在讨论曲线坐标系的积分时,通常都会出现行列式这个东西,作为“体积元”的因子。在广义相对论中,爱因斯坦场方程的作用量就带有度规的行列式,而在对其进行变分时,自然也就涉及到了行列式的求导问题。我参考了朗道的《场论》以及《数理物理基础--物理需用线性高等数学导引》,了解到相关结果,遂记录如下。

推导


\begin{equation}\boldsymbol{A}(t)=\left(a_{ij}(t)\right)_{n\times n}\end{equation}
是一个n阶矩阵,其中每个矩阵元素都是t的函数。其行列式为$|\boldsymbol{A}|$,自然地,考虑
\begin{equation}\frac{d}{dt}|\boldsymbol{A}|\end{equation}

点击阅读全文...

21 Feb

[问题解答]有多少位数字?

解决完上一题《有多少个5?》后,子瑞表示看到一道类似的题目,当然,这道题比上一道难一些:

一个数,各个数字加起来等于900,乘以2后各个数字加起来还是等于900,已知这个数字只有3、4、5、6组成,请问满足条件的最大数与最小数的积有多少位数?

要解答这个问题,我们只需要知道最大数和最小数分别有多少位即可。因为最大数必然是6...3的形式,而最小数只能是3...6的形式,它们的位数之和就是所求的位数。

怎样比较两个数的大小呢?显然,在不同位数的数时,位数多的数要大,同样位数才从高到低逐位比较。因此,我们应当考虑位数的最大与最小。

点击阅读全文...

25 Dec

矩阵化简二次型(无穷小近似处理抛物型)

(阅读本文最好有一定的线性代数基础,至少对线性代数里边的基本概念有所了解。)

这学期已经接近尾声了,我们的《解析几何》已经讲到化简二次曲线了。可是,对于没有线性代数的其他同学们,直接用转轴和移轴这个计算公式来变换,那计算量会让我们很崩溃的;虽然那个“不变量”方法计算上有些简单,却总让人感到很诡异,总觉得不知从何而来,而且又要记一堆公式。事实上,如果有线性代数的基础,这些东西变得相当好理解的。我追求用统一的方法求解同一种问题,即用统一的方式处理所有的二次型,当然也希望计算量简单一点。

一般的模型

一般的二次型可以写成
$$x^T A x + 2 b^T x + c=0$$

其中$x,b$都是n维列向量(各元素为$x_i$和$b_i$),A是n阶方阵(各元素为$a_{ij}$),c是常数。在这里,我们只讨论n=2和n=3的情况。化简二次型的过程,可以归结为A矩阵的简化。

点击阅读全文...

30 Nov

算子与线性常微分方程(下)

不可交换

很自然会想到把这种方法延伸到变系数微分方程的求解,也许有读者回去自己摆弄了一下却总得不到合适的解而感到困惑。在这里群的非Abel性就体现出来了,首先用一个例子来说明一下,我们考虑算子的复合
$$(D-x)(D+x)=D^2-x^2+(Dx-xD)$$

我们要谨慎使用交换律,我们记$[P,Q]=PQ-QP$

其中P和Q是两个算子,此即量子力学中的“对易式”,用来衡量算子P和算子Q的可交换程度,当然,它本身也是一个算子。我们先来求出$[D,x]$给出了什么(要是它是0的话,那就表明运算可以交换了)。究竟它等于什么呢?直接看是看不出的,我们把它作用于一个函数:
$$[D,x]y=(Dx-xD)y=D(xy)-xDy=yDx+xDy-xDy=y$$

由于“近水楼台先得月”,所以$Dxy$表示x先作用于y,然后D再作用于(xy);而$xDy$表示D先作用于y,然后x再作用于Dy。最终我们得到了

点击阅读全文...

30 Nov

算子与线性常微分方程(上)

简介

最近在学习量子力学的时候,无意中涉及到了许多矩阵(线性代数)、群论等知识,并且发现其中有不少相同的思想,其中主要是用算子来表示其对函数的作用和反作用。比如我们可以记$D=\frac{d}{dx}$,那么函数$f(x)$的导数就可以看作是算子D对它的一次作用后的结果,二阶导数则是作用了两次,等等。而反过来,$D^{-1}$就表示这个算子的反作用,它把作用后的函数(像)还原为原来的函数(原像),当然,这不是将求导算子做简单的除法,而是积分运算。用这种思想来解答线性微分方程,有着统一和简洁的美。

线性微分方程是求解一切微分方程的基础,一般来说它形式比较简单,多数情况下我们都可以求出它的通解。在非相对论性量子力学的薛定谔方程中,本质上就是在求解一道二阶偏线性微分方程。另一方面,在许多我们无法求解的非线性系统中,线性解作为一级近似,对于定性分析是极其重要的。

一阶线性常微分方程

这是以下所有微分方程求积的一个基础形式,即$\frac{dy}{dx}+g(x)y=f(x)$的求解。这是通过常数变易法来解答的,其思想跟天体力学中的“摄动法”是一致的,首先在无法求解原微分方程的时候,先忽略掉其中的一些小项,求得一个近似解。即我们先求解
$$\frac{dy}{dx}+g(x)y=0$$

点击阅读全文...