# 循环神经网络在时间序列预测中的应用

> 原文： [https://machinelearningmastery.com/promise-recurrent-neural-networks-time-series-forecasting/](https://machinelearningmastery.com/promise-recurrent-neural-networks-time-series-forecasting/)

循环神经网络是一种神经网络，它在输入观察中添加了对顺序的显式处理。

这种能力表明，循环神经网络的前景是学习输入序列的时间背景，以便做出更好的预测。也就是说，做出预测所需的一系列滞后观察不再必须像传统的时间序列预测那样被诊断和指定，甚至不能用经典神经网络做出预测。相反，可以学习时间依赖性，也可以学习对这种依赖性的改变。

在这篇文章中，您将发现循环神经网络在时间序列预测中的承诺能力。阅读这篇文章后，你会知道：

*   传统时间序列预测方法的重点和隐含（如果不是明确的话）限制。
*   使用传统前馈神经网络进行时间序列预测的能力。
*   循环神经网络在传统神经网络之上做出的额外承诺以及这在实践中可能意味着什么的暗示。

让我们开始吧。

![The Promise of Recurrent Neural Networks for Time Series Forecasting](img/8a698688e3da2d77f731be3cc3c494de.jpg)

时间序列预测的循环神经网络的承诺
照片由 [Andy Hutchinson](https://www.flickr.com/photos/repomonkey/13909187181/) 拍摄，保留一些权利。

## 时间序列预测

时间序列预测很困难。

与分类和回归的简单问题不同，时间序列问题增加了观察的顺序或时间依赖性的复杂性。

这可能很困难，因为在拟合和评估模型时需要专门处理数据。它还有助于建模，提供趋势和季节性等额外结构，可用于提高模型技能。

传统上，时间序列预测一直由 ARIMA 等线性方法主导，因为它们对许多问题都有很好的理解和有效性。但是这些传统方法也受到一些限制，例如：

*   **关注完整数据**：通常不支持丢失或损坏的数据。
*   **关注线性关系**：假设线性关系排除了更复杂的关节分布。
*   **关注固定的时间依赖性**：必须诊断和指定不同时间的观察之间的关系，以及作为输入提供的滞后观察的数量。
*   **关注单变量数据**：许多现实问题都有多个输入变量。
*   **关注一步预测**：许多现实问题需要长时间的预测。

> 现有技术通常依赖于手工制作的特征，这些特征创建起来很昂贵并且需要该领域的专业知识。

- John Gamboa，[深度学习时间序列分析](https://arxiv.org/abs/1701.01887)，2017 年

请注意，已经开发了一些专门技术来解决其中一些限制。

## 时间序列的神经网络

神经网络近似于从输入变量到输出变量的映射函数。

由于多种原因，这种通用能力对于时间序列是有价值的。

*   **强健噪音**。神经网络对输入数据和映射函数中的噪声具有鲁棒性，甚至可以在存在缺失值的情况下支持学习和预测。
*   **非线性**。神经网络不会对映射函数做出强有力的假设，并且很容易学习线性和非线性关系。

> ......神经网络的一个重要贡献 - 即它们近似任意非线性函数的优雅能力。这个属性在时间序列处理中具有很高的价值，并承诺提供更强大的应用程序，特别是在预测的下层......

- Georg Dorffner，[神经网络用于时间序列处理](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.5697)，1996。

更具体地，神经网络可以被配置为在映射函数中支持任意定义但固定数量的输入和输出。这意味着：

*   **多变量输入**。可以指定任意数量的输入要素，为多变量预测提供直接支持。
*   **多步预测**。可以指定任意数量的输出值，为多步骤甚至多变量预测提供直接支持。

仅就这些功能而言，前馈神经网络被广泛用于时间序列预测。

隐含于神经网络的使用是要求确实存在从输入到输出的有意义的映射以便学习。对随机游走的映射建模将不会比持久性模型表现更好（例如，使用最后看到的观察作为预测）。

这种可学习的映射函数的期望也使得其中一个限制变得清晰：映射函数是固定的或静态的。

*   **固定输入**。滞后输入变量的数量是固定的，与传统的时间序列预测方法相同。
*   **固定输出**。输出变量的数量也是固定的;虽然这是一个更微妙的问题，但这意味着对于每个输入模式，必须产生一个输出。

> 序列对[深度神经网络]提出了挑战，因为它们要求输入和输出的维数是已知的并且是固定的。

- Ilya Sutskever，Oriol Vinyals，Quoc V. Le，[序列学习与神经网络](https://arxiv.org/abs/1409.3215)，2014

前馈神经网络确实提供了很好的能力，但仍然受到必须在模型设计中预先指定时间依赖性的这一关键限制。

这种依赖性几乎总是未知的，必须通过固定形式的详细分析来发现和梳理。

## 时间序列的循环神经网络

当从输入到输出学习映射函数时，像长短期记忆网络这样的循环神经网络在观察之间增加了对顺序的显式处理。

序列的添加是近似函数的新维度。网络不是单独将输入映射到输出，而是能够随时间学习输入到输出的映射函数。

此功能可解锁神经网络的时间序列。

> 长期短期记忆（LSTM）能够解决许多时间序列任务，这些任务是由使用固定大小时间窗口的前馈网络无法解决的。

- Felix A. Gers，Douglas Eck，JürgenSchmidhuber，[将 LSTM 应用于通过时间窗方法预测的时间序列](https://link.springer.com/chapter/10.1007/3-540-44668-0_93)，2001

除了使用神经网络进行时间序列预测的一般好处之外，循环神经网络还可以从数据中学习时间依赖性。

*   **了解时间依赖性**。学习了随时间观察的背景。

也就是说，在最简单的情况下，网络从序列中一次显示一个观察点，并且可以了解它之前看到的哪些观察结果是相关的以及它们如何与预测相关。

> 由于能够在序列中学习长期相关性，LSTM 网络消除了对预先指定的时间窗口的需要，并且能够精确地建模复杂的多变量序列。

- Pankaj Malhotra 等，[用于时间序列异常检测的长短期记忆网络](https://www.elen.ucl.ac.be/Proceedings/esann/esannpdf/es2015-56.pdf)，2015

循环神经网络的前景是可以学习输入数据中的时间依赖性。不需要指定一组固定的滞后观察。

在这个承诺中隐含的是，也可以学习随环境变化的时间依赖性。

但是，循环神经网络可能更多。

优良作法是从时间序列数据中手动识别和移除这样的系统结构，以使问题更容易建模（例如使系列静止），并且这在使用循环神经网络时仍然是最佳实践。但是，这些网络的一般能力表明，这可能不是熟练模型的要求。

从技术上讲，可用的上下文可能允许循环神经网络学习：

*   **趋势**。时间序列的增加或减少水平，甚至是这些变化的变化。
*   **季节性**。随着时间的推移不断重复模式。

您认为 LSTM 对时间序列预测问题的承诺是什么？

## 摘要

在这篇文章中，您发现了循环神经网络对时间序列预测的承诺。

具体来说，你学到了：

*   传统的时间序列预测方法侧重于具有线性关系的单变量数据以及固定和手动诊断的时间依赖性。
*   神经网络增加了学习可能的噪声和非线性关系的能力，其中任意定义但固定数量的输入和输出支持多变量和多步预测。
*   循环神经网络增加了有序观察的显式处理和从上下文学习时间依赖的承诺。

您是否不同意我对 LSTM 对时间序列预测的承诺的看法？
在下面发表评论并加入讨论。