基于卷积的神经网络的时间序列预测——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论文的可视化。实际上,这种因果一维结构很容易通过将传统的卷积输出移动多个时间步来实现。

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

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

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

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

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

  1. 【深度学习论文翻译】基于LSTM深度神经网络的时间序列预测(Time Series Prediction Using LSTM Deep Neural Networks)

    目录 一.前言 二.摘要 三.什么是LSTM神经元? 四.简单正弦波示例 五. 不那么简单的股票市场 六.多维LSTM预测 七.结论 一.前言 最近需要用到时间序列,在网上也找到了一篇相关的文章及源代 ...

  2. 图神经网络 | Python基于GNN和ARIMA的时间序列预测

    图神经网络 | Python基于GNN和ARIMA的时间序列预测 目录 图神经网络 | Python基于GNN和ARIMA的时间序列预测 基本描述 程序实现 参考资料 基本描述 时间序列预测 一个基于 ...

  3. 基于Keras的LSTM多变量时间序列预测(北京PM2.5数据集pollution.csv)

                                 基于Keras的LSTM多变量时间序列预测 传统的线性模型难以解决多变量或多输入问题,而神经网络如LSTM则擅长于处理多个变量的问题,该特性使 ...

  4. 《MATLAB 神经网络43个案例分析》:第32章 小波神经网络的时间序列预测——短时交通流量预测

    <MATLAB 神经网络43个案例分析>:第32章 小波神经网络的时间序列预测--短时交通流量预测 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB ...

  5. matlab动态神经网络进行时间序列预测分析

    matlab动态神经网络进行时间序列预测分析 时间序列预测问题分类 有y,无x,即y(t)=f(y(t−1),y(t−2),...)y(t)=f(y(t−1),y(t−2),...)y(t)=f(y( ...

  6. 【电力负荷预测】基于matlab BP神经网络电力负荷预测【含Matlab源码 278期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [电力负荷预测]基于matlab BP神经网络电力负荷预测[含Matlab源码 278期] 获取代码方式2: 付费专栏Matlab智能算 ...

  7. 【智能算法】GRNN的数据预测—基于广义回归神经网络的货运量预测

    目录 GRNN的数据预测-基于广义回归神经网络的货运量预测 GRNN的数据预测-基于广义回归神经网络的货运量预测 %% 清空环境变量 clc; clear all close all nntwarn ...

  8. 基于 CUDA 的神经网络进行气温预测

    基于 CUDA 的神经网络进行气温预测 一.基于 CUDA 的神经网络进行气温预测   任务描述:搭建神经网络,根据之前已有的天气信息预测接下来的最高气温. 二.数据 1. 数据介绍 \ year m ...

  9. python 神经网络预测未来30天数据_使用LSTM循环神经网络的时间序列预测实例:预测未来的货币汇率...

    Statsbot团队发表过一篇关于使用时间序列分析来进行异常检测的文章.文章地址:https://blog.statsbot.co/time-series-anomaly-detection-algo ...

最新文章

  1. 周期串java_求最小周期串
  2. 从零起步CMFCToolBar用法详解
  3. java 全局变量 内存不回收_JAVA知识梳理:内存管理与垃圾回收机制
  4. window下eclipse +cdt+cygwin做C,C++开发环境搭建 (转自:http://blog.csdn.net/thinkandchange/article/details/7935)
  5. 2018年9月份GitHub上最热门的Python项目
  6. linux mysql timestamp_MYSQL中TIMESTAMP类型的使用
  7. 深度探秘 从 Auto Labeler 挖掘 Tesla 全自动驾驶的工作机制
  8. 力扣--扁平化嵌套列表迭代器
  9. 在python中操作excel
  10. [BZOJ3626] [LNOI2014] LCA 离线 树链剖分
  11. html5中3个盒子怎样设置,Web前端开发任务驱动式教程(HTML5+CSS3+JavaScript)任务10 盒子模型及应用.pptx...
  12. 2018年6月1号(线段树(1))
  13. P4980 【模板】Polya定理
  14. CSS Margin 边距详解、CSS 实现水平垂直居中、overflow 兼容 Safari 浏览器
  15. FCKEditor v2.6.3 最新版-ASP.NET 演示程序
  16. Maven使用yuicompressor-maven-plugin打包压缩css、js文件
  17. 篮球计分器软件_SPSS 26 综合性数学统计分析工具
  18. java stream list转map
  19. EasyAr聚焦模式
  20. 什么是AOP切面编程

热门文章

  1. 【学习笔记】AR码(二维码)识别
  2. 狗语翻译器热销?神马玩意
  3. mongoDb快速入手
  4. 修改bind搭建的dns服务器监听端口地址为网卡地址
  5. 程序猿的表白情书写的都是什么哇?
  6. 有五个字母A(a), E(e), I(i), O(o),U(u)称为元音,其他所有字母称为辅音,请编写程序判断输入的字母是元音(Vowel)还是辅音(Consonant)。
  7. QQ项目之九 主窗体
  8. android自动打开apk文件失败,【Android】DownloadManager 打开url下载的APK文件无法打开的问题 cannot open file...
  9. PAT L3-014. 周游世界
  10. Linux系统增加桌面快捷方式,Linux系统中怎么创建类似于Windows中的桌面快捷方式...