(本文独家发布在金蝶云社区上)
理由 2: 深度学习支持多输入多输出
现实世界的时间序列分析非常具有挑战性是有一些原因的,比如有多个输入变量,需要预测多个时间区间,以及需要对多个物理地点执行相同类型的预测。深度学习算法可以应用于时间序列预测问题,并且能够很好的处理多输入变量之间繁杂的依赖关系。具体而言,神经网络可以为映射函数配置任意但固定数量的输入和输出。这意味着神经网络可以直接支持多变量输入,为多变量预测提供直接的支持。顾名思义,单变量时间序列是一个具有单个时间相关变量的序列。例如,如果我们想要预测某个特定位置的下一次电力消耗:在单变量时间序列场景中,我们的数据集将基于两个变量:时间值和历史能耗观测值。
多变量时间序列具有多个时间相关变量。每个变量不仅取决于其过去的值,还取决于其他变量。这种依赖关系也被用于预测未来的值。让我们再考虑一下上面的例子:现在假设我们的数据集还包括天气数据,例如温度值,露点温度,风速,云覆盖百分比等,以及过去四年的能耗值。在这种情况下,我们需要考虑多个变量来优化地地预测电力消耗值。 像这样的序列就属于多变量时间序列的范畴。
使用神经网络,可以指定任意数量的输出值,为需要多变量预测甚至多步预测方法这样的更复杂的时间序列场景提供直接支持。使用深度学习方法进行多步预测有两种主要方法:
1.直接方法,即开发一个单独的模型来预测每个预测的预见期;
2.递归方法,即开发一个单一的模型以进行单步预测,并且递归地使用这个模型,其中先前的预测被用作输入以预测随后的预见期。
递归方法对于预测一段短的连续的前置时间快是很有效的,而直接方法在预测不连续的前置周期时可能更有意义。当我们需要在几天的时间内预测多个连续和不连续的前置周期的混合时,直接方法可能更合适;例如,空气污染预测问题或预期运输预测就是这种情况,用于预测客户的需求,然后自动运输产品。
使用深度学习算法进行时间序列预测的关键是多输入数据的选择。我们可以考虑三个主要的数据来源,它们可以用作输入数据并映射到目标变量的每个预测提前期; 他们是:
1.单变量数据,例如来自正在预测的目标变量的滞后观测;
2.多变量数据,例如来自其他变量的滞后观测(例如,空气污染预测问题时的天气和目标);
3.元数据,例如有关预测日期或时间的数据。可以从所有数据块中提取数据,提供丰富的数据集,用于学习从输入到目标预测提前期的映射。
理由3: 深度学习网络非常善于从相对比较长的序列中提取模式
深度学习是一个活跃的研究领域,卷积神经网络并不是用于时间序列和时序数据的唯一的神经网络架构。递归神经网络(RNN)是在20世纪80年代提出来的,但最近越来越受欢迎,而且也消耗了很多图形处理单元的计算资源。递归神经网络对时许数据特别有效果,因为每个神经元或单元可以使用其内部存储器来维护有关先前输入的信息。 一个RNN具有在边读入输入数据时边跨越神经元传送信息的循环机制。
然而,简单的递归循环网络(RNN)不能捕获序列中的长期的依赖关系。正因为如此,RNN在之前工程实践中一直被人们诟病,直到使用了神经网络内部的长短期记忆(LSTM)单元才实现了一些很好的结果。 将LSTM添加到网络里就像加入了一个可以从输入数据的最开始就能一致记住上下文的内存单元。
LSTM神经网络是一种具有内部上下文状态单元的特定类型的RNN,这些状态单元用来负责长期或短期的信息存储。LSTM网络的输出由这些单元的状态来调制。当我们需要用神经网络预测的时候更依赖历史数据而不是最近的输入数据时,这种内部存储的功能变得非常重要。这样一种神经网络对于由观察数据组成的序列给予了原生态的支持。序列的叠加给需要模拟近似的映射函数带来了新的维度。这种网络可以从基于时间的输入数据到输出数据来学习映射关系,而不仅仅是简单的从输入到输出。当我们需要了解LSTM网络如何工作时,视频处理的例子非常有效:在电影中,当前帧中发生的事情在很大程度上取决于前一帧中的内容。在一段时间内,LSTM网络尝试去了解要保留什么以及从过去要保持多少数据,以及当前状态保持多少信息,这使得它与其他类型的神经网络相比更加强大。
这种能力可用于任何时间序列的上下文预测,其中自动地学习数据中的时间依赖性极其有用。在最简单的情况下,网络只需要从序列中一次读入一个观察数据,就可以了解哪些先前的观察数据是重要的,以及它们如何与最终的预测相关。该模型既可以学习从输入到输出的映射,又可以从输入序列中学习什么样的上下文对映射有用,并可根据需要动态地更改上下文。毫不奇怪地说,这种方法经常被用在金融行业中,比如说基于过去的行为和可能影响现金流的价格模式构建一个模型来预测汇率,当然它也可以用来预测未来的价格行为和模式。
另外,这种网络结构还有很多缺点值得数据科学家去仔细的斟酌。大容量的数据是必须的,模型还需要调整超参数以及许多周期的优化。
总结
深度学习神经网络是强大的引擎,他们能够从输入到输出的任意映射中学习,还支持多变量输入和输出,并自动提取长时间序列的中的模式。 当处理涉及到大规模数据的复杂时间序列预测问题时,当涉及到拥有复杂关系的多个变量时,甚至是多步骤时间序列任务时,所有这些特征共同使神经网络成为非常有效的工具。
科学家们已经投入了大量研究成本去攻克如何使用神经网络来进行时间序列预测,而且最终结果却不尽如人意。也许对于时间序列预测来说,应用深度学习技术最有希望的领域可能是使用卷积神经网络即CNN和LSTM的混合模型。
一些有用的资源
得益于最近各种工具和技术的发展和进步,深度学习等技术正在被用于解决更普通问题,包括预测,文本挖掘,语言理解以及个性化。以下是一些涉及深度学习的有用资源和演示:
Forecasting Financial Time Series with Deep Learning on Azure
Silver, Gold & Electrum: 3 Data Techniques for Multi-Task Deep Learning
Neural Networks for Forecasting Financial and Economic Time Series