作者 | Prakhar Ganesh 编译 | 安然 来源 | 图灵TOPIA
近日,发表在《DataScience》上的一篇文章,使用深度学习方法,从数据处理、循环网络、RNN上的LSTM、CNN-LSTMs等方面介绍了时间序列分析,同时解释了时间序列的概念以及为什么选择深度学习的方法等问题。
什么是时间序列分析?
时间序列是一系列数据点,使用时间戳进行排序,是对时间序列数据的分析。
从水果的每日价格到电路提供的电压输出的读数,时间序列的范围非常大,时间序列分析的领域也是如此。分析时间序列数据通常侧重于预测,但也可以包括分类,聚类,异常检测等。
例如,通过研究过去的价格变化模式,可以尝试预测曾经想要购买的一款手表的价格,判断它的最佳购买时间!
为什么选择深度学习?
时间序列数据可能非常不稳定且复杂。深度学习方法不假设数据的基本模式,而且对噪声(在时间序列数据中很常见)的鲁棒性更强,是时间序列分析的首选方法。
数据处理
在继续进行预测之前,重要的是首先以数学模型可以理解的形式处理数据。通过使用滑动窗口切出数据点,可以将时间序列数据转换为监督学习问题。然后,每个滑动窗口的预期输出是窗口结束后的时间步长。
循环网络
循环网络一种复杂的深度学习网络。它们可以记住过去,因此是序列处理的首选。RNN单元是循环网络的骨干。
RNN单元具有2个传入连接,即输入和先前状态。同样,它们还具有2个传出连接,即输出和当前状态。这种状态有助于他们结合过去和当前输入的信息。
一个简单的RNN单元太简单了,无法统一用于跨多个域的时间序列分析。因此,多年来提出了各种各样的变体,以使循环网络适应各个领域,但核心思想保持不变!、
RNN上的LSTM
LSTM单元格是特殊的RNN单元格,其中带有“门”,其本质上是介于0到1之间的值,对应于状态输入。这些门背后的直觉是忘记或保留过去的信息,这使他们不仅可以记住过去,还可以记住更多。
CNN-LSTMs
由于状态信息要经过每一个步长,所以RNNs只能记住最近的过去。
另一方面,像LSTM和GRU这样的门控网络可以处理相对较长的序列,但是即使这些网络也有其局限性!!为了更好地理解这一问题,还可以研究消失和爆炸的梯度。
那么如何处理很长的序列呢?最明显的解决办法就是缩短它们!!但如何?一种方法是丢弃信号中呈现的细粒度时间信息。
这可以通过将一小组数据点累积在一起并从中创建特征来完成,然后将这些特征像单个数据点一样传递给LSTM。
多尺度分层LSTMs
看看CNN-LSTM架构,有一件事浮现在我的脑海中……为什么要使用CNNs来合并那些组?为什么不使用不同的LSTM呢!多尺度分层LSTMs是基于相同的思想构建的。
输入是在多个尺度上处理的,每个尺度都致力于做一些独特的事情。适用于更细粒度输入的较低标度专注于提供细粒度(但仅是最近的)时间信息。
另一方面,较高的比例集中在提供完整的图片(但没有细粒度的细节)上。多个刻度可以一起更好地理解时间序列。
下一步是什么?
时间序列分析是一个非常古老的领域,包含各种跨学科的问题,每种陈述问题都有其自身的挑战。
然而,尽管每个领域都根据自己的要求调整了模型,但是时间序列分析中仍然有一些一般性的研究方向需要加以改进。
例如,从最基本的RNN单元到多尺度分层LSTM的每项开发都以某种方式专注于处理更长的序列,但是即使最新的LSTM修改也有其自身的序列长度限制,并且目前仍然没有一种架构可以真正处理极长的序列。