告别逐点误差:ICML 2025 提出“片段级结构损失”,大幅提升时序预测准确性

ICML 2025提出PS Loss,通过局部结构对齐显著提升时序预测精度,超越传统逐点损失。

原文标题:ICML 2025 | 时序预测新 Loss:Patch 级别结构损失

原文作者:数据派THU

冷月清谈:

现有时间序列预测模型普遍依赖均方误差(MSE)等逐点损失函数,但这忽略了时序数据中固有的结构性依赖,导致预测结果在相关性、方差及均值等方面与真实数据存在偏差。为了解决这一挑战,天津大学研究团队提出了一种创新的片段级别结构损失(PS Loss)。该方法的核心在于通过在数据的局部片段上,精准对齐预测序列与真实序列的相关性、方差和均值,从而实现对复杂时序模式的更细致建模。

PS Loss主要包含三个关键组成部分:首先,**基于傅里叶变换的自适应分段(FAP)**能够将长序列智能地划分为若干片段,确保每个片段尽可能捕获周期性结构。其次,在这些独立片段上,**片段级别结构损失(PS Loss)**通过皮尔逊相关系数、KL散度(针对方差)和MAE(针对均值)三个角度,综合度量预测与真实数据之间的结构差异。最后,**基于梯度的动态权重调整(GDW)**策略被引入,它能动态平衡这三项结构损失的权重,防止某一项在优化过程中占据主导地位。最终,PS Loss与传统MSE加权组合,形成了更全面的优化目标。大量实验结果表明,PS Loss显著提升了Transformer、MLP、CNN乃至LLM等多种前沿时序预测模型在不同数据集上的性能,并展现出优异的泛化能力和视觉上更佳的预测效果。

怜星夜思:

1、文章提到了"非平稳性"是传统全局统计量(比如全局相关性、方差、均值)在时序预测中遇到的难题。那么,除了PS Loss这种"分段"处理的方法,在解决时序数据的非平稳性上,大家还了解哪些常见或前沿的技术?这些技术和PS Loss的思路有什么异同呢?
2、文章提到最终损失函数由MSE和PS Loss加权组合而成。在实际项目应用中,我们该如何权衡MSE和PS Loss的权重(也就是那个参数λ)呢?有没有什么经验或者方法可以参考,来决定什么时候应该更侧重数值精度,什么时候更侧重结构对齐?
3、PS Loss在计算时序片段的结构差异时,分别用了皮尔逊相关系数(相关性)、KL散度(方差)和MAE(均值)。大家觉得,除了这三类,还有没有其他在时序结构对齐上可能有效的统计量或距离度量?它们和文章中选择的这三项比,各自的优势和劣势可能是什么?

原文内容

图片
本文约2000字,建议阅读8分钟
本文提出了片段级别结构损失函数 Patch-wise Structural (PS) Loss,通过在局部片段上对相关性、方差和均值进行对齐,从而实现对时间序列结构的更细致建模。

现有预测模型大多依赖均方误差等逐点损失函数,这类方法将每个时间步视为独立单元,忽略了时序数据固有的结构依赖性,导致难以准确捕捉复杂的时序模式。


为应对这些挑战,天津大学研究团队提出了一种创新的片段级别结构损失(PS Loss),通过片段级时序对比来增强结构对齐能力。PS Loss 为复杂时序数据的精确建模设立了新基准,为时序损失函数设计提供了全新视角。大量实验表明,PS Loss 显著提升了前沿模型在多样化现实数据集上的预测性能。



【论文标题】
Patch-wise Structural Loss for Time Series Forecasting 
【论文地址】
https://arxiv.org/abs/2503.00877 
【论文代码】
https://github.com/Dilfiraa/PS_Loss

研究背景


近年来,基于深度学习的时间序列预测模型在建模复杂依赖关系方面取得了显著进展,但大多数方法在训练过程中依然采用 MSE 作为损失函数。

MSE 通过计算预测值与真实值之间的逐点差异进行优化,从而忽略了时间序列中的结构性差异。论文中的图1展示了三个具有相似 MSE 值,但结构差异显著的预测结果:

(a)相关性较低,整体趋势不一致;
(b)方差不匹配,波动幅度存在差异;
(c)均值偏移,整体水平发生偏差。


这些例子表明,仅依赖 MSE 难以有效衡量预测序列与真实序列之间的结构对齐程度。相关性、方差和均值能够从不同且互补的角度刻画时间序列之间的结构差异。

然而,直接在整个序列上对这些统计特征进行对齐仍存在显著不足。由于时间序列往往具有非平稳性,这些特征在不同时间段会呈现动态变化,仅使用全局统计量会忽略序列在局部区域的细粒度差异。

综上,本文提出了片段级别结构损失函数 Patch-wise Structural (PS) Loss,通过在局部片段上对相关性、方差和均值进行对齐,从而实现对时间序列结构的更细致建模。


方法介绍


该方法包括三个关键组成部分:基于傅里叶变换的自适应分段(FAP)、片段级别结构损失(PS Loss),以及基于梯度的动态权重调整(GDW),如下图所示。



01 基于傅里叶变换的自适应分段 


为了更有效地捕捉时间序列中的局部结构,PS Loss 采用基于傅里叶变换的自适应分段(FAP)将预测序列与真实序列划分为若干片段。该划分基于傅里叶变换提取出的主导周期,使得每个片段尽可能覆盖周期性结构。同时,为避免片段长度过大而掩盖局部细节,引入阈值 δ 控制最大片段长度,从而在结构完整性与局部细粒度之间实现平衡。


02 片段级别结构损失(PS Loss) 


在划分后的每个局部片段上,PS Loss 从三个互补角度度量预测值与真实值之间的结构差异:

  • 相关性损失: 通过皮尔逊相关系数计算预测片段与真实片段之间的相关程度,用于衡量两者在方向与整体趋势上的一致性。


  • 方差损失: 通过计算两个序列 softmax 后的 KL 散度,刻画不同时间步的相对偏离程度,从而衡量预测与真实序列在局部波动强度上的一致性。



  • 均值损失: 通过计算片段均值间的 MAE,度量整体数值上的偏移情况。



最终的 PS Loss 为三项损失的加权和:



03 基于梯度的动态权重调整 


为了在训练过程中实现三个结构损失子项之间的合理权重平衡,防止某一项在优化中占据主导地位,PS Loss 引入了基于梯度的动态权重调整(GDW)策略。 在每一次训练迭代中,GDW 会分别计算三项结构损失相对于模型输出层参数的梯度,并根据梯度范数动态分配权重,从而确保三项指标在训练中保持平衡优化。此外,GDW 引入两个动态因子,根据相关性和方差的对齐程度动态调整均值损失的权重,使其在结构逐步对齐后逐步增强作用。


最终的损失函数由 MSE 和 PS 损失组成,两者通过权重系数 λ 进行加权组合:



实验结果


  • 主实验:


本文在基于 Transformer、MLP、CNN 和 LLM 等不同主干结构的 7 个SOTA代表性模型上进行了实验。结果表明,PS Loss 在不同模型和数据集上均展现出良好的适应性与稳定的性能提升,验证了其在时间序列预测任务中的有效性。




  • Zero-shot 实验:


PS Loss 在跨数据集预测任务中整体优于 MSE,展现出了更好的泛化能力。



  • 预测可视化: 


使用 PS Loss 后,模型生成的序列在趋势、波动和均值上与真实序列更加一致。



编辑:王菁





欢迎大家扫码加入粉丝群



 



关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。




新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

问:除了这三类,还有没有其他在时序结构对齐上可能有效的统计量或距离度量?

答:有啊!我觉得一个很直接的思路是考虑峰值和谷值的对齐。比如,医疗数据心电图的R波,或者地震波的震级,这些关键点的出现时间和幅度,对预测结果的解读至关重要。

* 方法:可以设计一个专门的损失项,比如检测预测序列和真实序列中的峰值(或谷值),然后计算这些峰值对之间的距离(比如时间差和幅度差的加权和)。
* 优势:这能更直观地捕捉序列的“特征事件”,对周期性或突发事件的预测特别有效,因为它直接关注这些“里程碑式”的点。
* 劣势:通用性可能不如均值、方差和相关性,因为它依赖于特定“峰值”或“谷值”的定义和检测算法,而且对于没有明显周期性或峰谷结构的数据,效果可能不佳。而且,如果预测的峰值稍微偏离一点点时间,但幅度对了,怎么惩罚也需要仔细设计。PS Loss那种更宏观的结构对齐,能抓住主要矛盾,这个则更偏向细节。

哈哈哈,除了这些“正经”的统计量,我倒是希望能有一个能衡量“气质”的损失函数!比如说,我们预测的股价走势,除了相关性、方差、均值要对,可能还有一个微妙的“情绪”或“风格”要像原版。比如,如果原始股市是小打小闹,突然预测出来一个暴涨暴跌,那即使相关系数很高,感觉上还是不对劲。

但这可能就太科幻了,毕竟“气质”这东西怎么量化呢?不过话说回来,PS Loss用KL散度来衡量方差分布,有点像在捕捉这种“波动气质”了,毕竟KL散度反映的是两个分布的差异,而不仅仅是单一的方差数值。如果能结合像CNN那种提取特征的方式,是不是可以提炼出更“高级”的时序特征,然后对这些特征做对齐呢?感觉这已经超出统计范畴,有点深度学习的味儿了。

非平稳性嘛,简直是时序预测的“魔鬼”!我听过比较有意思的是“对抗性学习”(Adversarial Learning)在时序数据上的应用。简单说就是,训练一个生成器去生成预测序列,再训练一个判别器去判断生成序列和真实序列是不是来自同一个分布。如果判别器分不出来,就说明生成器学到了真实数据的分布特性,包括它的非平稳性。这跟PS Loss直接去对齐相关性、方差、均值不太一样,对抗性学习更像是让模型“盲测”过关,整体感觉上像就行,PS Loss则更像是给出了具体的“打分项”。各有各的妙处,对抗性学习更玄乎一点。

关于λ的权重分配,这在实际应用中是个典型的超参数调优问题,需要根据具体的业务场景和数据特性来决定。没有一劳永逸的普适值,但有一些经验和方法可以参考:

1. 业务需求驱动
* 侧重数值精度(λ小,甚至为0):如果你的应用对预测的绝对数值误差要求极高,比如金融交易中对具体价格的毫厘不差,或者工业控制中对某个关键参数的精确预测,那么MSE的权重就应该更高。此时,即使预测趋势稍有偏差,但只要数值非常接近,就认为是有价值的。
* 侧重结构对齐(λ大):如果更关心预测序列的整体趋势、波动模式、周期性以及异常点的捕捉能力,比如宏观经济预测、负荷曲线预测(需要把握峰谷变化)、疾病传播趋势预测(关注波峰出现时机),那么PS Loss的权重就应该更高。在这种情况下,允许预测数值在小范围内波动,但要求其“走势”与真实数据高度吻合。
2. 数据特性分析
* 如果数据噪声较大,或者突变频繁,纯MSE可能容易过拟合噪声点,此时增加PS Loss的权重可以帮助模型学习更鲁棒的结构。
* 如果数据具有明显的周期性或季节性,且你希望模型能准确捕捉这些模式,那PS Loss中的FAP和相关性损失会很有帮助,应适当提高其权重。
3. 调优策略
* 网格搜索/随机搜索:这是最直接的方法,设定一个λ的范围,然后通过交叉验证来寻找最优值。
* 贝叶斯优化:更高效的超参数搜索方法,尤其在搜索空间较大时。
* 多目标优化/帕累托前沿:可以将MSE和PS Loss视为两个独立的优化目标,通过生成帕累托前沿来观察不同λ值下两者之间的权衡关系,然后根据业务需求选择一个平衡点。
* 动态调整:某种程度上GDW已经做了类似的事情,但在更高的层次上你也可以尝试在训练的不同阶段动态调整λ,比如初期偏向MSE快速收敛,后期增加PS Loss权重精调结构。但这种方法更复杂,需要仔细设计。

总的来说,λ的设置是一个艺术与科学结合的过程,需要反复尝试和评估。

这是一个很好的拓展性问题,能激发我们对时序相似性度量的深入思考。除了文章提到的三类,确实还有很多统计量或度量方法,各有利弊:

1. 动态时间规整(Dynamic Time Warping, DTW):DTW是一种衡量两个时间序列相似程度的算法,即使它们在时间轴上存在拉伸或压缩,也能找到最佳对齐路径。
* 优势:在形状相似性方面表现卓越,对时间轴上的局部偏移和非线性变形有很强的鲁棒性。
* 劣势:计算复杂度较高($$\mathcal{O}(NM)$$,N和M是序列长度),不适用于大规模或长序列的批处理训练;且DTW不直接可微,难以将其直接作为损失函数进行梯度下降优化,需要做近似或特殊处理。
2. 互信息(Mutual Information):衡量两个随机变量之间相互依赖的程度,可以捕捉到非线性的依赖关系。
* 优势:能够发现更复杂的非线性相关性,不局限于线性相关。
* 劣势:计算复杂,对数据分布的估计依赖较大,且直接作为损失函数同样存在可微性问题和优化难度。
3. Earth Mover’s Distance (EMD) / Wasserstein Distance:衡量将一个分布“转换”成另一个分布所需的最少“工作量”,可以用于比较序列的整体分布。
* 优势:比KL散度对离群值更鲁棒,且能更好地反映两个分布之间的“距离”,尤其在分布没有重叠时表现优秀。
* 劣势:计算成本相对较高,且可能过于关注整体分布,而忽略了序列内部的局部排序或趋势。
4. 格兰杰因果(Granger Causality):虽然更多用于分析因果关系,但也可以看作一种特殊的时序依赖性度量。
* 优势:能够揭示序列间的领先-滞后关系。
* 劣势:要求序列是平稳的,且只能用于线性关系,不适合作为通用结构相似性度量。

文章选择皮尔逊、KL散度和MAE,可能是因为它考量了计算效率、可微性(便于梯度下降)和对时序结构多角度(方向、波动、水平)的捕捉能力,是一个非常实用的组合。

哎呀,非平稳性啊,就是数据老是变来变去,没有个固定模式,比如股价一会儿跌一会儿涨,你不能用一个放之四海而皆准的公式去套。PS Loss靠“分段”来解决,这就像是在说,“虽然全国气温不平稳,但我们可以把全国分成南区、北区、东区、西区,每个区的天气在短时间内还是相对稳定的,那我就在每个区内分别预测。”

其他常见方法呢,除了“差分”让数据变平稳外,还有些模型直接就去捕捉这"不平稳"本身,比如一些基于注意力机制的Transformer模型,它们可以动态地关注序列中不同位置的信息,有点像“哪里重要看哪里,哪段不稳定学哪段”。或者一些混合模型,把平稳部分和非平稳部分分开处理。PS Loss的FAP功能,有点像把区域划分,再用结构损失去细化每个区域,是不是感觉更精准了?

问:在实际项目应用中,我们该如何权衡MSE和PS Loss的权重(也就是那个参数λ)呢?

答:这个问题问到点子上了!作为调参侠,我常常在想这事儿。我个人觉得,决定λ值可以从以下几个维度考虑:

1. 可解释性需求:如果你的模型结果需要给非技术人员看,而且他们更关心趋势和模式,比如“下周温度会不会有大幅波动”,那PS Loss的权重就高一点,因为它的结果在视觉上通常更符合直觉。
2. 异常检测需求:如果你需要用时序预测来辅助异常检测,那么结构对齐能力至关重要。一个好的结构对齐能让你更容易地发现那些不符合正常模式的“异常点”,这时PS Loss会发挥更大的作用。
3. 计算资源限制:PS Loss加入了更多计算(傅里叶变换、多个子损失计算、梯度动态调整),肯定会增加训练时间和资源消耗。如果你的计算资源有限,或者模型本身已经非常庞大,可能就要适当减小λ,避免训练时间过长。
4. 模型稳定性和收敛速度:有时候纯PS Loss可能会导致模型训练不稳定或者收敛慢,因为它的优化目标更复杂。结合MSE,可以提供一个更稳定的优化基线。

我的建议是,先从一个较小的λ值开始,比如0.1到0.5,然后通过可视化预测结果来观察。如果发现趋势和波动匹配得不够好,再逐渐增加λ。这是一个迭代的过程,没有银弹,得根据具体场景“试”出来。

哈哈,这个λ啊,就像是你在点外卖,纠结于是味道要好(MSE,数值对得上),还是卖相要好(PS Loss,结构对齐)。

如果你是那种“只要能吃饱,管它摆不摆盘”的实用主义者,那MSE权重就高点,只要预测值八九不离十就行。

但如果你是个“颜值控”,不仅要好吃,还得拍个照发朋友圈那种,那PS Loss的权重就要拉满了!比如你想预测一个产品的销量走势,具体到每天差个一两单没关系,但你更想知道这个月销量会不会爆,或者下次促销后会不会有个大起伏,那这时候结构对齐就非常重要了。

经验嘛,我觉得可以先从0.5开始,然后根据实际预测出来的图(可视化很重要!)和你对结果的满意度去微调。如果图看起来歪七扭八的,那λ就调大点;如果数值总是差一点,就调小点。调参嘛,就是一门玄学,外加亿点点耐心。

关于非平稳性,确实是时序分析的老大难问题。除了PS Loss的分段思路,还有几种主流方法:

1. 数据变换:比如差分(Differencing),通过将序列转化为其一阶或高阶差分序列来消除趋势或季节性,使其变得平稳。对数变换、Box-Cox变换也可以用来稳定方差。它的思路是直接改变数据,而PS Loss是在损失函数层面做文章。
2. 多尺度/多频率分析:像小波变换(Wavelet Transform)就能在不同尺度上捕获信号特征,可以看作是一种从频率域解决非平稳性的方法,因为它能分离出不同频率的成分。相较于PS Loss基于傅里叶变换做分段,小波更注重多尺度的细节捕捉。
3. 自适应模型:一些模型本身就具备适应非平稳性的能力,比如卡尔曼滤波(Kalman Filter),它能根据实时观测动态更新状态估计。或者在深度学习中,使用更复杂的注意力机制或门控机制(如GRU/LSTM的门),让模型"学"会关注不同时间步的重要性,间接处理局部特性。PS Loss相当于是给这些模型加上了一个“结构老师”,指导它们训练得更准。

PS Loss的独特之处在于,它不是直接变换数据或改变模型结构,而是通过损失函数来"规范"模型的学习方向,让模型在优化数值误差的同时,也兼顾局部结构的一致性,这是一种后验的、更灵活的优化策略。