购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 Mamba组件3:HiPPO算法初始化的状态转移矩阵

前面我们深入探讨了状态空间模型,揭示了其理论框架和内在逻辑。然而,理论掌握仅仅是第一步,在处理Mamba的序列数据时,我们仍需要精心设计专门的处理方法。其中,特别重要的就是找到合适的状态转移矩阵

在这方面,HiPPO算法脱颖而出,通过使用HiPPO构建的状态转移矩阵,在实际应用中,它明显好于随机生成的状态转移矩阵

HiPPO算法因其高效和精确的特性,被广泛应用于SSM中,用以提升对序列数据的处理能力。该算法通过高阶多项式投影操作,能够捕捉到序列数据中的复杂动态和潜在结构,从而为SSM提供更为丰富和准确的信息输入。这不仅增强了SSM的预测能力,还使得模型在处理复杂序列数据时更加稳健和可靠。

3.3.1 SSM中的状态转移矩阵

状态转移矩阵 在SSM中的作用是计算不同状态的隐含层。

在讲解Mamba使用HiPPO算法处理序列数据之前,我们需要先回顾一下离散化后的SSM公式,如下所示。

状态转换方程:

输出方程: y ( t )= Ch ( t )。

公式中最为重要的就是状态转移矩阵 矩阵,其目标是捕获有关先前状态的信息,从而构建新状态aa,如图3-25所示。

图3-25 的作用是通过捕获有关先前状态的信息来构建新状态

因此,本质上状态转移矩阵 的作用是生成隐藏状态,如图3-26所示。

图3-26 生成新的隐藏状态

图3-26的两个公式揭示了SSM如何根据输入信号 x k 更新内部状态 h k -1 并产生输出 y k 。在这个过程中,矩阵 扮演了关键角色,它反映了系统对之前几个token的记忆能力,并捕捉到目前为止观察到的每个token之间的差异。特别是在循环表示的语境中,矩阵 的作用更为显著,因为它仅回顾历史状态。

然而,问题的关键是:我们如何构建一个参数量足够的矩阵 来存储和压缩历史信息呢?这就需要寻找一种高效且精准的方法。

在具体应用中,我们可以选择随机方法来构建 矩阵,也可以选择遵循算法规则的HiPPO算法来初始化矩阵,如图3-27所示。

图3-27 遵循算法规则的HiPPO算法初始化的矩阵

可以看到,相对于随机构成的状态转移矩阵,HiPPO矩阵明显是根据特定的算法构建的,其公式如下(解释如下):

在这个公式中, n k 是矩阵的行索引和列索引,分别代表HiPPO矩阵中的第 n 行和第 k 列。这两个索引都是非负整数,用于标识矩阵中的位置。具体来说,HiPPO矩阵的元素值根据以下规则确定:

● 当 n > k 时,矩阵元素的值为(2 n +1) 1/2 (2 k +1) 1/2 。这个规则通过计算两个索引值的平方根的乘积来设置矩阵元素的值。

● 当 n = k 时,矩阵元素的值为 n +1。这意味着在对角线上,矩阵的元素值等于其行索引(或列索引)加1。

● 当 n < k 时,矩阵元素的值为0。这表示在HiPPO矩阵的上三角部分(即行索引小于列索引的部分),所有元素都被设置为0。

可以看到,这种构建方式使得HiPPO矩阵具有特定的结构,能够高效地压缩历史信息,并在处理长序列时捕获远程依赖关系。这种结构基于HiPPO算法的理论基础,旨在提高序列建模任务中的性能和效率。

3.3.2 HiPPO算法的Python实现与可视化讲解

下面我们将完成HiPPO算法的Python实现,具体实现如下:

import numpy as np

def make_HiPPO(N):
   P = np.sqrt(1 + 2 * np.arange(N))
   A = P[:, np.newaxis] * P[np.newaxis, :]
   A = np.tril(A) - np.diag(np.arange(N))
   return -A

读者可以通过打印生成的矩阵结果,对矩阵进行可视化展示,输出结果如下:

[[-1.         -0.         -0.         -0.   ]
 [-1.73205081  -2.         -0.         -0.    ]
 [-2.23606798  -3.87298335  -3.         -0.     ]
 [-2.64575131  -4.58257569  -5.91607978  -4.      ]]

接下来,我们更为细致地讲解一下HiPPO算法对不同系数的拟合。读者可以通过如下算法打印不同行对整体结果的贡献,代码如下:

运行上述代码后,生成的图像如图3-28所示(具体参看配套资源中的相关文件)。

图3-28 HiPPO算法对不同系数的整合

图中的虚线表示可以认为是不同行的系数(每个基函数可暂时理解为行向量)构成的图像,而实线部分则表示由多系数拟合构成的合成曲线(整体多项式函数)。简单来说,每个系数代表了其对应的基函数在构建总的多项式函数时的“重要性”或“权重”。正的系数会增强基函数的贡献,而负的系数会减弱基函数的贡献。

经过实验验证,采用HiPPO方法构建的矩阵 A 相较于随机初始化的矩阵,具有显著的优势。这种优势体现在HiPPO矩阵能够更精确地重建较新的信号(即最近的token),而对较旧信号的处理精度也得到了大幅提升。

HiPPO矩阵的设计理念是创建一个能够记忆历史信息的隐藏状态。从数学的角度来看,这一机制通过追踪勒让德多项式(Legendre Polynomial)的系数实现。HiPPO方法的精妙之处在于,能够利用这些系数来逼近和记录所有过往的历史信息。进一步来说,HiPPO被巧妙地融入我们之前探讨过的循环表示和卷积表示中,解决了远程依赖性的问题。这种结合不仅强化了模型对长序列数据的处理能力,也催生了一类全新的、能够高效处理长序列的状态空间模型。这种模型在处理复杂时间序列数据时,展现出了卓越的性能和稳定性。 BSLQ/T0OjtbQBBAsmsS7vAb7QjjhtmJoS5Y/WFYpOrpSpUuNzJsJwZmeQCL+fVUT

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开