概率自回归预测——DeepAR模型浅析

点击上方“迈微AI研习社”,选择“星标★”公众号

重磅干货,第一时间送达

概率自回归预测——DeepAR模型浅析

给定过去一段时间的数据,如何对未来的数据进行预测?这类时间序列预测问题是很多领域都关心的问题。在机器学习中,目前主流的方法是利用LSTM等递归神经网络来对未来数据进行预测,这次介绍的DeepAR模型也不例外,不过不同的是,DeepAR模型[1]并不是直接简单地输出一个确定的预测值,而是输出预测值的一个概率分布,这样做的好处有两点:

  1. 很多过程本身就具有随机属性,因此输出一个概率分布更加贴近本质,预测的精度反而更高;

  2. 可以评估出预测的不确定性和相关的风险。接下来我们就来看DeepAR模型是如何具体实现的。

模型

首先,定义第i个时间序列在时间t的值为 概率自回归预测——DeepAR模型浅析 ,以 概率自回归预测——DeepAR模型浅析 为划分时间点,模型的目标就是得到联合条件概率分布: 概率自回归预测——DeepAR模型浅析 ,即根据已有的数据 概率自回归预测——DeepAR模型浅析 和协变量(一些已知信息,下文会具体介绍) 概率自回归预测——DeepAR模型浅析 ,对未来的序列 概率自回归预测——DeepAR模型浅析 进行建模。这里我们称 概率自回归预测——DeepAR模型浅析 和 概率自回归预测——DeepAR模型浅析 分别为conditioning range 和 prediction range。

DeepAR模型采用的是自回归递归网络的架构(autoregressive recurrent network architecture),我们假定上述的分布可以写成如下的似然形式:概率自回归预测——DeepAR模型浅析

其中 概率自回归预测——DeepAR模型浅析 是自回归递归网络的输出。

第一个等号很好理解,就是将原先的联合概率分布写为自回归的概率乘积形式,这在NLP的语言模型中经常出现;第二个等号就是将自回归概率用一个参数化后的似然函数来表示,具体来说, 概率自回归预测——DeepAR模型浅析 代表一个RNN,我们输入上一时刻的隐层 概率自回归预测——DeepAR模型浅析 和数据 概率自回归预测——DeepAR模型浅析 、以及当前时刻的已知信息 概率自回归预测——DeepAR模型浅析 ,可以得到该时刻的隐层(即输出) 概率自回归预测——DeepAR模型浅析 ,然后通过神经网络 概率自回归预测——DeepAR模型浅析 将 概率自回归预测——DeepAR模型浅析 转化为给定分布的参数,分布确定了之后,就可以计算出似然概率自回归预测——DeepAR模型浅析 (具体见下文)。

我们可以将这个自回归过程放到sequence-to-sequence的框架中来理解:首先用encoder网络对conditioning range的数据进行编码,得到隐层输出 概率自回归预测——DeepAR模型浅析 ,然后将其作为decoder网络的初始化隐层,把decoder迭代输出的 概率自回归预测——DeepAR模型浅析转化为分布的参数,这样我们就可以从通过DeepAR得到预测的概率分布。

这里需要注意一下训练过程与预测过程的异同,两者encoder的部分都一样,只需要将conditioning range 的数据依次输入到RNN中,最后得到隐层输出 概率自回归预测——DeepAR模型浅析;不同的地方是decoder,区别如下图所示。

概率自回归预测——DeepAR模型浅析

对于训练过程(图左),所有的数据都是已知的,因此我们可以直接输入prediction range的数据,然后计算下一时刻的似然函数,通过最大化似然函数来实现对于模型参数的训练。

而对于预测过程(图右),prediction range的数据是未知的,因此不能像训练时那样直接给decoder输入上一时刻的真实值,只能通过抽样来得到一个估计值 概率自回归预测——DeepAR模型浅析 ,将估计值 概率自回归预测——DeepAR模型浅析 输入到下一时刻的RNN当中,这样不断迭代以得到prediction range的预测结果。估计概率自回归预测——DeepAR模型浅析的具体步骤如下:

概率自回归预测——DeepAR模型浅析

可以看出,训练和预测过程之间其实存在着一些差别,这在一些任务(例如NLP)中可能会造成严重的“脱节”问题,不过论文在实验中并没有发现这个问题。

似然函数

现在具体来看上面提到的似然函数 概率自回归预测——DeepAR模型浅析 ,论文针对于两种类型的时间序列采取了不同的似然函数形式

  • 实值数据(real-valued data):认为数据服从的是高斯分布,采用高斯似然函数来表示 ,其形式为

     概率自回归预测——DeepAR模型浅析

  • 计数数据(count data):采用negative-binomial 似然函数来表示,其形式为

     概率自回归预测——DeepAR模型浅析

对于这些似然函数中的参数,我们直接通过对decoder输出 概率自回归预测——DeepAR模型浅析 做映射到,比如高斯似然函数中的 概率自回归预测——DeepAR模型浅析 可以写做:

概率自回归预测——DeepAR模型浅析 概率自回归预测——DeepAR模型浅析

而negative-binomial 似然函数的参数 概率自回归预测——DeepAR模型浅析 可以写做:

概率自回归预测——DeepAR模型浅析

概率自回归预测——DeepAR模型浅析

另外,考虑到模型的输入是多个时间序列,这些时间序列的量级可能并不一样,因此我们需要对它们做放缩,对于每一个时间序列i,都对应有一个放缩因子 概率自回归预测——DeepAR模型浅析 ,我们在输入模型之前先对数据做预处理,让时间序列的每一个项都除以 概率自回归预测——DeepAR模型浅析 ,并且在模型的输出上做相应的逆变换得到参数,具体来说,对于negative binomial似然,逆变换为 概率自回归预测——DeepAR模型浅析 和 概率自回归预测——DeepAR模型浅析 ,其中 概率自回归预测——DeepAR模型浅析 是线性网络的原始输出,可以看出逆变换并不都是乘以 概率自回归预测——DeepAR模型浅析 (否则就没必要做放缩了)。

训练

上文中已经提到,在模型的训练过程中,所有prediction range上的数据也都是已知的,因此我们就可以直接用prediction range上的似然函数来作为模型的loss,具体形式如下:

概率自回归预测——DeepAR模型浅析

其中概率自回归预测——DeepAR模型浅析,我们需要训练的参数就是代表RNN的 概率自回归预测——DeepAR模型浅析 与参数映射神经网络 概率自回归预测——DeepAR模型浅析 中的参数。

这里再说一下RNN输入中的 概率自回归预测——DeepAR模型浅析 ,它其实可以理解为是时间序列数据之外的一些已知feature,可以提供与序列本身或时间相关的信息,举个例子:对于多支股票的时间序列, 概率自回归预测——DeepAR模型浅析 即可以是第i家公司的财报信息(与股票i本身相关),也可以是像周几这类的时间信息(与时间t相关),还可以是股票的分红情况(与股票和时间都相关)。

实验

简单看一下DeepAR论文的实验,下图是在electricity数据集上做的时间序列预测,可以看出模型不仅可以预测未来的数值,还可以对其不确定性做出估计。

概率自回归预测——DeepAR模型浅析

下图是DeepAR模型与其他baseline模型在parts、ec-sub以及ec三个数据集的比较结果,其中 概率自回归预测——DeepAR模型浅析 代表的是划分点 概率自回归预测——DeepAR模型浅析 之后的 概率自回归预测——DeepAR模型浅析 时间范围,例如 概率自回归预测——DeepAR模型浅析 代表 概率自回归预测——DeepAR模型浅析 的时间范围,我们只度量这个范围内模型的结果。这里采用的是 概率自回归预测——DeepAR模型浅析-risk metrics (quantile loss)作为性能度量,值越低代表性能越好,它的具体定义可见原论文。

概率自回归预测——DeepAR模型浅析

另外,最近还有一篇论文利用DeepAR模型做了一些金融领域的实验,这里简单介绍两个小实验,第一个是在S&P500股票数据上的收益实验,该实验构建了这样一个多空交易策略:在时刻t,预测所有股票在t+h时刻的涨跌情况,然后做多期望收益最高的k只股票,并做空期望损失最大的k支股票(利用蒙特卡洛方法来估计收益期望)。得到的收益与目前主流的非概率模型的结果对比如下:

概率自回归预测——DeepAR模型浅析

第二个是根据预测结果来计算累积收益、为金融衍生品定价、估计限价单成交概率的实验,如下图所示,模型预测未来第h天的价格为 概率自回归预测——DeepAR模型浅析 ,最新的历史价格为 概率自回归预测——DeepAR模型浅析 ,通过计算不同金融产品的payoff函数 概率自回归预测——DeepAR模型浅析 ,我们就可以得到想要的期望结果(还是通过蒙特卡洛模拟多次抽样来计算),图中的性能度量是Ranked Probability Skill,越小代表预测结果越好(具体可见原论文)。

概率自回归预测——DeepAR模型浅析

总结

这篇论文提出的DeepAR模型不同于以往的时间序列预测模型,它输出的是未来数据的一个概率分布,我们需要通过采样的方法,用DeepAR递归地生成对于未来一段时间数据的预测,不过因为是从概率分布中采样得到的,这只是一条可能的“轨迹”,要计算期望值的话,就需要利用蒙特卡洛方法多次重复采样后取平均来得到。个人感觉这种让模型输出概率分布的方法特别适用于像金融数据这类具有较大不确定性的时间序列数据,这类数据上往往具有一些噪声,这就导致直接对未来数据做直接预测并不一定可靠,而对于预测概率分布的DeepAR模型,最大化未来序列的似然函数的方式反而能够更好地反映出数据内在的随机性质,它不仅能够预测数值,还可以预测未来的波动,这一特点对于需要考虑风险的金融领域是非常有帮助的。

参考文献

[1] DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks https://arxiv.org/abs/1704.04110

[2] Adversarial Attacks on Probabilistic Autoregressive Forecasting Models https://zhuanlan.zhihu.com/p/201030350

推荐阅读

(点击标题可跳转阅读)

概率自回归预测——DeepAR模型浅析

现为 ⛴迈微AI研习社⛴

点击“阅读原文”查看更多历史内容,喜欢点个“在看❀”吧!