论文笔记:FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting

2022 ICML

1 Intro

  • 长时间序列问题是一个研究很广泛的问题
    • RNN以及变体会遇到梯度消失/梯度爆炸,这会在很大程度上限制他们的表现
    • Transformer的方法会导致很高的计算复杂度,以及很大的内存消耗,这也会使得在长时间序列上使用Transformer很吃力
      • 近来有方法优化Transformer,使其计算复杂度降低
      • 但他们大多的思路是少取一些QK 对,这就可能导致信息的丢失,进而影响预测的精准度有
  • 与此同时,使用Transformer的方法,会在一定程度上难以捕获时间序列的整体特征/分布

     

    • 比如上图,不难发现预测的结果和实际值,二者的分布有着一定的差距
    • 这可能由于Transformer使用的是point-wise attention,每个时间点是独立的进行注意力计算和预测的,所以整体的、全局的特征难以维系和建模
  • 这篇论文提出了FedTransformer
    • 在Transformer的架构种使用 周期-趋势 分解 (这一点有点类似AutoFormer)
    • 在谱域中使用Transformer
      • ——>使得Transformer能更好地捕获全局特征
      • ——>在不减少每个点计算attention时看到的其他点数量的基础上,减少复杂度

2 谱域上的时间序列表征

  • 这篇论文的一个重要的问题是,经过离散傅里叶变化后,哪些部分应该得以保留,以表征时间序列
    • 一种方式是保留低频部分,去除高频部分(低频信号表示近似信息,高频信号表示细节信息)
      • ——>这样的话,有一些诸如趋势变化的信息就会被丢失(这是一个高频信号)
    • 另一种方式是全部保留,但是这样的话。很多噪声是高频信号,这会扰乱预测结果
  • 论文通过理论分析,说明从各种频率成分中随机选取一个子集,会得到一个好的时间序列表征 
    • 假设我们有m个时间序列X_1(t),\cdots,X_m(t)
    • 通过傅里叶变化,我们可以将Xi(t)转化成a_i=(a_{i,1},\cdots,a_{i,d})^T \in R^d
    • 将所有时间序列进行转化,我们得到转化矩阵A=(a_1,a_2,\cdots,a_m)^T \in R^{m\times d}
    • 从d个谱域成分中随机选取s个(s<d),论文通过理论证明A' \in R^{m \times s}可以保留大部分A的信息

3 模型

3.1 输入输出

encoder的输入是I*D(I表示输入的长度,D表示hidden state)

decoder的输入是(I/2+O)*D

【和autoformer的是一样的】

3.2 FEDFormer 架构

和autoformer类似,S是seasonality,trend是趋势

 也是encoder逐步把trend剥离掉;decoder再逐步把trend加回来

 3.3 Fourier Enhanced Structure

3.3.1 DFT

  • DFT将N长的时域sequence转变成N长的谱域sequence
    • 其中每个谱域元素的计算方式为X_l=\sum_{n=0}^{N-1}x_n e^{-i\omega ln}
    • 计算每个谱域元素是一个O(N)的复杂度,那么计算N长的谱域sequence,复杂度是O(n^2)
  • FFT可以将复杂度降至O(nlogn)
    • 每个谱域元素还是O(n)的计算复杂度,但是一半的元素两两对称,利用分治的思路,就是计算O(logn)个谱域元素
  • 这里作者是随机选s个谱域元素(s<<n),每个元素是O(n)的计算复杂度
    • ——>这里DFT的时间复杂度是O(n)

3.3.2 使用傅里叶变化的Frequency Enhanced Block(FEB-f)

  • 首先将输入x \in R^{N \times D}w \in R^{D\times D}线性 映射到q =x \cdot w \in R^{N \times D}
  • 然后将q用傅里叶变化转换至Q \in C^{N \times D}
  • 接着从Q的N个组成部分中 随机选择M个,得到\tilde{Q}\in C^{M \times D}
  • 然后对 \tilde{Q}\in C^{M \times D}进行映射,Y=\tilde{Q} \bigodot R
    • Y \in C^{M\times D}
    • R \in C^{D \times D \times M}
    • Y_{m,d_o}=\sum_{d_i=0}^D Q_{m,d_i} \cdot R_{d_i,d_o,m}
  • 然后对Y进行补零操作,补至C^{N\times D}
  • 最后对结果进行逆傅里叶操作

     

     

 3.3.3 使用傅里叶变化的Frequency Enhanced Attention(FEA-f)

  • 在谱域上做attention

 3.3.4 将傅里叶级数替换成小波变化

3.4 混合趋势-周期性分解

  •  F是一系列计算趋势的filter
  • L(x)是用来计算不同trend的权重

3.5 复杂度分析

3.6 和AutoFormer的区别

  • 架构是一样的,也都是encoder逐步把趋势项剥离,decoder逐步把趋势项加回来
  • 尽管AutoFormer中也使用了傅里叶变化,但那时为了加快AutoCorrelation(那篇论文对于self-attention的替代结构)的计算,所以严格意义上讲AutoFormer还是时域上的attention;FedFormer则是谱域上的attention

4 实验 

 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
引用\[1\]:scroll-view组件的属性中,enhanced属性用于启用scroll-view的增强特性,通过ScrollViewContext可以操作scroll-view。在启用enhanced属性后,可以通过wx.createSelectorQuery的NodesRef.node方法获取ScrollViewContext。同时,show-scrollbar属性用于控制滚动条的显隐。\[1\] 引用\[2\]:在Android布局文件中,可以使用ScrollView组件来实现滚动效果。可以通过设置scrollbarTrackVertical、scrollbarThumbVertical和scrollbarSize属性来自定义滚动条的样式和大小。\[2\] 引用\[3\]:在标签上添加scroll-top属性可以实现scroll-view的滚动效果。scroll-y属性用于控制垂直方向的滚动,class属性用于指定样式类,style属性用于设置高度和底部填充。scroll-top属性可以设置滚动的位置,@scrolltolower事件用于监听滚动到底部的事件,refresher-enabled属性用于启用下拉刷新,refresher-triggered属性用于设置下拉刷新的触发状态,refresher-threshold属性用于设置下拉刷新的阈值,refresher-background属性用于设置下拉刷新的背景颜色,@refresherrefresh事件用于监听下拉刷新的触发事件,@refresherrestore事件用于监听下拉刷新的恢复事件。\[3\] 问题: scroll-view scroll-x enhanced :show-scrollbar="false"是什么意思? 回答: scroll-view scroll-x enhanced :show-scrollbar="false"是指在scroll-view组件中启用了增强特性,并且设置了水平滚动(scroll-x)。同时,通过设置show-scrollbar属性为false,可以隐藏滚动条。 #### 引用[.reference_title] - *1* [微信小程序 scroll-view](https://blog.csdn.net/weixin_59727199/article/details/126875797)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Android ScrollView scrollbarStyle 样式详解](https://blog.csdn.net/johnny901114/article/details/7869047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [scroll-view回到顶部的使用(scroll-top)](https://blog.csdn.net/weixin_69666355/article/details/129794179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值