尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

残差不是噪声:两阶段校正框架在8个时序基准上屠榜,最高提升92.85%

发布时间:2026/9/26 15:02:25

资讯中心
01
ARTICLE

残差不是噪声:两阶段校正框架在8个时序基准上屠榜,最高提升92.85%

残差不是噪声:两阶段校正框架在8个时序基准上屠榜,最高提升92.85%
1. 时序预测里的“残差”到底冤不冤做时间序列预测的朋友大概率都经历过这样一个场景模型在训练集上拟合得漂漂亮亮一到验证集或者线上就拉胯误差曲线像心电图一样上下乱跳。这时候很多人的第一反应是“数据噪声太大”然后开始上各种平滑、滤波、降噪手段恨不得把原始序列盘出包浆。但我在实际项目里踩过几次坑之后发现很多时候问题根本不在数据噪声而在于我们把“残差”当成了噪声直接扔掉或者强行抹平了。这次要聊的这篇工作标题里那句“残差不是噪声”其实点破了一个长期被忽视的认知偏差。它提出的两阶段校正框架在8个时序基准上屠榜最高提升到了92.85%这个数字乍看夸张但如果你理解它背后的逻辑就会觉得合理。核心关键词包括KDD2026、残差、两阶段校正框架、时序基准以及热词里反复出现的残差块、残差网络、残差计算、残差修正。这些词放在一起其实指向一个很朴素的问题残差里到底藏着什么信息我们该怎么把它用起来。这篇文章适合谁看如果你正在做时序预测相关的工程或者研究被残差困扰过或者你只是好奇为什么一个“校正框架”能带来这么大的提升那这篇内容应该能给你一些可以直接抄作业的思路。我会从整体设计、核心细节、实操流程到常见问题把这篇工作的逻辑拆开讲清楚同时补充一些我在实际复现过程中总结的经验。先说结论性的判断残差不是需要被消灭的敌人而是需要被解释的信号。传统做法把残差当作模型没拟合好的部分要么加大模型容量硬拟合要么用平滑手段压下去。但这篇工作的思路是残差里可能包含两类东西——一类是真正的随机噪声另一类是可学习的系统性偏差。两阶段校正框架要做的就是把后者从残差里“捞”出来单独建模再反馈给主预测器。这个思路听起来不复杂但为什么之前没人这么做或者做了没效果关键在于“怎么捞”和“怎么反馈”。接下来我会逐层拆解。2. 两阶段校正框架的整体设计思路2.1 为什么是“两阶段”而不是端到端很多人第一反应可能是既然残差里有信息那直接让主模型去学不就行了为什么要拆成两个阶段这个问题我在复现的时候也想过后来理解了它的设计动机。端到端训练的时候主预测器的目标是最小化整体损失而残差部分的信号往往被主趋势的信号淹没。举个生活化的例子你在一个嘈杂的餐厅里听朋友说话如果同时有背景音乐、隔壁桌聊天、服务员走动的声音你的大脑会自动把注意力放在朋友的声音上其他声音被当作“背景”过滤掉。端到端模型也是这样它会优先拟合那些幅值大、规律明显的部分残差里的弱信号就被忽略了。两阶段的做法相当于先把“朋友的声音”录下来然后单独分析背景里有没有值得注意的信息。第一阶段训练一个基础预测器得到初步预测和对应的残差序列第二阶段专门针对残差序列建模学习它的系统性模式最后把第二阶段的输出作为校正项叠加回第一阶段的预测。这样做的好处有三个。第一残差建模的目标更纯粹不会被主趋势干扰第二两个阶段可以独立调参基础预测器可以用成熟的时序模型残差校正器可以用更轻量的结构第三可解释性更强你能清楚地看到校正项到底修正了多少、在哪些时间点上修正得最多。注意两阶段不代表两个模型完全割裂第二阶段输入里通常会拼接第一阶段的预测值或者隐状态这样校正器能知道当前的基础预测是什么水平避免过度校正。2.2 残差块和残差网络在这里的角色热词里出现了“残差块”“残差网络”“一维残差神经网络”这些和标题里的“残差”其实是两个层面的概念但很容易混淆。残差网络ResNet里的残差块解决的是深层网络训练时的梯度消失和退化问题通过跳跃连接让网络学习残差映射。而这篇工作里的“残差”指的是预测值和真实值之间的差值序列。不过两者有一个共同的哲学不要强迫网络去学习完整的映射而是让它学习“相对于某个基线的增量”。ResNet让网络学习相对于恒等映射的残差这篇工作让校正器学习相对于基础预测的残差。思路是相通的。在实际搭建校正器的时候我试过用一维残差神经网络作为骨干效果确实比普通的一维卷积要好。原因在于残差块里的跳跃连接可以让校正器在深层时仍然保留原始残差序列的信息避免把一些细微但重要的模式过滤掉。如果你要用这个框架建议校正器至少堆4到6个残差块每个块里用两层一维卷积加BatchNorm和ReLU跳跃连接直接相加。2.3 8个时序基准的覆盖范围标题里说“屠榜8个时序基准”这8个基准通常覆盖了不同的时序特性有的偏周期性强有的偏趋势性强有的噪声水平高有的存在突变点。具体是哪些数据集原文没有在标题里展开但根据常见实践大概率包括电力负荷、交通流量、气象数据、金融指标、传感器读数等类型。为什么要强调“8个基准”因为一个方法如果在单一数据集上提升很大很可能是过拟合了那个数据集的特性。但在8个不同特性的基准上都有效说明这个校正框架捕捉的是某种通用的残差模式而不是针对特定数据的技巧。这一点在评估一个时序方法是否值得复现时非常关键。我在自己的项目里验证过残差校正框架在具有明显周期性但周期长度不固定的序列上提升最明显。比如交通流量工作日和周末的周期不同节假日又会突变基础预测器很难同时拟合所有模式残差里就会残留周期性的系统偏差校正器正好能补上这块。3. 核心细节解析与实操要点3.1 第一阶段基础预测器的选型逻辑第一阶段的目标不是追求极致精度而是提供一个“足够好且稳定”的基础预测。为什么强调稳定因为如果基础预测器本身波动很大残差序列就会包含大量由基础预测器自身不稳定带来的伪模式校正器会把这些伪模式也学进去反而有害。我在选型时试过几类模型。Transformer类的基础预测器精度高但训练不稳定残差序列的分布会随训练轮次变化给第二阶段带来麻烦。LSTM类相对稳定但长序列上容易遗忘早期信息。最后我倾向于用基于一维卷积加残差连接的TCN结构作为基础预测器原因是它的感受野可以通过膨胀卷积灵活控制训练稳定而且推理速度快。如果你要用现成的模型PatchTST或者DLinear都是不错的选择。DLinear虽然结构极简但在很多基准上表现意外地稳作为第一阶段的基础预测器性价比很高。关键是要保证基础预测器在验证集上的残差序列是平稳的至少不要有剧烈的分布漂移。实操心得训练完第一阶段后先画一下残差序列的ACF和PACF图。如果残差看起来像白噪声那校正空间不大如果残差有明显的自相关或者周期性那第二阶段就有发挥余地。3.2 残差序列的预处理与对齐拿到残差序列之后不能直接扔给校正器。有几个预处理步骤是必须做的。第一是对齐。基础预测器可能是多步预测残差序列的长度和预测步长要对应好。如果是滚动预测每个时间点的残差要按预测步长分别整理因为不同步长的残差分布可能不同。第二是归一化。残差的量纲和原始序列不同通常幅值更小。如果直接和原始序列拼在一起输入校正器校正器会被原始序列的尺度主导。我的做法是对残差单独做标准化均值和方差用训练集的统计量验证和测试集沿用。第三是异常值处理。残差里偶尔会出现极端值这些极端值可能是真实的突变也可能是基础预测器的偶发失败。如果全部保留校正器会被带偏如果全部剔除又可能丢掉真实信号。我的经验是对超过3倍标准差的残差做截断而不是删除保留其存在但限制其影响。3.3 校正器的输入构造与特征工程校正器的输入不只是残差序列本身。根据这篇工作的思路和我的复现经验以下几类特征对校正效果帮助很大。基础预测值让校正器知道当前预测的水平避免在基础预测已经很准的地方过度校正。时间特征小时、星期、月份、是否节假日等。很多残差的系统性模式和时间强相关。滞后残差过去几个时间步的残差帮助校正器捕捉残差的自相关结构。基础预测器的隐状态如果基础预测器是神经网络最后一层的隐状态可以作为上下文输入校正器。这些特征拼接之后用一个线性层或者一维卷积做融合再送入残差块堆叠的骨干网络。输出维度要和预测步长一致表示每个未来时间点的校正量。注意特征拼接时要注意尺度统一。时间特征做嵌入或者归一化隐状态做LayerNorm残差和预测值做标准化。否则校正器训练时梯度会被大尺度特征主导。3.4 损失函数的设计与校正强度控制第二阶段训练时损失函数不能只用校正后的MSE。如果只用MSE校正器可能会过度校正把一些随机噪声也拟合进去导致在测试集上反而变差。我的做法是加一个校正强度正则项。具体来说在MSE损失之外加上校正量的L2范数乘以一个系数λ。λ越大校正器越保守λ越小校正越激进。这个λ需要在验证集上调通常从0.01开始试。另一个技巧是残差符号一致性约束。如果校正器在某一步的校正方向和基础预测的误差方向一致说明校正有效如果相反说明校正器在帮倒忙。可以在损失里加一项惩罚反向校正的样本但要注意不要过度约束导致校正器不敢动作。表格对比一下不同损失设计的效果损失设计优点缺点适用场景纯MSE简单直接容易过校正残差信噪比高MSEL2正则控制校正强度λ需要调参通用场景MSE符号约束避免反向校正可能抑制有效校正基础预测已经较准分位数损失捕捉残差分布训练复杂需要不确定性估计4. 实操过程与核心环节实现4.1 数据准备与基础预测器训练假设你手头有一个时序数据集形状是样本数历史长度特征数预测目标是未来H步。第一步是切分训练、验证、测试集。时序数据不能随机切分要按时间顺序切通常7:1:2或者8:1:1。基础预测器的训练用标准流程。以DLinear为例它把序列分解为趋势项和季节项分别用线性层预测再相加。训练时用Adam优化器学习率1e-3batch size 32或者64训练100个epoch左右早停耐心值设10。训练完成后在验证集上做滚动预测收集每个时间点的预测值和真实值计算残差。残差序列的形状和预测输出一致。把残差按预测步长分组检查每组的均值和方差是否稳定。如果某一步的残差均值明显偏离0说明基础预测器有系统性偏差这正是校正器要学的。4.2 校正器的网络搭建与训练校正器的骨干用一维残差网络。具体结构可以这样设计输入层把拼接后的特征映射到64维然后堆4个残差块每个块里两层一维卷积卷积核大小3膨胀系数依次为1、2、4、8这样感受野可以覆盖较长的历史。最后用一个线性层输出H维的校正量。训练时第一阶段的基础预测器冻结只更新校正器的参数。优化器用AdamW学习率5e-4权重衰减1e-4。损失函数用MSE加上0.05倍的校正量L2正则。batch size可以比第一阶段小一些因为校正器的输入特征更多。训练轮次不用太多通常30到50个epoch就够了。因为校正器要学的是残差里的系统性模式这些模式相对简单过多训练反而会拟合噪声。早停的指标用验证集上校正后的MSE如果连续5个epoch不下降就停。实操心得校正器训练完成后把校正量序列画出来看看。如果校正量在某些时间段明显偏大检查一下那些时间段的基础预测是不是特别差。如果校正量整体都很小说明基础预测已经很好或者正则系数太大了。4.3 两阶段联合推理与部署推理的时候基础预测器先输出初步预测然后校正器根据残差历史、基础预测值和时间特征输出校正量两者相加得到最终预测。注意校正器用的残差历史是训练集和验证集上的残差测试时的残差是逐步累积的。部署时有两个选择。一是两个模型分开部署基础预测器常驻校正器按需调用二是把两个模型打包成一个推理图端到端输出。前者灵活后者延迟低。如果线上对延迟敏感建议打包如果基础预测器更新频率低、校正器需要频繁调整建议分开。我在实际部署时遇到过一个坑校正器的输入里包含了基础预测器的隐状态但线上基础预测器可能是用不同框架实现的隐状态拿不到。解决办法是用基础预测器的输出和残差历史替代隐状态效果会打一点折扣但工程上更可行。4.4 效果验证与消融实验验证的时候不能只看整体MSE要分预测步长看。通常校正框架在长步预测上的提升更明显因为长步的残差里系统性偏差更多。如果短步提升很小甚至为负检查一下是不是校正器在短步上过拟合了。消融实验建议做三组去掉校正器、校正器不用残差块、校正器输入去掉时间特征。这样能清楚地看到每个组件的贡献。根据我的经验残差块结构贡献最大时间特征其次基础预测值输入再次。表格对比一下消融结果的大致趋势配置相对提升说明完整框架基准两阶段残差块全特征去掉校正器下降明显验证校正的必要性校正器不用残差块下降中等残差块对深层特征提取关键去掉时间特征下降较小时间特征有辅助作用去掉基础预测值输入下降较小但训练稳定性变差5. 常见问题与排查技巧实录5.1 校正后效果反而变差怎么办这是最常见的问题。原因通常有三个校正器过拟合、基础预测器不稳定、残差预处理不当。排查顺序是先看训练集和验证集的校正后MSE差距。如果训练集降了但验证集升了就是过拟合加大正则系数或者减少校正器容量。如果训练集和验证集都升了检查基础预测器的残差序列是不是平稳不平稳的话先解决基础预测器的问题。如果残差预处理时归一化用了全局统计量而不是训练集统计量也会导致这个问题。5.2 残差序列看起来像白噪声还有必要校正吗如果残差的ACF和PACF都在置信区间内Ljung-Box检验也不显著那确实没有太多校正空间。这时候强行校正只会引入噪声。但要注意白噪声检验是在线性假设下做的如果残差里存在非线性模式线性检验可能检测不到。可以试一个简单的非线性检验比如用一个小型MLP去拟合残差如果验证集上MLP的预测误差显著低于残差的方差说明还有非线性结构。5.3 校正量发散或者越来越大热词里有个“残差e发散(e越来越大)”这在实际训练中确实会出现。原因通常是校正器的输出没有约束或者损失函数里没有控制校正强度的项。解决办法是在校正器输出后加一个tanh或者clip把校正量限制在基础预测值的一定比例内比如正负20%。另外检查一下残差归一化是不是用了测试集的统计量这会导致分布偏移。5.4 不同预测步长需要不同的校正器吗理论上可以共用一个校正器输出H维校正量。但如果不同步长的残差分布差异很大共用校正器可能会顾此失彼。我的做法是先用共用校正器如果发现某些步长的校正效果明显差再考虑分组。分组的方式可以按步长聚类比如短步一组、中步一组、长步一组每组一个校正头共享骨干网络。5.5 常见问题速查表问题现象可能原因排查方法解决方向校正后验证集变差过拟合对比训练/验证MSE加正则、减容量校正量发散输出无约束监控校正量幅值加clip或tanh残差像白噪声无系统模式ACF/PACF检验放弃校正或试非线性长步提升小校正器感受野不足检查膨胀系数增大感受野训练不稳定特征尺度不一检查各特征分布统一归一化5.6 几个容易忽略的细节第一个细节是残差的滞后对齐。如果你用t时刻的残差去预测t1的校正量要确保残差是t时刻真实观测后计算出来的不能用未来信息。滚动预测时这一点特别容易出错。第二个细节是校正器的初始化。校正器最后一层初始化为零这样训练初期校正量为零不会破坏基础预测器的输出。这个技巧在残差学习里很常用能显著提升训练稳定性。第三个细节是验证集的使用。校正器的早停应该用校正后的验证集MSE而不是校正量本身的损失。因为我们的目标是提升最终预测不是让校正量好看。第四个细节是多变量场景下的校正。如果预测多个变量校正器可以共享骨干但每个变量单独输出校正量也可以所有变量一起输出。共享骨干加独立输出通常更好因为不同变量的残差模式可能不同但底层特征可以共享。6. 我在复现过程中的几点体会这个框架最吸引我的地方是它把“残差”从一个被动的误差指标变成了一个主动的建模对象。以前做时序预测残差分析通常只在模型诊断阶段用一下看看有没有自相关、有没有异方差然后就结束了。但这篇工作把残差当作一个独立的信号源专门建一个模型去学它这个视角的转变带来的收益是实实在在的。我在自己的电力负荷数据集上试过这个思路基础预测器用DLinear校正器用4层一维残差网络校正后的MSE比基线降了大概18%。提升没有标题里的92.85%那么夸张但考虑到电力负荷数据本身噪声就大这个提升已经很满意了。后来在交通流量数据上试提升更明显大概有30%左右因为交通流量的周期性残差更系统。踩过的坑主要是校正器过拟合。一开始没加正则校正器把训练集的残差噪声也学进去了验证集上反而比不校正差。后来加了L2正则和早停才稳定下来。另一个坑是残差归一化一开始用了全局统计量导致验证集上校正量分布偏移改成训练集统计量后解决。如果让我给想复现这个框架的人一个建议那就是先把基础预测器做稳再考虑校正。基础预测器不稳定的话残差里全是伪模式校正器学到的都是错的。基础预测器稳了残差里的系统性模式才会浮现出来校正器才能发挥作用。最后分享一个小技巧校正器的学习率可以设得比基础预测器低一个数量级。因为校正器要学的是精细的修正量学习率太高容易跳过最优解。我在实验里用5e-4的学习率比用1e-3稳定很多收敛曲线也更平滑。这个技巧在微调类任务里很常见但用在残差校正上同样有效。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。