论文解读17——Scaleformer: Iterative Multi-scale Refining Transformers for Time Series Forecasting

Scaleformer提出了一种通用的多尺度框架,用于改进Transformer模型在时间序列预测中的性能。它通过多尺度迭代、跨尺度标准化和自适应损失来解决数据分布偏差和误差累积问题。实验表明,结合自适应损失和多尺度框架能显著提升模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
点击论文地址
点击代码地址

这篇Scaleformer还是在看 Transformers in Time Series: A Survey这篇关于时间序列综述的时候看到的,说是关于Transformer架构层面的变体。继上篇 Non-stationary Transformers后发现的又一个可以直接套模型的框架,还是挺感兴趣的,毕竟有些改模型的变体看不懂看的真的好累
—_—

1、文章贡献

提出了一个通用的多尺度框架Scaleformer,可应用于多种时间序列预测SOTA的Transformer模型(如FEDformer、Autoformer等)。
通过在多尺度上迭代地细化时间序列以更好地捕捉时间依赖性,并引入跨尺度标准化缓解因中间不同尺度分布造成的错误预测、引入自适应损失缓解因迭代造成的误差累积,提高模型性能。

2、多尺度结构

  • 将时间序列从低频到高频不同的采样率进行采样,并依次迭代将结果送入更高频的decoder中。
    在这里插入图片描述
  • 每一步encoder的输入都是从原始序列 Xenc 不同程度的采样,而除了第0步的decoder的输入是初始化的0数组外,其余i步decoder的输入则是上一步的预测结果进行上采样得到的。
    在这里插入图片描述
  • 算法流程如下
    在这里插入图片描述
    其中公式(1)和(2)的平均池化表示为:
    在这里插入图片描述
    公式(5)和(6)的上采样表示为:
    在这里插入图片描述

3、跨尺度标准化

  • 由于encoder和decoder的数据来源不同,一个来源于原始序列的采样,一个是上一步的预测输出,数据分布之间存在偏差,而decoder输入更高频时的上采样也会产生分布偏差。
    在这里插入图片描述
    需要进行跨尺度标准化。将encoder-decoder的整体输入求平均后,再各自减去均值作为输入
    在这里插入图片描述

4、自适应损失

  • 标准的MSE损失对异常值比较敏感,Huber损失对异常值较为稳健,但当没有主要的异常值时这些损失往往表现不佳。文中使用了2019年在图像处理中提出的自适应损失,据说这是第一次将该损失应用于时间序列预测中。
    在这里插入图片描述
    其中ξ表示残差,α和c为可调节的参数,调节损失对于异常值的敏感度。

附录中有提到Scaleformer多尺度的迭代操作会使误差累积,而自适应损失刚好可以缓解这一问题。
怎么缓解???一脸懵逼中我挖出了2019年那篇《A general and adaptive robust loss function》
简单看了损失函数这块,概率密度函数那里就没往下看了

  • 对于α=2、α=0、α=负无穷时的损失函数包括了几种特定的形式:
    在这里插入图片描述
    求导得
    在这里插入图片描述
    下面讨论α的变化对导数的影响
  • α=2:导数随残差x的增大而增大
  • α=1:导数值将近似于固定值1/c,即随着残差的增大,导数影响变大但有上限
  • α<1:导数随异常值残差的增大而减小,且α越趋向负值其影响越小
  • α趋向于负无穷:即使异常值残差大到3c之外,该影响也可以忽视

因此Scaleformer原文附录中提到,越小的α对于异常值越稳健。

5、实验

  • 将加了多尺度框架的各种方法与原模型对比:
    在这里插入图片描述
    性能均有所提升
  • 时间复杂度:
    在这里插入图片描述
    时间上几乎是原模型的2倍了
    为了减少时间消耗,将最后一步尺度s=1的Transformer操作替换成了前一步的线性插值计算结果(据说s越小消耗的时间更长)
    在这里插入图片描述
    结果还是会比原模型要好,但是比不上完整的Scaleformer
  • 消融实验(跨尺度标准化、自适应损失)
  • 多尺度框架去除跨尺度标准化
    在这里插入图片描述
    大多数情况下没有标准化的多尺度框架的误差要比原模型大
  • 单尺度框架(一般模型)加上跨尺度标准化
    在这里插入图片描述
    标准化改善了FEDformer和Informer的结果,但是Autoformer本身的分解层解决了类似的问题,用标准化代替反而效果不佳。
  • 自适应损失
    蓝:baseline
    橙:baseline + 自适应损失
    绿:多尺度框架 + MSE
    红:多尺度框架 + 自适应损失
    在这里插入图片描述
    无论对于多尺度模型还是基本模型,使用自适应损失进行训练都可以提高性能。同样,无论是否有自适应损失,添加多尺度框架可以提高性能。
    附录中的表格结果可以看的更清晰
    在这里插入图片描述
    在这里插入图片描述
    综上所述,将自适应损失与多尺度框架相结合可以获得最佳的性能。

其他更细节的部分还是要回归原文~~结合源码看看,这里就不细写了

这是mafft的一些常用命令和选项,用于在不同情况下生成高速或高精度的序列比对结果。以下是各个选项的含义: 1. High speed: 这是用于生成快速比对结果的选项。使用“mafft in > out”或“mafft --retree 1 in > out”命令可以获得快速比对结果。 2. High accuracy: 这是用于生成高精度比对结果的选项。使用“mafft --maxiterate 1000 --localpair in > out”、“mafft --maxiterate 1000 --genafpair in > out”或“mafft --maxiterate 1000 --globalpair in > out”命令可以获得高精度比对结果。 3. If unsure which option to use: 如果不确定应该使用哪个选项,则可以使用“mafft --auto in > out”命令。mafft将根据序列的数量和长度自动选择适当的比对选项。 4. --op #: Gap opening penalty。这是一个用于指定序列中插入空位(gap)的惩罚系数,默认值为1.53。 5. --ep #: Offset。这个选项类似于gap extension penalty,用于指定插入空位时的额外惩罚, 默认值为0.0。 6. --maxiterate #: Maximum number of iterative refinement。这是指定迭代次数的选项,用于控制算法的收敛速度,默认值为0,表示不进行迭代。 7. --clustalout: 输出clustal格式比对结果,默认输出FASTA格式。 8. --reorder: 指定输出结果的序列顺序,可以选择“aligned”或“input order”。 9. --quiet: 不显示比对进度信息。 10. --thread #: 指定线程数,如果不确定,请使用“--thread -1”选项,mafft将自动选择最佳线程数。 这些选项的具体用法和参数取值可以在mafft的官方文档中找到。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值