基于卷积的神经网络的时间序列预测——WaveNet

基于卷积的神经网络的时间序列预测——WaveNet

原文博客的参考地址:https://jeddy92.github.io/JEddy92.github.io/ts_seq2seq_conv/

项目参考地址:https://github.com/JEddy92/TimeSeries_Seq2Seq/blob/master/notebooks/TS_Seq2Seq_Conv_Intro.ipynb

项目中的数据集参考:https://download.csdn.net/download/qq_33472765/10837671

文章主要是表现出:WaveNet的核心是扩张的因果卷积层,允许它正确处理时间顺序并处理长期依赖,而不会导致模型复杂性的爆炸。

 

 

Time Series Forecasting with Convolutional Neural Networks - a Look at WaveNet

注意:如果您有兴趣了解更多并使用keras自己构建一个简单的WaveNet风格的CNN时间序列模型,请查看我在github上发布的随附笔记本。有关使用神经网络进行高维时间序列预测的介绍性视图,您可以阅读我以前的博客文章

如果你正在阅读这篇博客,你很可能熟悉卷积神经网络的一些经典应用,如图像识别和文本分类等任务。卷积是一种非常自然而强大的工具,用于捕捉空间不变的模式。这无关紧要,其中在图像晶须当我们识别猫出现。同样,在将文件归类为法庭案件记录时,法律术语短语的存在对我们的重要性要大于他们在文件中的地位。但是时间模式呢?通过类似的说法,可能会出现周期性模式,如每周周期性和某些自相关结构,卷积非常适合建模吗?

答案是肯定的!事实证明,有一些专门的卷积架构在时间序列预测任务中表现得非常好。在这篇文章中,我将特别讨论一个DeepMind的WaveNet,它旨在推动文本到语音系统的最新技术发展。WaveNet模型的架构允许它利用卷积层的效率,同时减轻在大量时间步长(1000+)内学习长期依赖性的挑战。后者是复发神经网络的常见痛点,即使是那些包含一些长期记忆机制(如LSTM)的神经网络。

WaveNet的核心是扩张的因果卷积层,它允许它正确处理时间顺序并处理长期依赖,而不会导致模型复杂性的爆炸。以下是DeepMind帖子中其结构的可视化:

WaveNet

视觉效果很有帮助,但让我们试着通过打破它来获得更多的洞察力。首先,是什么造成了卷积因果关系?在传统的一维卷积层中,我们在输入序列上滑动权重过滤器,顺序地将其应用于系列的(通常是重叠的)区域。但是当我们使用时间序列的历史来预测它的未来时,我们必须要小心。当我们形成最终将输入步骤连接到输出的层时,我们必须确保输入不会影响及时进行输出的输出步骤。否则,我们将使用未来预测过去,所以我们的模型会作弊!

为了确保我们不以这种方式作弊,我们调整卷积设计以明确禁止未来影响过去。换句话说,我们只允许输入连接到因果结构中的未来时间步输出,如下图所示,来自WaveNet论文的可视化。实际上,这种因果一维结构很容易通过将传统的卷积输出移动多个时间步来实现。

dilated_conv

因果卷积提供了处理时间流的适当工具,但我们需要进行额外修改以正确处理长期依赖性。在上面的简单因果卷积图中,您可以看到只有5个最近的时间步长可以影响突出显示的输出。事实上,我们需要每个时间步一个额外的层才能在系列中更远的地方(使用适当的术语,以增加输出的感受野)。对于具有大量步骤的时间序列,使用简单的因果卷积来从整个历史中学习将很快使得模型方式在计算上和统计上更加复杂。

WaveNet使用扩张的卷积而不是犯这个错误,这使得感知场随着卷积层深度的增加呈指数增长。在扩张的卷积层中,滤波器不以简单的顺序方式应用于输入,而是跳过恒定的扩张速率在它们处理的每个输入之间输入,如下面的WaveNet图中所示。通过在每一层(例如1,2,4,8,...)乘法增加膨胀率,我们可以实现我们所需的层深度和感受野大小之间的指数关系。在图中,您可以看到我们现在如何只需要4层将所有16个输入系列值连接到突出显示的输出(比如第17个时间步长值)。通过扩展,当使用每日时间序列时,人们可以捕获超过一年的历史,只有9个这种形式的扩张卷积层。

dilated_conv

这一切听起来都不错,但它在实践中如何运作?使用与我之前的帖子相同的维基百科页面流量数据,我训练了一个简单的WaveNet风格的网络(代码全部在随附的笔记本中)。我使用了一叠8个扩张的因果卷积层,然后是2个致密层。该模型训练很快,并且在系列中获得了许多反复出现的模式。下图显示了模型生成的未来预测示例。这与我之前关于LSTM架构的帖子中的系列相同,您可以清楚地看到这些CNN预测更具表现力和准确性。

ts_preds

这个简单的CNN利用了WaveNet模型的核心组件,但省略了一些额外的增强功能,包括残留和跳过连接以及门控激活。请继续关注我未来的帖子/笔记本,了解更多相关内容并了解WaveNet的全部功能。您还可以查看WaveNet论文Sean Vasquez应用于同一维基百科数据集的WaveNet架构的现象张量流实现

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于引用内容,以下是关于图卷神经网络(Graph Convolutional Neural Network,GCN)的时间序列预测的介绍: 图卷神经网络(GCN)是一种用于处理图结构数据的深度学习模型。它通过在图上进行卷操作来捕捉节点之间的关系,并将这些关系用于预测任务。在时间序列预测中,GCN可以用于建模节点之间的时序关系,从而预测未来的时间序列值。 GCN的时间序列预测过程通常包括以下步骤: 1. 数据准备:将时间序列数据表示为图结构,其中每个节点表示一个时间步,节点之间的边表示时间上的邻接关系。 2. 图卷层:通过在图上进行卷操作,GCN可以捕捉节点之间的时序关系。每个图卷层将节点的特征与其邻居节点的特征进行卷操作,并生成新的节点特征。 3. 时间池化层:为了减少计算量和提取关键信息,可以使用时间池化层对节点特征进行降维。时间池化层可以将多个时间步的节点特征合并为一个时间步的特征。 4. 全连接层:将池化后的节点特征输入到全连接层中,进行最终的预测。 5. 损失函数和优化:使用适当的损失函数(如均方误差)来度量预测值与真实值之间的差异,并使用优化算法(如梯度下降)来更新模型参数,使预测结果更接近真实值。 请注意,GCN的具体实现可能因不同的框架和库而有所不同。在Matlab中,可以使用相应的工具包或自行实现GCN模型来进行时间序列预测

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值