论文下载地址:

N-BEATS: Neural basis expansion analysis for interpretable time series forecasting​arxiv.orgMeta-learning framework with applications to zero-shot time-series forecasting​arxiv.org

code:https://github.com/forecasts-and-nn/n-beats

  • 深度学习时间序列预测个人解读

网络结构: 用于时间序列预测的深度学习网络结构包括基于CNN的结构,基于RNN的结构与基于attention的结构。以上述三种结构为基础形成许多的变式, 知乎上讲解的蛮多的,这里不做过多解释。

预测目标:时间序列预测的目标,可以分为值预测与概率预测。值预测就是直接输出预测的值。概率预测不止输出预测的值,也会输出预测值的分布,举一个亚马逊的货物需求预测案例,与直接去预测未来具体的需求值不同,概率预测则预测未来需求值的分布(置信区间)。需求预测是为补货服务的。得到具体的预测值后,补货只需要在预测值上加安全库存。以往的补货的安全库存基于简单的需求正态分布假设,而概率预测中基于过去的数据拟合了更好的概率分布,更好地服务于补货。像这种情况下基于概率分布的预测会更加合理。

未来展望:在深度学习时间序列的发展方面,大概有三个方向,第一是在网络设计中加入领域知识,第二是时间序列模型的可解释性, 第三是时间序列的异常检测与因果推断。

  • 深度学习ICLR最新论文解读

在金融领域,时间序列是一个非常重要的构成部分。量化投资领域时间序列预测,有兴趣可翻看之前分享过的KDD融合基金经验的机器学习量化投资建模论文解读,作者将LSTM与股票时间序列进行结合,并且引入graph learning, matrix factorization等技术进行股票投资组合构建。同样,客户违约预测的时间序列预测KDD金融应用论文-信用评估, 将LSTM应用于用户的信用评分中。其他的,还有交易反欺诈,理财产品销量预测,基金相关性预测,资产储备情况预测等等,后续会陆续分享。

本文介绍Bengio团队的两篇单变量时间预测的论文,N-BEATS的文章发表于ICLR2020中,Meta-learning+N-BEATS的文章目前在arxiv中开源。N-BEATS文章第一次提出一种可解释的深度学习时间序列预测架构。Meta-learning+N-BEATS论文则进一步在原始N-BEATS模型上引入元学习机制进行zero-shot的时间序列预测。注意两篇论文都是关于单变量时间预测的,实际问题很多是多变量时间预测,论文中好多思想对多变量时间预测同样具有借鉴意义,有兴趣的朋友可以尝试扩展至多变量时间序列预测。

论文一: N-BEATS网络

图1:N-BEATS网络结构图

该网络实现单变量多对多预测,网络结构有两个作用,一个叫复原,一个是预测,复原的作用是进行有效的时间序列特征提取,发挥深度学习自动特征学习的优势。整个网络的Block的设计与迭代决策树的思想类似,用网络学习残差,先让神经网络学习简单的规律,再学习复杂的规律。

Block内部结构:每个block分为两部分,第一部分用于生成后项展开系数(backward expansion coefficients)和前项展开系数(forward expansion coefficients),原始时间序列输入经过四层全连接后,经过线性投影层生成后项展开系数

和前项展开系数
,线性投影层就是简单的线性变换,例如

第二部分将后项展开系数

和前项展开系数
通过basis layers输出结果

Block间连接:不同bock之间通过残差模块进行衔接。公式如下所示,其实就是下一个block目标是学习上一个block转换得到的残差。

模型可解释性

在可解释性层面,作者提出两种结构,一种generic architecture不依赖于特定经验知识,该变化可以看做在时间的波形重建,由于没有额外的限制在

上 ,导致生成的
解释性比较差。另一种则通过引入专家经验来满足可解释性要求,即通过引入时间序列的趋势性(trend)和季节性(seasonality)来实现可解释性。具体方法为人为设定与
相乘的
矩阵使得该矩阵满足趋势性和季节性的要求。这方面带来的启示是,

可以通过设计相乘矩阵的数值形式来实现专家经验的引入。

模型集成:最后通过两种类型的ensemble进行结果的输出,SMAPE, MASE和MAPE, SPAME四种优化目标融合,以及不同时间窗口进行融合。

论文二:基于meta Learning的N-BEATS网络

Meta_learning通俗流程: 首先 meta初始化参数

,得到任务
的初始化参数
,然后会进行多轮迭代,最后按照bayesian ebsemble 或者weighted sum进行结果汇总。得到最终概率分布函数,基于此确定更新后的meta-parameters。 而meta-parameters
包括三部分,用于meta初始化函数的t参数,用于任务共享的predictor参数w, 和用于meta更新函数的u参数。predictor由
进行初始化 , 而meta参数
用来生成

Meta_learning在N-BEATS上应用:

该任务采用meta-learning方法利用别的任务的数据训练n-beats,使得在新的目标任务中不需要重新训练即可满足需求。

N-BEATS的公式可以简写如下:

上式中,每个N-BEATS的block都是 meta-learning 的inner loop,而predictor就是

,与函数
和函数
相关的参数
就是outer loop学习的meta参数
.基于meta参数形成每个task的参数
用于调整每个iteration的predictor输入。meta learning的更新公式如下,可以看到,在inner loop更新中,用于复原任务的转换参数
是各个子任务所独有的,需要训练更新参数,用于预测任务的参数
在predictor和update function是共享的,也就是inner loop和outer loop都会有更新。

欢迎交流!

CNN做时间序列预测_深度学习与时间序列预测相关推荐

  1. 用lstm模型做预测_深度学习模型 CNN+LSTM 预测收盘价

    -- 本篇文章 by HeartBearting 上一篇浏览量很大,感谢各位的关注! 能够在这里分享一些实验,一起领略 数据科学之美,也很开心. 以后,这个实验的模型会不断深化. 之后,也会分享一些 ...

  2. cnn 反向传播推导_深度学习中的参数梯度推导(三)下篇

    前言 在深度学习中的参数梯度推导(三)中篇里,我们总结了CNN的BP推导第一步:BP通过池化层时梯度的计算公式.本篇(下篇)则继续推导CNN相关的其他梯度计算公式. 注意:本文默认读者已具备深度学习上 ...

  3. 基于深度学习的时间序列预测

    # 技术黑板报 # 第十一期 推荐阅读时长:15min 前言 时间序列建模历来是学术和工业界的关键领域,比如用于气候建模.生物科学和医学等主题应用,零售业的商业决策和金融等.虽然传统的统计方法侧重于从 ...

  4. 深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战 卷积神经网络,听起来像是计算机科学.生物学和数学的诡异组合,但它们已经成为计算机视觉领域中最具影响力 ...

  5. 5个时间序列预测的深度学习模型对比总结:从模拟统计模型到可以预训练的无监督模型

    时间序列预测在最近两年内发生了巨大的变化,尤其是在kaiming的MAE出现以后,现在时间序列的模型也可以用类似MAE的方法进行无监督的预训练 Makridakis M-Competitions系列( ...

  6. 基于深度学习的时间序列预测方法

    之前对时间序列预测的方法大致梳理了一下,最近系统的学习了深度学习,同时也阅读了一些处理序列数据的文献,发现对于基于深度学习的时间序列预测的方法,还可以做进一步细分:RNN.Attention和TCN. ...

  7. [深度学习项目] - 时间序列预测 (5)[待补充]

    基于RNN的时序预测 基于LSTM的时序预测: 输入数据时 输入的 y t y_t yt​和 x t + 1 x_{t+1} xt+1​之间存在一个时间差. DeepAR 和 MQRNN 都可以实现时 ...

  8. 深度学习多变量时间序列预测:LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网 ...

  9. 深度学习多变量时间序列预测:Bi-LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:Bi-LSTM算法构建时间序列多变量模型预测交通流量+代码实战 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见 ...

最新文章

  1. Struts2返回json
  2. 小程序 获取用户信息
  3. js动态增加,删除td,tr,table,div
  4. Linux的实际操作:用户管理(用户添加useradd -d和设置用户密码passwd)
  5. clion jiqiao
  6. Linux学习笔记 -- 定时任务调度/磁盘分区与挂载
  7. android和view相关的东西
  8. 使用Nexus在Windows中搭建Maven私服
  9. 顺序表的基本操作实现
  10. OpenCV读写视频(编解码器)
  11. 【竞赛篇-国创(大创)申报立项】国家级大学生创新创业训练计划申报经验
  12. oracle怎么查看long类型的值,oracle中对LONG列进行查询
  13. TCP—为什么是AIMD?
  14. HTML颜色名称和颜色代码表
  15. 为什么NFT的头像卖这么贵?这与IPFS/FIL有什么联系
  16. isFinite()的使用
  17. 最新·前端的工资分布情况 - 你拖后腿了吗?
  18. 中国商标网JS调试 - 动态代码注入
  19. Spring Boot 集成 Elasticsearch
  20. if语句的写法之普通,文艺,2B青年写法

热门文章

  1. 雏凤清音——面向数据的前端编程方法
  2. luoguP3625 APIO2009 采油区域
  3. 扬帆际海教育:跨境电商需要了解的主流社媒平台
  4. 富士康计算机类笔试题,富士康2021校招技术类笔试题
  5. switch语句 while循环 do-while循环
  6. 计算机网络思科平台第四章测验答案
  7. C++【引用】——串讲
  8. R语言中调用windows中的字体方法
  9. 移动应用进入碎片化时代
  10. 当不小心更改了matlab工具箱的内置函数怎么办?以及matlab指定工具箱卸载