不平稳时间序列预测问题的Transformer
1 intro
1.1 背景
- 时间序列的不平稳性(non-stationarity)是一个比较难处理,且真实世界中很常见的问题
- 不平稳性指的是随着时间的变化,观测值的均值、方差等统计量发生变化
- 不平稳性会导致在训练集训练的模型,在测试集上效果较差
- 因为训练集和测试集属于不同时间,而不同时间的数据分布差异较大。
- 目前解决这种统计量随时间变化的不平稳问题主要方法是,对时间序列数据做一些诸如归一化等平稳化处理
- 例如对每个序列样本使用z-normalization处理成0均值1方差
- 但是这种解决方法会对Transformer模型带来一个负面影响:
- 平稳化后的序列虽然统计量一致了,但是这个过程中也让数据损失了一些个性化的信息,导致不同序列的Transformer中的attention矩阵趋同
- over-stationarization
- 平稳化后的序列虽然统计量一致了,但是这个过程中也让数据损失了一些个性化的信息,导致不同序列的Transformer中的attention矩阵趋同
- 对于一个序列的3个时间窗口的子序列,不进行归一化处理的attention分布差别过大
- 使用了归一化处理后,3个序列的attention分布趋同了,缺失了各自的特征信息
1.2 论文思路
- 论文提出了一种新的Transformer结构Non-stationary Transformers
- 对输入序列的归平稳化处理的预测结果反平稳化
- 让Transformer能够处理平稳化序列的同时,学习不平稳化数据中的attention规律
2 方法
2.1 平稳化处理+预测结果反平稳化
- 对于每个输入序列,利用输入序列的均值和方差将其转换为0均值1方差的高斯分布,以此消除不同时间窗口时间序列统计量的差异
- 对于模型的输出结果,使用均值和方差做反向处理,得到最终预测结果
2.2 De-stationary Attention
- 为了让Transformer能够直接从平稳化前的时间序列中学习attention pattern,本文提出了De-stationary Attention
- 对于每个Attention层,由于输入的是平稳化后的序列,其和平稳化前序列的关系可以表达成如下公式:
所以将Softmax式子最后两项去掉,得到:
- ——>想要使用平稳化前的序列计算attention,核心就是去计算3项:
- 平稳化的方差
- Q在时间维度上的均值
- 平稳化前序列经过Transformer得到的K
- 平稳化的方差
- 论文采用一个MLP网络来学习这两个部分
- MLP的输入是原始平滑前的时间序列