引言:为什么AI总是“健忘”?

想象你在读一本小说:

  • 读到第10页,你还能清晰记得第1页的主角名字
  • 读到第300页,你可能还能记得50页前的情节转折
  • 但读到第1000页时,第1页的细节早已模糊

这就是记忆衰减——时间越久远的信息,印象越模糊。

神经网络处理序列时也面临同样的问题:

  • RNN:理论上可以记住无限长,但实际几百步后就“失忆”了(梯度消失)
  • LSTM:通过门控机制缓解了遗忘,但超过1000步仍然吃力
  • Transformer:用注意力机制直接“回头看”,但计算量随序列长度平方增长

有没有一种方法,既能像RNN一样高效(线性复杂度),又能像Transformer一样记住超长序列(超过10000步)?

答案是:HiPPO(High-order Polynomial Projection Operators)

本文将用最通俗的语言,讲清楚HiPPO到底解决了什么问题、怎么解决的,以及为什么它能让模型拥有“过目不忘”的记忆力。

一、核心问题:如何用“小口袋”装下“大历史”?

1.1 一个生活化的类比

假设你是一个历史学家,需要记录过去100年发生的所有重要事件。

但你的笔记本只有10页,每页只能写一个“摘要”。你怎么做?

  • 方案A(普通RNN):每来一个新事件,就用新信息“覆盖”旧摘要。结果:100年前的事情早就被忘了
  • 方案B(LSTM):设计一个“重要性打分”机制,重要事件多写几笔,不重要的就少写。结果:能记住久一点,但100年前的细节还是会丢失
  • 方案C(HiPPO):你不是简单地“覆盖”,而是用10个数字(状态向量)来表示整个历史函数的形状。就像用傅里叶级数的前10个系数来近似一个复杂的波形

HiPPO选择的是方案C——用固定维度的状态向量,通过数学上最优的方式压缩无限长的历史信息。

1.2 函数的视角:把历史看作一条曲线

HiPPO的核心理念是:将过去所有的输入值f(0),f(1),...,f(t)f(0), f(1), ..., f(t)f(0),f(1),...,f(t)看作一条随时间变化的曲线f≤tf_{\le t}ft

我们用一个NNN维的状态向量s(t)\mathbf{s}(t)s(t)来表示这条曲线的“形状”。

问题是:如何用NNN个数字,尽可能准确地描述一条曲线?

答案是:用曲线在NNN个“基函数”上的投影系数

这就像用傅里叶级数表示声音信号——你不需要记住每一时刻的振幅,只需要记住几个频率分量的系数。NNN越大,近似越精确。

二、为什么RNN会“遗忘”?数学本质是什么?

2.1 RNN的更新公式

标准RNN的更新方式:

st=tanh⁡(Wst−1+Uxt+b) \mathbf{s}_t = \tanh(W \mathbf{s}_{t-1} + U \mathbf{x}_t + \mathbf{b}) st=tanh(Wst1+Uxt+b)

每来一个新输入xt\mathbf{x}_txt,旧状态st−1\mathbf{s}_{t-1}st1被“挤压”后与新信息混合。

2.2 遗忘的本质:指数衰减

当序列很长时,早期输入的影响会指数级衰减

假设没有非线性激活函数,RNN就是一个线性递推:

st=Ast−1+Bxt \mathbf{s}_t = A \mathbf{s}_{t-1} + B \mathbf{x}_t st=Ast1+Bxt

展开到第一步:

st=Ats0+∑k=1tAt−kBxk \mathbf{s}_t = A^t \mathbf{s}_0 + \sum_{k=1}^t A^{t-k} B \mathbf{x}_k st=Ats0+k=1tAtkBxk

如果矩阵AAA的特征值的模∣λ∣<1|\lambda| < 1λ<1,那么AtA^tAt指数级趋于0。这意味着:

  • 第1步的输入x1\mathbf{x}_1x1的系数是At−1BA^{t-1}BAt1B
  • t=100t=100t=100时,A99A^{99}A99已经接近0
  • 早期信息被“指数级遗忘”

这就是RNN记忆衰减的根本原因

2.3 HiPPO的解法:改变状态更新的“规则”

HiPPO不是简单地用Ast−1A\mathbf{s}_{t-1}Ast1递推,而是让状态s(t)\mathbf{s}(t)s(t)表示整个历史函数的投影系数

HiPPO证明了:对于最优的投影近似,状态演化遵循特定的线性ODE

ddts(t)=A(t)s(t)+B(t)f(t) \frac{d}{dt}\mathbf{s}(t) = A(t)\mathbf{s}(t) + B(t)f(t) dtds(t)=A(t)s(t)+B(t)f(t)

这里的A(t)A(t)A(t)不是RNN中那种特征值全小于1的矩阵。对于LegS(Scaled Legendre)变体,A(t)A(t)A(t)的特征值随着ttt增大而变负但趋近于0,使得遗忘速度从指数级降为多项式级O(1/t)O(1/t)O(1/t)

三、HiPPO的三种记忆策略

3.1 滑动窗口记忆(LegT):只记最近一段

通俗解释:就像行车记录仪,只保存最近30分钟的视频。新视频进来,最旧的就被覆盖。

数学:测度μ(t)(x)=1θI[t−θ,t]dx\mu^{(t)}(x) = \frac{1}{\theta} \mathbb{I}_{[t-\theta, t]} dxμ(t)(x)=θ1I[tθ,t]dx,窗口长度θ\thetaθ

特点

  • 优点:状态大小固定,适合只需要近期信息的任务
  • 缺点:窗口外的信息完全丢失

3.2 指数衰减记忆(LagT):越久越模糊

通俗解释:就像人的自然记忆——昨天的事记得很清楚,去年的只剩模糊印象,10年前的几乎忘了。但理论上永远“记得”一点。

数学:测度μ(t)(x)=e−(t−x)I[0,t]dx\mu^{(t)}(x) = e^{-(t-x)} \mathbb{I}_{[0,t]} dxμ(t)(x)=e(tx)I[0,t]dx,指数衰减。

特点

  • 优点:永不“硬遗忘”,所有历史都有贡献
  • 缺点:指数级衰减,很久远的信息权重极低

3.3 均匀缩放记忆(LegS)——HiPPO的王牌

通俗解释:想象你有一张无限长的画卷,上面记录着所有历史。LegS的做法是:随着时间推移,不断“压缩”画卷,让所有历史时刻在画卷上保持相同的长度

第1秒:画卷长度=1,历史只有1秒
第10秒:画卷长度=10,历史被压缩到长度1的区间内
第100秒:画卷长度=100,所有历史被压缩到长度1的区间

这种“压缩”让所有历史时刻在表示中权重相同——不会因为时间久远而被遗忘。

数学:测度μ(t)(x)=1tI[0,t]dx\mu^{(t)}(x) = \frac{1}{t} \mathbb{I}_{[0,t]} dxμ(t)(x)=t1I[0,t]dx,缩放均匀窗口。

最重要的特性:时间尺度等变性

如果输入f(t)f(t)f(t)被拉伸为f(αt)f(\alpha t)f(αt),LegS的状态系数也会相应缩放cn(t)→cn(αt)c_n(t) \to c_n(\alpha t)cn(t)cn(αt)。这意味着:一旦训练好,模型可以零样本地泛化到任意时间尺度——无论是每秒10帧还是每秒100帧的数据,都能处理。

遗忘速度对比

模型 遗忘速度 1000步后早期信息权重
RNN 指数级 e−te^{-t}et ≈ 0
LSTM 指数级(慢一些) ≈ 0
LegS 多项式级 O(1/t)O(1/t)O(1/t) ≈ 1/1000,仍然可观!

四、HiPPO如何集成到深度学习模型?

4.1 从连续到离散:让计算机能算

HiPPO的ODE是连续的,但实际输入是离散的序列。因此需要离散化

使用双线性变换将连续ODE变成离散递推:

st+1=Aˉst+Bˉxt \mathbf{s}_{t+1} = \bar{A} \mathbf{s}_t + \bar{B} \mathbf{x}_t st+1=Aˉst+Bˉxt

其中:
Aˉ=(I−Δ2A)−1(I+Δ2A) \bar{A} = \left(I - \frac{\Delta}{2}A\right)^{-1}\left(I + \frac{\Delta}{2}A\right) Aˉ=(I2ΔA)1(I+2ΔA)
Bˉ=Δ(I−Δ2A)−1B \bar{B} = \Delta \left(I - \frac{\Delta}{2}A\right)^{-1} B Bˉ=Δ(I2ΔA)1B

这个递推和RNN的形式完全一样!区别在于:

  • RNN的AAA是随机初始化的,BBB也是可学习的
  • HiPPO的Aˉ\bar{A}AˉBˉ\bar{B}Bˉ由数学推导确定,不是随机初始化的

4.2 S4:将HiPPO的效率推向极致

HiPPO矩阵AAA有特殊结构(下三角 + 特殊对角线),S4(Structured State Space Model)利用这个结构,将计算复杂度从O(N2)O(N^2)O(N2)降为O(N)O(N)O(N)

S4还可以将线性递推表示为全局卷积,在训练时并行处理整个序列,在推理时保持线性递推的高效。这种设计结合了Transformer的训练效率和RNN的推理效率。

五、HiPPO vs LSTM vs Transformer:谁更“能记”?

模型 记忆机制 理论最长记忆 计算复杂度 时间泛化能力
RNN 递推+非线性 100-200步 O(L)
LSTM 门控+细胞状态 500-1000步 O(L)
Transformer 自注意力 无限制 O(L²) 差(需位置编码)
S4(HiPPO) 多项式投影 无限制 O(L) (LegS等变)

关键洞察

  • Transformer的“无限记忆”是有代价的——平方复杂度限制了序列长度
  • S4同样有无限记忆(通过LegS均匀窗口),但只需线性复杂度

5.1 直观对比:10000步序列的记忆表现

想象一个任务:预测序列第10000个元素的值,这个值依赖于第1个元素。

  • RNN/LSTM:第1个元素的信息早已被“指数级遗忘”,第10000步时几乎为0 → 无法完成
  • Transformer:第10000步可以直接“回头看”第1步(通过注意力),但计算10000210000^2100002次交互 → 慢
  • HiPPO/S4:状态向量始终包含整个历史的压缩表示,第1步的信息以1/100001/100001/10000的权重保留 → 既能记住,又高效

六、HiPPO的实际应用

6.1 语音识别(长音频处理)

语音识别需要处理长达几分钟甚至几小时的音频。传统方法将音频切分成短片段分别处理,丢失了跨片段的上下文。

HiPPO/S4可以直接处理数万步的原始音频序列,在TIMIT等语音数据集上达到SOTA。

6.2 时间序列预测(金融、气象)

股票价格、天气数据本质上是长期依赖的时间序列。HiPPO的长记忆能力使其在预测任务中表现优异。

6.3 医学信号处理(心电图、脑电图)

ECG信号包含心跳的长期模式,EEG信号需要捕捉跨分钟的脑活动模式。HiPPO能高效处理这些长序列医学信号。

6.4 Mamba:HiPPO思想的集大成者

2023年底提出的Mamba模型,其核心创新之一就是让HiPPO的AAA矩阵依赖于输入——模型可以动态决定“记住什么”和“忘记什么”。

这是对HiPPO的重要扩展:原来是“固定策略的记忆”,现在变成“自适应策略的记忆”。

七、总结:一张图看懂HiPPO

        过去的信息流(随时间到达)
    ┌─────────────────────────────────────┐
    │  t=1  t=2  t=3  ...  t=100  ...    │
    └─────────────────────────────────────┘
                        ↓
            HiPPO:“压缩”成N个数字
                        ↓
    ┌─────────────────────────────────────┐
    │  状态向量 s(t) ∈ ℝ^N                │
    │  = [c₁, c₂, c₃, ..., c_N]          │
    │  (最优多项式投影的系数)             │
    └─────────────────────────────────────┘
                        ↓
              每次新输入到来,更新s(t)
                        ↓
    ┌─────────────────────────────────────┐
    │  s(t+1) = f(s(t), x(t+1))           │
    │  (由HiPPO数学推导的线性ODE)         │
    └─────────────────────────────────────┘
                        ↓
               下游任务(预测/分类/生成)

HiPPO的核心贡献

  1. 理论奠基:用严格的数学回答了“如何用固定维度向量最优地压缩无限历史”
  2. 遗忘可控:LegS变体的多项式遗忘速度,远慢于RNN的指数遗忘
  3. 时间鲁棒:LegS的时间尺度等变性,让模型能泛化到不同采样率的数据
  4. 工程高效:递推形式与RNN相同(O(N)),但记忆能力远超

下次当你使用S4或Mamba处理长序列时,记住:它们的“好记性”背后,是HiPPO的数学保障

参考文献

  1. Gu, A., Dao, T., Ermon, S., Rudra, A., & Ré, C. (2020). HiPPO: Recurrent Memory with Optimal Polynomial Projections. NeurIPS 2020.
  2. Gu, A., Johnson, I., Timalsina, A., Rudra, A., & Ré, C. (2022). How to Train Your HiPPO. arXiv:2208.10153.
  3. Chakraborty, B., & Mukhopadhyay, S. (2025). FLAMES: A Hybrid Spiking-State Space Model. arXiv:2504.01257.
  4. 如何解决大模型长距离依赖问题?HiPPO技术深度解析. (2024). 微信公众号.

本文首发于CSDN博客,欢迎转发讨论。如果觉得有帮助,请点赞支持!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐