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

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

这篇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
    红:多尺度框架 + 自适应损失
    在这里插入图片描述
    无论对于多尺度模型还是基本模型,使用自适应损失进行训练都可以提高性能。同样,无论是否有自适应损失,添加多尺度框架可以提高性能。
    附录中的表格结果可以看的更清晰
    在这里插入图片描述
    在这里插入图片描述
    综上所述,将自适应损失与多尺度框架相结合可以获得最佳的性能。

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

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值