DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks(2017)首先采用深度学习模型解决时间序列预测问题。该方法采用经典的RNN模型进行时间序列预测,在训练阶段,每个时刻传入上一时刻的真实值、外部特征,经过RNN单元后,预测下一个时刻的值。在预测阶段,将模型在上一个时刻的预测值作为输入,替代训练过程中上一个时刻真实值的输入。模型结构如下图。
由于预测阶段和训练阶段,模型在下一个时刻输入的值一个是预测采样的,一个是真实的,会导致训练和预测阶段不一致的问题,NLP中有一些方法缓解该问题,但是不能从根本解决这个问题。 Deep State Space Models for Time Series Forecasting(NIPS 2018)提出了以RNN为基础的Deep State Space模型。该模型建立在state space思路基础上,认为当前时刻的观测值只和当前状态有关,而当前状态只和上一个时刻的状态有关。因此整个预估模型分为两个部分:建模连续两个隐状态的关系,以及从当前时刻隐状态到当前时刻预估结果的关系。在模型实现上,相比DeepAR,模型在训练或预测阶段,每个时刻都不需要输入上一个时刻的真实值或预测值了,完全由隐状态建立连续两个时刻的联系。这样解决了DeepAR中训练和预测不一致的问题。
DeepAR和Deep State Space Model都是one-horizon forecast model,即每次只能预测未来一个时刻的值。 A Multi-Horizon Quantile Recurrent Forecaster(NIPS 2017)提出一种multi-horizon forecast model MQRNN,同时预测未来多个时间步的值。MQRNN采用的是Encoder-Decoder结构,在NLP中经典的Encoder-Deocder结构基础上进行了优化。下图左侧为基础的Encoder-Decoder结构,右侧为MQRNN结构。MQRNN将Decoder部分由RNN改成多个全连接。MQRNN直接将Encoder最后一个时刻的context,以及未来的所有feature拼接到一起,通过一个全连接,生成每个时刻的context和一个全局整体的context。即该全连接输出为T个时刻每个时刻的context向量,以及一个额外的全局向量。
CNN被广泛用于CV和NLP领域,在时间序列预测领域,An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling(2019)采用空洞卷积结合因果卷积的网络结构,该结构也称为基于CNN的时间序列预估模型的基础结构。因果卷积表示在t时刻的输出,是由t时刻及t时刻之前的输入进行卷积得到的(而一般的卷积是t时刻前后一个窗口内的输入进行卷积)。这样,t时刻的输出避免了对t时刻之后信息的依赖而导致的数据泄漏问题。
空洞卷积解决了原来CNN只能看到历史线性大小窗口内数据的问题,当历史序列较长时,普通的卷积需要增大卷积尺寸才能看到更久远的历史信息,导致训练效率较低。空洞卷积跳跃的对历史序列进行卷积,例如当空洞卷积尺寸为2时,t时刻会根据t、t-2、t-4等时刻的输入进行卷积。通过多层卷积的堆叠,层数越多对应的空洞尺寸也越大,这样实现了在时间复杂度不变的情况下引入更长历史信息,提升预测效果。
Transformer时序预测模型
在上文介绍的基于对抗学习DA方法的基础上,学术界针对该方法的不同问题提出了不同的优化方法,主要包括生成任务相关的一致性表示、学习Domain-specific表示辅助Domain-invariant表示两个方面。
Transformer模型首先在NLP领域中取得显著效果,由于NLP和时间序列都为序列数据,因此Transformer也被逐渐应用到时间序列预测任务中。Deep Transformer Models for Time Series Forecasting: The Influenza Prevalence Case(2020)采用了和GPT相似的Transformer结构尝试了时间序列预测任务,取得较好效果。
然而,在时间序列预测任务中,样本点的序列位置关系非常重要,Transformer虽然通过Attention机制实现了超长周期的特征对齐,位置信息只能依赖于position emedding,影响了Transformer在时间序列预测中的应用。针对这个问题,业内主要采用CNN+Transformer或LSTM+Transformer相结合的方式,使序列模型的序列建模能力和Attention模型的超长周期信息提取能力互补。 Enhancing the Locality and Breaking the Memory Bottleneck of Transformer on Time Series Forecasting(NIPS 2019)提出使用CNN和Transformer结合的方法。模型结构如下图所示,CNN模型增强了上下文信息的提取能力,左图中CNN尺寸为1,即无卷积的情况下,每个时刻的特征单独进入Transformer,当两个时刻的特征相似时,由于上下文环境(即前后时刻的值)不同,因此这两个时刻表达的信息不同,而左侧模型无法提取这个信息。右侧模型使用了尺寸为3的卷积,刻画了上下文信息不同的时刻不同的信息,能够更好发掘具有相似规律的序列片段。
Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting(2019)提出了LSTM和Transformer结合的方法。模型体层采用LSTM结构,利用LSTM的序列建模能力,先对输入序列进行预处理,这样不同时刻生成了考虑上下文和时序信息的表示。接下来底层表示输入到上层Transformer中,利用Attention的超长周期信息提取能力弥补序列模型信息遗忘的问题,模型结构如下图:
Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting(AAAI 2020)提出了一种针对长周期预估的Transformer的升级版。为了让Transformer在长周期预估中提升运行效率,提出了ProbSparse self-attention,通过让key只和关键query形成稀疏的attention减少大量运算量。
Nbeats
N-BEATS: NEURAL BASIS EXPANSION ANALYSIS FOR INTERPRETABLE TIME SERIES FORECASTING(ICLR 2020)提出Nbeats模型,该模型内部结构中没有RNN、CNN或Attention,网络全部为全连接组成,在一些开源数据集上取得较好效果。
Nbeats的核心思路是,多个Block串联,每个Block学习序列的一部分信息,在下一个Block的输入会去掉之前Block已经学到的信息,只拟合之前Block未学到的信息,类似于GBDT的思路。最后再把各个Block的预估结果加和得到最终预估结果。
模型整体结构如下图,主要包含两个模块。第一个模块用于输入输入,通过多层全连接+Relu生成Forecast和Backcast的basis,公式形式可以表示为:
模型的第二个模块用于将Forecast和Backcast的basis转换成前向和过去的预测结果:
其中,Forecast的basis用于进行未来的预测,Backcast的Basis用于进行过去的预测。Backcast部分相当于当前Block对输入序列的分析,下一层的输入会减去当前Block中Backcast的输出,相当于从输入中去掉当前Block已经能较好预测的部分,让后续Block只关注那些前面层无法预测的部分。
整个Nbeats模型都是全连接这种简单结构,通过多层Block串联的形式构造而成,类似于GBDT中多个弱分类器集成的思路。Meta-learning framework with applications to zero-shot time-series forecasting(AAAI 2020)从meta-learning的视角揭示了Nbeats为什么有效。
最初版本的Nbeats无法输入外部特征,后续的论文Neural basis expansion analysis with exogenous variables: Forecasting electricity prices with NBEATSx(2022)在初版Nbeats基础上增加了引入外部特征的能力。在FC-GAGA: Fully Connected Gated Graph Architecture for Spatio-Temporal Traffic Forecasting(AAAI 2021)中,又提出了Nbeats结合图学习的模型,让Nbeats能够应用于交通预测等这种存在Spatial-Temporal关系的任务。感兴趣的同学可以进一步深入阅读。 总结