资讯动态

状态空间模型(SSM)如何解决视频世界模型的长期记忆难题?

发布时间:2026/10/21 3:43:41 来源:尧图企业网站定制
做了很久视频预测和世界模型方向的实验我一直被同一个问题折磨模型在头几十帧生成得还不错一旦窗口拉长到几百帧场景里的物体就开始失忆——杯子颜色悄悄变了、刚从视野里移走的小车再回来时换了位置甚至整个背景都慢慢漂移成了另一种风格。这不是个别模型的毛病而是这类任务的共同瓶颈长期记忆。最近我把状态空间模型State Space ModelSSM这一套思路接进视频世界模型的骨干里试了一把效果比预想中好不少。这篇就把原理、接法、踩坑和评测细节一次讲清楚给正在搞视频生成、预测或者具身智能仿真方向的朋友做个参考。1. 视频世界模型记不住事的根子在哪1.1 世界模型为什么绕不开记忆两个字先统一一下语境。我这里说的视频世界模型指的是以视频为媒介、能根据当前观测和动作输入预测未来帧的那一类模型既包括经典的 action-conditioned video prediction也包括近两年很热的那批可交互视频生成器。它们的共同点是不只是生成一帧好看的画面而是要对一个动态环境建立内部表征预测接下来会发生什么。只要目标是把预测长度从十帧拉到百帧、千帧世界模型就必须具备一种能力把早先出现的物体、场景布局和状态变化长期保存下来并在后续帧中持续引用。比如一个玩具车从画面左侧开到右侧再被遮挡过了50帧重新进入视野理想的世界模型应该还记得它原本的颜色和大致运动状态而不是把它当作一个全新物体重新脑补。这就是长期记忆。我见过不少模型在这个点上翻车。最典型的现象是重启式生成模型生成到一定帧数后画面内容开始模糊化然后变成某种平均场景再过一阵又突然恢复细节但细节已经跟之前的完全对不上了。另一个常见现象是渐进漂移颜色、光照、物体朝向每隔几十帧就变一点几百帧后累积成完全不同的场景。1.2 注意力机制的长序列欠账要追根子先要看现在主流视频模型到底用什么做时序建模。Transformer系模型靠的是自注意力把视频切成 patch 序列后在时空维度上做 attention。注意力机制的优点是灵活、能建模任意长度的依赖但代价是计算量和存储都是序列长度的二次方。放到长视频上这个二次方直接卡死了上下文长度。为了控制成本实际训练时序列往往被截断到几十帧或者用窗口注意力、局部注意力来近似长程关系。问题就来了训练时模型只在短的上下文里见过数据它根本没机会学习跨越100帧的依赖推理时硬让它生成500帧它自然只能靠近期的帧瞎编。这就像一个人从来没读过超过三页的小说你突然要求他把五百页的情节线贯穿起来做不到才是正常的。还有一个被忽视的问题注意力有个隐含假设即每一帧都应该被同等精细地看到。但对长视频来说近期帧需要高分辨率细节早期帧其实只需要被压缩成一个概要状态。注意力没有这种自动的层次感要么都精细存着——存不下要么都被截断——记不住。长期记忆缺失不是某一个模型调参不够而是基础架构表达能力上的结构性缺口。1.3 现有补救方案为什么都不彻底社区当然也试过各种招数。一是把历史帧的特征做池化或聚类塞进一个记忆向量再送到生成器里。这种方案的问题在于记忆压缩方式与预测任务解耦池化操作没有端到端地学会哪些历史信息该保留、哪些该丢弃。二是引入外部记忆库如可读写的内存模块。三是用额外的预测头把历史信息编码成 prompt 注入。这些方案都能缓解短期问题但引入的组件多、训练不稳定而且外部记忆的读写策略经常跟主干模型的任务目标打架。相比之下状态空间模型提供的是一条更本质的路径把记忆作为网络结构的原生属性。RNN那一代也是这么想的但传统RNN在长程依赖上梯度消失严重。SSM在保留状态递推结构的同时通过精心设计的系统矩阵解决了长程梯度问题算是把 RNN 的长期记忆理想真正落地了。2. SSM凭什么能当长期记忆的载体从一组递推公式讲起2.1 线性递推一个不大不小的范式转换状态空间模型的核心就是一组线性递推关系离散形式写出来非常干净h_t A h_{t-1} B x_ty_t C h_t其中x_t是当前输入h_t是模型在时刻 t 的内部状态向量y_t是当前输出A、B、C 是学习到的参数矩阵。看着有点像线性化的 RNN 或者 LSTM 去掉非线性门控之后的样子。但关键区别在于 A 矩阵的结构和初始化方式。如果 A 随便初始化顺着递推展开h_t对h_0的依赖就变成A^t当 A 的特征值模大于1会发散小于1会快速衰减到0这就是传统 RNN 梯度消失的本质。SSM 的做法是用 HiPPO 这类理论框架来初始化 A让递推过程本质上是在做把历史信号按多项式基进行压缩近似于是无论 t 多大状态里都能保留长期信息的成分。这条数学性质直接决定了它能当长期记忆的载体记忆不是靠一个额外模块硬塞进去的而是递推结构本身就在持续累积历史。有一句话对我理解这事儿帮助很大RNN的问题不是递归这个形式错了而是递归里的记忆强度没有理论指导全凭梯度去学。SSM 用可控的方式把长期依赖的容量放进了结构里。2.2 三种等价视角递推、卷积、扫描SSM 还有个特别实用的性质同一个模型可以换三种视角来用。递推视角适合推理时用。因为每一步只需要维护一个固定维度的状态向量推理成本跟序列长度无关是常数级内存。这就意味着在部署时你可以让它滚动生成几千帧而不会像 Transformer 那样 KV cache 越积越重直到卡死。卷积视角适合短序列训练时用。固定长度序列下SSM 的输入输出映射可以等价写成一个全局卷积y K * x其中卷积核K就是由 A、B、C 推导出来的。这个视角下的训练可以直接用卷积算子计算方便做完整的序列级反向传播梯度路径非常干净。扫描视角是另一个工程加速器。由于递推是线性的它满足结合律所以可以像前缀和一样并行化计算也就是并行扫描。训练长序列时不需要真的逐步递推硬件利用率能拉上去。Mamba 这类选择性SSM 之所以能在大模型上落地很大程度上就是靠这个并行扫描把训练效率提上来的。2.3 线性注意力、门控卷积与它们的亲戚关系理解 SSM 还可以放在一个更大的谱系里看。Transformer 的注意力是内容相关的、全局的但代价是二次方复杂度线性注意力把 Softmax 换掉用核函数近似但常因表达能力不足导致性能下滑门控卷积只在局部窗口内交互长程依赖靠层数堆叠。SSM 正好插在这一排架构的中间空档它靠递推获得无限有效感受野又靠线性结构避免了二次方复杂度。业内常说的 S4、S5、Mamba 都是这条线上的公开代表。S4 解决的是系统矩阵结构化和高效训练Mamba 更进一步让 B、C、Δ 这些参数随输入变化实现所谓的选择性让模型能自己决定当前这一步该记住什么、该忘掉什么。这一点对视频特别重要画面静止时模型可以放心保留旧状态画面剧烈变化时它需要快速改写状态。固定参数做不了这种自适应选择性是视频场景下的刚需。用表格快速对比一下三种时序骨干维度Transformer 注意力传统RNN/LSTM状态空间模型(SSM)训练复杂度序列长度二次方线性但难并行线性且可扫描并行推理内存随长度增长常数常数长期依赖强窗口内弱梯度消失强结构化初始化信息选择能力强内容相关注意力弱固定门控中至强需选择性变体对长视频适配上下文受限记忆易衰减理论上可任意长这张表不是要说 SSM 全面碾压 Transformer三者的优势其实互补后面讲接法时会具体展开。3. 把状态空间层接进视频生成器的三条可行路线3.1 路线一整块替换时序注意力最直接的做法是把视频 Transformer 里处理时序那部分 attention 换成 SSM 层空间维度的 attention 保留不动。具体来说视频 patch 序列通常会被组织成 (帧数, 高度块数, 宽度块数) 的三维网格Transformer 的做法是在其中某些维度上做 attention常见的有先空间后时间或者3D分解注意力。替换时只需要把时间维度的 attention那一块换成 SSM 的递推层对每个空间位置的 patch 序列沿时间方向做状态递推。这样空间上的精细关系仍然由 attention 负责时间上的长期累积由 SSM 负责两者各干各擅长的活儿。这个路线的优点是改动最小gradient 计算和现成的训练基建都能复用。我试下来发现一个注意点patch 序列的时间方向递推顺序必须保持因果即每个状态只能看到当前及之前的帧。如果视频编码器用了双方向的时空注意力改造时要小心别把未来信息泄漏进状态否则训练指标很好看推理时一生成就露馅。3.2 路线二混合架构把状态当压缩的历史摘要第二条路线更符合我对记忆分层的理解。视频本身信息量极大直接让单个 SSM 状态去记住全部历史不现实。一个更稳的思路是主干依然用 Transformer 或扩散架构生成当前帧但把一个 SSM 层作为附加的历史压缩器挂在旁边。每次处理完一帧的特征后把压缩后的特征送进 SSM更新一个固定维度的记忆状态。后续每帧生成时把当前帧特征与从状态中读取的摘要信息拼接起来一起送入解码器。这等于在模型里造了一个外接印象笔记注意力负责眼前的细节SSM 负责几十帧以前的概要。这个路线的优势在于不牺牲当前帧的生成质量代价是记忆状态的信息瓶颈需要仔细调状态维度太小什么都存不下太大会导致训练时过拟合短期信息而忽略长期结构。一个相对实用的经验是把记忆状态维度设在 patch 嵌入维度的 2~4 倍再通过一层线性投影降回嵌入维度让网络自己决定压缩程度。3.3 路线三动作条件世界模型的双状态设计做具身智能和仿真方向的朋友可能更关心这条线。在这类场景里世界模型不光要预测图像还必须在给定动作序列的条件下维持对环境状态的一致性。单纯图像级别的记忆是不够的因为画面相似的环境状态可能完全不同比如抽屉关上和打开但相机角度没变——下一帧反应却完全不同。针对这个问题我倾向把 SSM 的隐藏状态直接理解为环境状态的近似模型每吃进一帧观测和对应的动作更新一次环境状态预测下一帧时用更新后的状态加上动作来生成。这本质上是一个可学习的、图像条件下的状态估计器。它的好处是动作与记忆在同一个递推里耦合哪些历史信息值得保留由预测未来需要知道什么这个目标来驱动而不是预先设定规则。实践中有个容易踩的坑动作输入不能偷懒直接和图像特征拼接。动作向量维度低、变化稀疏直接拼进去会被图像的高方差特征淹没。我一般在进入 SSM 之前把动作经过一层小 MLP 升维再与图像特征做逐元素门控融合效果会明显提升。3.4 时序建模 vs 空间生成分工要清楚不管选哪条路线心里都要有一根弦SSM 擅长建模时间依赖不强于空间细节生成。视频画面的高频纹理、边缘锐度、局部运动这些最好交给空间 Transformer、卷积或者 VAE 解码器去处理。如果试图让 SSM 一个人把所有活干了生成结果往往模糊、缺乏结构。我见过一些失败的尝试把整个视频生成网络改成纯 SSM 堆叠结果短段指标还行稍微复杂一点的场景纹理就崩。这不是 SSM 不行而是分工错了。正确的姿势永远是空间精细化 时间记忆化的混合配置高频细节短期捕捉低频情节长期维护。4. 训练和采样阶段最容易翻车的几个细节4.1 短窗训练与长窗推理的断层这是我在实验中踩过的最深的一个坑。训练时为了显卡能跑序列通常切成16帧或者32帧一段推理时却要生成几百上千帧。两者之间的差距不只是长度而是模型根本没在训练中见过长时间依赖的样本状态递推的长期行为完全是外推出来的。解决办法有几个层次。最简单的加大训练序列长度哪怕只能加到64帧也比32帧强不少代价是显存和训练时间。更重要的是做长度课程先短序列训练再逐步拉长序列同时只对后半段做反向传播让梯度在长序列上的传播更稳定。如果框架支持截断式反向传播Truncated BPTT可以把完整长序列切成重叠片段但保留状态跨片段传递这样既能控制显存也能让模型学到跨片段依赖。4.2 选择性SSM的数值稳定性带选择性的 SSMB、C、Δ 都随输入变化在长序列上更容易出现数值问题。原因是 Δ 控制离散化步长输入变化剧烈时 Δ 也会变大可能导致状态更新的特征值超出稳定区域。我碰到过训练中期 loss 突然变成 NaN排查了两个小时最后定位到是某一帧输入异常值导致 Δ 爆炸。常规手段是加梯度裁剪但这不够。更有效的做法是把 Δ 的输出激活函数限制在对数空间并对状态更新做一次显式的模长约束另外把递推状态保持在 float32 精度不要在中间计算里为了省显存切成 float16。还有一个容易被忽略的点SSM 层前后要有正常的归一化层最好放在残差连接之内、与状态更新并列的位置。位置放错了模型要么难以收敛要么推理性能大幅跳水。4.3 递推顺序与时空扫描策略视频是三维结构SSM 沿哪个维度扫描是个值得琢磨的问题。常见方案是沿时间轴扫描把每帧的 patch 按空间位置排列好逐帧更新状态。但 patch 的排列顺序会影响学习难度纯行优先扫描会让垂直方向的依赖跨越大距离等效上下文感受野变窄。一个折中做法是把三维 patch 网格按蛇形或者块状Z序摊平让相邻 patch 在序列中的距离尽量短。另一个做法是双方向 SSM正向扫捕捉过去信息反向扫捕捉全局结构最后拼接。实测下来正向单方向在长程记忆任务上略好但收敛慢双向收敛快却容易泄漏未来信息。如果是自回归生成场景老老实实用单向因果扫描不要图双向带来的收敛速度。4.4 采样模式并行解码还是逐步滚动推理阶段的实现方式也直接影响记忆的观感。纯自回归逐帧生成最稳每一帧都是基于真实历史状态递推出来的记忆链条不会断但速度慢。并行解码类似 diffusion model 直接生成多帧快但各帧之间容易出现不一致SSM 的长期状态没有得到充分利用。我最后的工程实践是折中方案用一个小步长的自回归预热阶段维护状态每积累 N 帧后再交给并行生成器一次性产出 M 帧画面的连续性和吞吐量都能接受。这个方案适合生成几百帧的中长视频再长的场景建议直接用纯自回归。5. 评测长期记忆不能只看FVD得分开算账5.1 为什么短段指标会骗人如果只看 FVD 这种整体分布指标SSM 版本和 Transformer 基线在 16 帧短段上差距很小甚至有时候基线更好。这很正常短段内依赖距离短注意力天然占优。但把评测窗口拉到 128 帧、256 帧差距会迅速拉开。所以第一条经验就是评测世界模型的长期记忆必须把指标按预测区间分层统计。具体做法是把预测结果按 horizon 分桶例如 0-16、16-64、64-256、256-512 帧分别计算 LPIPS、FVD、SSIM 这类指标。很多论文只报告总体均值长程的崩坏被短程的好成绩平均掉了。我建议看分桶曲线一个健康的模型应该是短程指标和长程指标差距不大的曲线而不是断崖式下跌。5.2 经典场景物体持久性的专项测试通用指标之外我强烈建议加一组物体持久性专项测试这是记忆能力最直接的探针。设计很简单序列前几帧在画面中放入一个视觉特征鲜明的小物体比如一个红球然后让它被遮挡或移出画面若干帧后再回到画面。分别记录模型在离开前和回来时对该物体的生成颜色、形状、位置的还原度。我在这种测试上看到过非常戏剧性的差异。基线模型经常把红球在离开后再回来时重生成成蓝球或者完全不同的形状SSM 版本虽然还原也不是百分百准确但至少能保持类别和大致颜色不变。这个测试不用在复杂数据集上跑自己造几百个简单合成序列就很有说服力。还有一种更细的读法在生成到第 300 帧时用一个线性探针去状态向量里分类画面最初的主要物体是什么。如果状态里真的保留了长期信息这个探针的分类准确率会显著高于随机水平。这可以单独用来验证记忆是否真的写进了状态而不是生成器恰好通过其他捷径实现了表面一致性。5.3 下游任务分数才是终极标尺对世界模型来说图像指标只是中间变量最终要看它能不能支持下游任务。如果目标是做模型预测控制或强化学习直接对比使用模型滚动预测的规划成功率是最诚实的长效评测。做法是用同一个策略分别依赖基线模型和 SSM 模型做 N 步规划记录任务成功率随规划步数的衰减曲线。我观察到常规模型在规划超过约 64 步后成功率急剧下降SSM 版本能把这个拐点往后推。这说明长期记忆改善的不是视觉上的好看而是状态估计的可靠性和可规划性。如果大家的工作面向生成创作也可以用长故事连贯性的人工评测给出一个 300 帧的成片标注哪些片段出现明显的物体属性错乱这个比例就是很直观的记忆质量指标。5.4 消融实验里必做的几个对照评测 SSM 方案的贡献时至少要做三组消融一是去掉 SSM 层、退回纯窗口注意力验证长程指标确实下降二是保持 SSM 层但关闭选择性机制固定 B、C、Δ验证选择性在视频场景的增益三是把 SSM 层换成同样参数量的双向 LSTM排除只是因为多了个循环结构的干扰。这三组对照做完结论才站得住脚。6. 一些实战体会和下一步想试的东西6.1 如果从零开始我建议的抄作业顺序给想快速上手的同学一个最小可行路径先拿一个现成的视频预测 Transformer 骨干只替换时间维度的 attentionSSM 层先用无选择性的稳定版本跑通 64 帧训练和 256 帧推理把分桶评测搭好再引入选择性机制。直接一步上 Mamba 那种复杂选择性结构遇到数值不稳的时候很难定位是模型问题还是我的训练代码问题。参数规模上我建议 SSM 层的状态维度先设为隐藏维度的 1~2 倍不要贪大。记忆状态越大训练时越容易学会背近期训练样本的统计特征反而忽略真正的动态规律。模型跑通了以后再逐步加维度、加层数每次只改一个变量。6.2 现在没有解决的问题和我的倾向诚实地说SSM 也不是银弹。我在实验中发现两个没完全解决的问题。一是在非常复杂的真实视频上状态向量容易被高频动态干扰记忆的选择性还不够锐利偶尔还是会出现重要物体被过早遗忘的情况。二是训练和推理的长度差异仍然存在长程课程训练能缓解但没根治。我目前的倾向是结合压缩记忆和某种自主回溯机制让模型在判断当前状态信息不足时主动回看历史关键帧这相当于给状态递推加了一个主动回忆的控制器算是下一步最想试的方向。最后分享一个工程上的小技巧在 SSM 推理循环里定期把递推状态以低频率写入日志并对比能直观看到状态在长序列上的漂移模式。我看过很多次调试界面后才发现模型表现变差的时刻通常正是状态向量的范数突然跳变的时刻顺着这个线索定位问题比瞎调学习率高效得多。搞视频世界模型的人都知道这活儿最怕看起来能跑长期记忆的坑更是如此希望这篇能帮大家少走几步。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑