长序列预测论文LTSF-Linear解读 |
文章目录
- 一. 引言
- 二. 直接多步(DMS)和迭代多步(IMS)的对比
- 三. 基于变压器的Transformer解决方案
- 3.1. 预处理(preprocessing)
- 3.2. 词向量(embedding)
- 3.3. 编码(encoder)
- 3.4. 解码(encoder)
- 四. 一个简单得令人尴尬的Baseline
- 五. 代码解读
- 5.1. 数据集划分模块(custom)
- 5.2. 模型结构
- 六. 参考文献
- 论文代码Github链接:https://arxiv.org/pdf/2205.13504.pdf
一. 引言
- Transformer的主要能力来自其多头的自注意机制,该机制具有提取长序列元素之间语义相关性的显著能力(例如文本中的单词或图像中的2D补丁)。然而,在某种程度上,自注意力计算是一种排列不规则(permutation-invariant)和“反秩序”(anti-order)的。虽然使用各种类型的位置编码技术可以保留一些排序信息,但在time series data上面应用自注意后,时间信息仍然不可避免地丢失。
- 对于NLP等语义应用来说,这通常不是一个严重的问题,例如,即使我们对句子中的一些单词重新排序,句子的语义也基本上保持不变。然而,在分析时间序列数据时,数值数据本身通常缺乏语义,我们主要感兴趣的是建模连续点集之间的时间变化。 也就是说,order本身起着最关键的作用。因此,我们提出了以下有趣的问题:transformer对长期时间序列预测真的有效吗?
- 此外,虽然现有的基于Transformer的LTSF解决方案表明,与传统方法相比,预测精度有了显著提高,在他们的实验中,所有比较(非Transformer)基线都进行了自回归或 迭代多步(iterated multi-step,IMS) 预测,已知这些基线在LTSF问题上存在显著的 误差累积效应。因此,在这项工作中,我们用 直接多步(direct multi-step, DMS) 预测策略挑战基于Transformer的LTSF解决方案,以验证其实际性能。(IMS就是单个模型,预测 t t t, t t t 作为input,再预测 t + 1 t+1 t+1, t + 1 t+1 t+1 作为input,再预测 t + 2 t+2 t+2,etc。DMS对于传统的lr或gbdt来说,预测未来 t t t 个时间步,则构建 t t t 个模型,对于神经网络来说,就是设置一个和预测长度相同的输出层大小,简单来说就是向量输出预测了)。
- 并非所有时间序列都是可预测的,更不用说长期预测(例如,对于混沌系统)。我们假设,长期预测 只适用于趋势和周期 相对清晰的时间序列。由于线性模型已经可以提取这些信息,我们引入了一组令人尴尬的简单模型,名为LTSF linear,作为比较的新基线。LTSF线性模型用一层线性模型对历史时间序列进行回归,直接预测未来时间序列。我们对九个广泛使用的基准数据集进行了广泛的实验,这些数据集涵盖了各种现实应用:交通、能源、经济、天气和疾病预测。令人惊讶的是,我们的结果显示,LTSF Linear在所有情况下都优于现有的复杂Transformerbased模型,并且通常有很大的差距(20%∼ 50%).
- 此外,我们发现,与现有transformer中的主张相反,大多数transformer无法从长序列中提取时间关系,即预测误差不会随着回望窗口大小的增加而减少(有时甚至增加,别骂别骂了)。最后,我们对现有的基于变压器的TSF解决方案进行了各种烧蚀研究,以研究其中各种设计元素的影响。
二. 直接多步(DMS)和迭代多步(IMS)的对比
- 与DMS预测结果相比,由于采用了自回归模式,IMS预测的方差较小,但不可避免地会受到误差累积效应的影响。因此,当有一个高度准确的单步的predictor,且 T T T (未来时间步)相对较小时,IMS更可取。相比之下,当难以获得无偏的单步预测模型或 T T T 较大时,DMS预测会生成更准确的预测(make sense)。
三. 基于变压器的Transformer解决方案
- 当将Transformer模型应用于LTSF问题时,它有一些局限性,包括原始自注意力方案的 二次时间/内存复杂性和自回归解码器设计引起的误差累积。 Informer解决了这些问题,并提出了一种降低复杂性的新型Transformer架构和DMS预测策略。后来更多的Transformer变体将各种时间序列特性引入其模型,以提高性能或效率。
3.1. 预处理(preprocessing)
- 时间序列分解: 对于数据预处理,零均值归一化在TSF中很常见。此外,Autoformer首先在每个神经块后面应用 季节性趋势分解,这是时间序列分析中的标准方法,以使原始数据更具可预测性。具体来说,他们在输入序列上使用 滑动平均kernel来提取时间序列的趋势周期分量。原始序列和趋势分量之间的差异被视为季节分量 。在Autoformer分解方案的基础上,FEDformer进一步提出了混合专家策略,以混合不同核大小的移动平均核提取的趋势分量。
- 具体可以参考:Autoformer基于深度分解架构和自相关机制的长期序列预测模型
3.2. 词向量(embedding)
- Transformer架构中的自我注意力层 无法保留时间序列的位置信息。然而local position information,即时间序列本身的顺序,很重要。并且global time information,如 时间戳(周、月、年)和不可知时间戳(假日和事件),也具有信息性。 为了增强时间序列输入的时间上下文,基于SOTA Transformer的方法中的一个实用设计是向输入序列中注入若干嵌入,如固定位置编码、通道投影嵌入和可学习的时间嵌入。此外,还引入了具有时间卷积层或可学习时间戳的时间嵌入。
3.3. 编码(encoder)
- 这部分的工作基本上是在做 计算复杂度的降低的工作。为了减少原始的transformer的 O ( n 2 ) O(n^2) O(n2)的时间和内存复杂性,最近的工作提出了两种提高效率的策略。
- 一方面: LogTrans和Pyraformer明确地将稀疏性偏差引入到自我注意力中。具体而言,LogTrans使用Logsparse掩码将计算复杂度降低到 O ( L l o g L ) O(Llog^L) O(LlogL),而Pyraformer采用pyramic attention,以 O ( L ) O(L) O(L)时间和内存复杂度捕获分层多尺度时间依赖。
- 一方面: Informer和FEDformer在自我注意矩阵中使用低秩属性。Informer提出了 ProbSparse自我注意机制 和自我注意提取操作,以将复杂度降低到 O ( L l o g L ) O(Llog^L) O(LlogL),FEDformer设计了一个 傅里叶增强块和一个随机选择的小波增强块,以获得 O ( L ) O(L) O(L)复杂度。
- 最后,Autoformer设计了一种串联自相关机制来取代原来的自我注意层。
3.4. 解码(encoder)
- 普通Transformer decoder 以自回归方式输出序列,导致推理速度慢和误差累积效应,特别是对于长期预测。Informer 通过DMS预测的方式设计了一个生成式解码器。其他Transformer采用类似的DMS策略。例如,Pyraformer使用连接时空轴的完全连接层作为解码器。Autoformer将趋势周期分量的两个精细分解特征和季节分量的叠加自相关机制进行汇总,得到最终预测。FEDformer还使用分解方案和建议的频率注意块来解码最终结果。
四. 一个简单得令人尴尬的Baseline
- 在现有基于变压器的LTSF解决方案的实验中,所有比较(非transformer)的model都是通过IMS的方式预测的,众所周知,这些技术存在严重的误差累积效应。我们假设,这些工作中的性能改进很大程度上是由于使用了DMS策略。
- 为了验证这一假设,我们通过一个名为LTSF linear的时间线性层提出了最简单的DMS模型,作为比较的baseline。
- 看上图其实就很清楚了,假设我们有一个10个变量的单序列,历史长度100,并假设预测未来50个时间步,则单个样本是一个100X10的time series matrix。另外这里的linear layer的权重是share的,所以可以看到整个模型的结构是非常简单的,参数量很小了。
- 升级版分别是DLinear和Nlinear。
- DLinear是Autoformer和FEDformer中使用的分解方案与线性层的组合。它 首先通过移动平均kernel和季节分量将输入的原始数据分解为趋势分量。然后,将两个一层线性层应用于每个组件,并将这两个特征进行汇总以获得最终预测。通过显式处理趋势,当数据中有明确的趋势时,DLinear增强了普通线性的性能。
- 同时,当数据集中存在分布偏移时,为了提高LTSF Linear的性能,NLinear首先用序列的最后一个值减去输入。然后,输入经过一个线性层,减去的部分在进行最终预测之前加回来。NLinear中的减法和加法是输入序列的简单规范化。(其实就是差分操作)
五. 代码解读
- 论文代码Github链接:https://github.com/cure-lab/LTSF-Linear
5.1. 数据集划分模块(custom)
- 数据集划分具体过程: 这里数据的最小粒度是小时,根据过去7天168个点的数据预测未来7天168个点的数据。
5.2. 模型结构
- DLinear整体结构图: 主要就是
nn.AvgPool1d
和nn.Linear
模块。
- DLinear具体流程图(这里以seq_len=168,pred_len=168为例): 这里
nn.AvgPool1d
中的kernel_size=25
其实就可以理解是一天25个点为周期项,如果为了提升模型的性能,本人认为可以进一步考虑2天,或者其它的周期项(可以参考上一篇:TextCNN文本分类原理及Pytorch实现中的n-gram思想),效果应该会更好。
六. 参考文献
- Are Transformers Effective for Time Series Forecasting:https://zhuanlan.zhihu.com/p/569194246