FreDF:一行代码稳定提升时间序列预测精度的新方法

浙江大学等机构提出FreDF,通过频域损失函数有效提升时间序列预测精度。一行代码即可集成到主流模型,解决标签自相关性问题。

原文标题:ICLR 2025 | 一行代码!FreDF频域损失稳定提升时间序列预测精度

原文作者:机器之心

冷月清谈:

该研究揭示了现有时间序列预测方法忽略标签序列自相关性的问题,提出了一种基于频域标签训练的新范式FreDF。FreDF通过傅里叶变换将标签序列投影到频域,抑制标签之间的相关性,从而减少训练目标偏差。实验表明,FreDF能够显著提高多种主流模型的预测精度,只需在损失函数中添加一行代码即可实现性能提升。在ETTm1数据集上,FreDF将iTransformer的MSE降低了0.019,在M4数据集上,FreDF增强的FreTS在3个指标上均平均优于原生FreTS和基线模型。消融实验表明,单独使用频域损失即可取得显著的性能改进,适当融合时域损失可以进一步优化性能。同时,FreDF具有模型无关的特性,可以有效提升大多数主流时序预测模型的精度。

怜星夜思:

1、文章提到FreDF在频域使用MAE而非MSE,理由是频谱分量量级差异大,MSE会放大差异导致优化不稳定。除了MAE,还有没有其他更鲁棒的损失函数可以解决这个问题?
2、FreDF通过频域损失来解决标签自相关性问题,这个思路很新颖。那么,除了频域转换,还有没有其他时域的方法可以缓解标签自相关性对模型训练的影响?
3、文章提到FreDF具有模型无关性,可以在多种模型上使用。但实际应用中,FreDF在不同模型上的提升效果会不会有差异?哪些类型的模型可能更适合使用FreDF?

原文内容


本文由浙江大学、中南大学、上海交通大学、Tiktok、北京大学、南洋理工大学联合完成。第一作者王浩为浙江大学硕博连读生,发表NeurIPS、ICLR、KDD、WWW、TOIS等顶级会议和期刊十余篇。通讯作者为北京大学李昊轩助理研究员和南洋理工大学陶大程教授。


时间序列预测在气象预报、工业设备维护、医疗监测等领域具有关键应用价值。本文揭示现有方法忽略了标签序列中的自相关性,导致训练目标有偏。进一步,提出一种基于频域标签训练的新范式——FreDF,只需加入一行代码,即可在主流模型上实现预测精度的稳定提升。



  • 论文标题:FreDF: Learning to Forecast in the Frequency Domain

  • 论文地址:https://openreview.net/forum?id=4A9IdSa1ul

  • 代码地址:https://github.com/Master-PLC/FreDF


被忽视的标签自相关性

时间序列中的自相关性指的是「序列在不同时间步之间的相关性」,在时间序列预测中,这种自相关性既存在于模型的输入序列(历史观测值之间的相关性),也存在于标签序列(不同步标签之间的相关性)。然而,现有方法(如 Transformer、LSTM 等)主要聚焦于输入序列的自相关建模,普遍忽视了标签序列自相关性的影响。 

具体而言,主流的直接预测范式(Direct Forecast,DF)通过多任务学习同时预测多步标签,其损失函数为:


其中,图片为标签,图片为预测值。该方法隐式假设标签序列在给定输入时条件独立(这样极大似然才等价于最小化 MSE)。但时间序列预测任务中,标签序列往往呈现显著的自相关性。因此,现有 DF 方法与时序数据生成机制存在失配。 


【形式化】根据定理 3.1:当标签之间的相关系数大于 0 时,DF 方法的损失函数相比对数似然函数有偏。



使用频域标签训练时间序列模型 

Motivation 

FreDF 的核心是利用傅里叶变换将标签序列投影到频域。在频域中,不同标签之间的相关性被有效抑制。这一预期符合直觉:频率 k 处的频谱分量一般不依赖于频率 k'<k 处的频谱分量生成。论文中的定理 3.3 进一步验证了这一点。

由于频域中标签之间的相关性被抑制,根据定理 3.1,在频域计算的损失函数(如 MSE、MAE)相对对数似然函数无偏。


图 1. 标签序列中的自相关性分析。


案例分析:图 1(a)展示了自相关性在生成标签序列中的影响:第 t 时刻的标签不仅和输入有关,也和上一时刻的状态有关。图 2(b-d)量化了给定输入后,不同标签在时域和频域的自相关强度。结果表明:标签序列的自相关性在时域中显著,在频域中被抑制。


实现方法 


受 Motivation 节启发,FreDF 提出了一种基于频域标签的模型训练方法,具体步骤如下:


  • 使用傅里叶变换将标签序列从时域转换到频域:图片 。标签序列的自相关性在频域中被有效抑制。类似地,将模型的时域预测值由时域变换到频域:图片


  • 融合时频损失:这一步是可选的——频域损失单独使用,即可吃下绝大多数性能收益。

FreDF 方法支持多种预测模型(如 Transformer、MLP 等),其实现非常简单:只需在模型的损失函数中添加频域损失即可。以下是一个基于 PyTorch 的简单实现示例,其中 outputs 为模型的时域预测值,batch_y 为标签序列。

# 原时域损失
loss_tmp = ((outputs-batch_y)**2).mean()
# 所提频域损失
loss_feq = (torch.fft.rfft(outputs, dim=1) - torch.fft.rfft(batch_y, dim=1)).abs().mean() 
# 注释1. 频域损失可与时域损失加权融合,也可单独使用,一般均有性能提升,见灵敏度实验部分。
# 注释2. 频域损失使用MAE而不是MSE,是因为不同频谱分量的量级相差非常大。使用MSE会进一步放大这种差异,导致优化过程不稳定。 

图 2. FreDF 工作流。


实验结果


FreDF 可以显著提高预测性能。以 ETTm1 数据集为例,FreDF 将 iTransformer 的 MSE 降低了 0.019,这一改进与过去 1.5 年中该数据集性能提升相当(Fedformer 到 TimesNet,MSE 降低了 0.017)。这说明通过处理标签中的自相关性,FreDF 可以显著提升模型的预测性能。



FreDF 在短期预测任务上也有显著提升。在 M4 数据集上,FreDF 增强的 FreTS 在 3 个指标上均平均优于原生 FreTS 和基线模型。FreDF 在长期和短期预测任务上都展现出了良好的性能,证明了其作为一种通用预测范式的潜力。



论文还进行了消融实验,研究时域损失、频域损失对模型性能的贡献。结果表明:仅使用频域损失即可取得显著的性能改进,而适当融合时域损失可以进一步优化性能。



进一步细化消融实验,研究权重 α 对性能的影响。在绝大多数情况下,频域损失的性能均优于时域损失(α=1 vs α=0)。这说明即使不对 α 做调节,直接将时域损失替换为频域损失,也可以有效提升时序预测性能,真正实现「一行代码涨点」。此外,预测性能一般在 α 接近 1(如 0.8 或 0.9)时最佳。这意味着在时域和频域损失之间取得适当的平衡,并适当强调频域损失,可以获得较好的预测结果。



通过可视化预测序列发现,FreDF 生成的预测序列与真实标签序列之间的拟合度更高,能够更准确地捕捉到标签序列中的高频成分,同时抑制明显的噪声和异常波动。这说明频域损失可以在一定程度上抑制时域损失的过拟合,保持较好的泛化能力。



论文还测试了 FreDF 在不同神经网络架构上的表现,包括 iTransformer、DLinear、Autoformer 和 Transformer 等,证明了其与模型无关的特性:可以切实有效提升大多数主流时序预测模型的精度。


结论


自相关性的处理是时间序列预测的核心问题。现有方法聚焦输入中的自相关性的处理,而对标签中的自相关性尚未给予广泛关注。特别是,现有的多任务预测方法,其损失函数假设掉了标签中的自相关性,导致其相对似然函数有偏


FreDF 提出了一种基于频域标签的训练方法,既保留了多任务预测的特性,又有效避免了标签自相关性带来的偏差作为一种模型无关的损失函数,实验结果表明,其在多个预测模型上均表现出一致的性能提升。


不快来试一下?让 FreDF 成为你性能优化的「最后一棒」!


© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:[email protected]

我觉得可以借鉴因果推断的思想,尝试识别并建模标签之间的因果关系。然后,在模型训练时,只考虑因果方向上的依赖关系,忽略反向的依赖,从而减少自相关性的影响。不过这个方法的难点在于如何准确地识别因果关系。

我觉得像Transformer这种本身就比较复杂的模型,可能提升空间相对小一些。因为Transformer已经考虑了很多时序信息。而像DLinear这种比较简单的模型,可能提升空间更大,毕竟相当于给它补足了短板。

针对频域频谱分量量级差异大的问题,除了MAE,还可以考虑使用Huber loss或者Log-Cosh loss。Huber loss在误差较小时表现类似于MSE,误差较大时则类似于MAE,能兼顾小误差的敏感性和大误差的鲁棒性。Log-Cosh loss则是一种光滑化的Huber loss,二阶可导,更易于优化。

感觉这个和图像领域deblur有点像啊,是不是可以借鉴图像deblur的思路,用一个GAN网络,让生成器预测清晰的序列,判别器判断序列是否模糊。相当于让模型自己学习消除自相关性。

从理论上讲,FreDF主要解决的是损失函数偏差问题,因此对所有直接预测(DF)模型都有潜在增益。但实际效果可能取决于模型本身对时序数据的建模能力。例如,如果模型本身已经能够较好地捕捉时序依赖关系,那么FreDF的提升效果可能相对较小。反之,对于那些对时序依赖建模能力较弱的模型,FreDF可能会带来更显著的提升。

我个人觉得可以试试smooth L1 loss,本质上是L1和L2的结合。在误差较小时使用L2 loss,可以保持梯度稳定;误差较大时使用L1 loss,可以避免梯度爆炸。就是调参可能要多费点心思。

可以尝试使用分位数损失(Quantile Loss)。它对于异常值不敏感,而且可以通过调整分位数来关注不同范围的误差。比如,如果更关注低估的风险,可以选择一个较低的分位数。

可以试试在损失函数中加入正则化项,惩罚模型预测的标签序列中的自相关性。例如,计算预测标签序列的自相关系数,并将其加入损失函数中。这种方法不需要改变模型的结构,但需要仔细设计正则化项的形式和权重。

我猜 FreDF 在那些对高频信号不敏感的模型上效果更好。 因为高频信号更容易受到自相关性的影响。 如果模型本身就对高频信号处理得不好,那 FreDF 相当于帮它把这部分噪声给滤掉了。