前言

保持住节奏,每周起码一篇paper reading,要时刻了解研究的前沿,是一个不管是工程岗位还是研究岗位AIer必备的工作,共勉!
准备再写几篇这种非常细致的文章之后,接下来写作主要集中在模型的结构,创新点,解决的问题,以及比较巧妙的操作,代码实战,以及我个人感觉需要写下来,并且有意思的东西。

一、Address

这是ICML2018年的一篇paper,来自于清华的团队
PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive

http://proceedings.mlr.press/v80/wang18b/wang18b.pdf

二、Introduction

2.1 创新思路


文中abstract中先指出本文作者的创新之一在于把双memory用级联的方式链接构建新的LSTM结构(Causal LSTM),并且全篇文章围绕deeper in time来说明,这里deeper in time在读完全篇之后理解为就是网络cell的堆叠和时间步的结构。


这里还提出了用一个gradient highway units work去解决存在的梯度消失问题,并且此结构和Causal LSTM无缝连接。
句子后面之所以会强调自适应的获取短时和长时的信息依赖,主要是因为对于一般RNN来讲长时更可能出现梯度消失的问题

2.2 存在问题


这里举出的两个特别的情况说的算是比较清晰。

  1. 突发情况造成的异常预测,这时所取决的依赖应该是短时的而不是长时的。
  2. 在场景中的目标很混乱的移动,主要指的还是互相覆盖等情况,有的时候会出现预测目标扰乱甚至错误预测,这就需要对目标的内容有一个很好的提取,需要很长时间的一个训练和依赖,所以长时间的依赖也是需要考虑的。


这里也把predrnn拿出来说了一下,这个模型用了两个memory结构,一个是原始的temporal memory,一个是新构建的spatialtemporal memory。
但是这种复杂的结构依旧受梯度消失难题的困扰,通过时间的反向传播,梯度的幅度呈指数衰减,其实就是对于长时的依赖和训练容易造成梯度消失的问题,这个也是RNN中比较常见的一个问题。


作者的key insight是做一个在每个时间步和每一层之间有一个可适应的连接,这个可以连接可以同时服务于长时和短时的路线。


这里也做了个总结,对于时空序列问题来讲,模型主要分为以RNN为主,和以CNN为主,也举出了两者的分别的问题。

  1. 长时间的动作中,CNN-based 方法的主要集中在空间表现信息而不是时间上的一致性
  2. RNN-based 方法主要有梯度消失的问题。

2.3 Revisiting Deep-in-Time Architectures


这是文章对比的三种结构。
对于(a)


这句话的意思就是在step to step这个过程中,也就是时间步的过程中就是普通的每层相连,不会有额外的建模能力。
对于(b)

增加了step to step传播的深度,因为其中的每个时间步的传播是从第L层传播到第1层,这个应该就是文章所谓的深度。

这里给了一个定义蛮有意思的,说这样的结构传播能够学习到短时的一些复杂的非线性变化。
但是依然存在梯度消失的问题。
对于(c)就是上次所讲的PredRNN结构了

三、PredRNN++

3.1 Causal LSTM


此时此刻我需要再把 LSTM 拿出来说一遍,不知道读者是否现在可以立马不看我下面这张图直接把所有的细节记起来。
如果不能,那就跟着我来吧。

跟着我捋一遍过程,当然我这里只简要说下基础:

  1. ht-1与Xt做concat操作,之后经过sigmoid形成[0, 1]的忘记门,输入门,输出门(我是按照上图的从左到右的顺序来讲述的)
  2. Ct-1通过忘记门
  3. ht-1与Xt做concat操作通过tanh激活函数,通过输入门(这里在通过输入门之前相当于生成了此时的输入生成状态)
  4. 以上通过遗忘门和输入门的两个向量相加就是最后的Ct,也就是此时的cell state
  5. 最后,这个cell state通过再一次的非线性变化tanh 最终通过输出门输出得到最后的ht

如果这里不是很清楚我不建议继续读下去先看我的一个特别特别细致的文章。
【Deep Learning】详细解读LSTM与GRU单元的各个公式和区别

这回我们再来看 Causal LSTM结构

主要是三层级联的结构,你仔细看一下,会发现第一层紫色的其实就是类似于LSTM的结构只不过画法是进行了展开
特点在于以下四点

  1. 每个门不是由X和H决定,而是由X和H以及C决定,通过输入门之前的状态也是又三者决定的
  2. 每个cell都是先进行输入门和忘记门的操作,之后输出这个cell的cell state,把输出门的结构放在了整个Causal LSTM的最后的橘色第三部分。
  3. 依旧存在两个memory结构,即C和M,只不过这里明显区分,C为temporal state,M为spatial state,因为输入C为上一个时刻的C,M是上一层的M,所以这里C与时间维度有关,M与空间维度有关。
  4. M作为第二部分的state输入,并且通过忘记门之前做了一个非线性操作tanh,
  5. 这里的输出门不是用的sigmoid激活,而是采用tanh激活,并且输出门的输入为前两个级联cell的输出以及最开始的输入
  6. 最后输出H取决于两个cell的共同输出即此时cell的temporal state和spatial state,而不是第二部分的最终输出state。

    这里全部都标出了,我相信如果您认真看不会看不懂,更不会糊涂。
    说句实在话,全网应该找不出第二个比我还细致,像我一样一点点带您走进时空序列模型的博主了。

    这里对 卷积核做了一个更为详细的说明。

看下 ST-LSTM与Causal LSTM之间的对比,这里不做更深入的说明了,因为近两篇文章已经足够说明,其他请大家自己吸收。

这里主要对比两个cell的结构,对比ST-LSTM来说,Causal LSTM对于M和H定义更加清晰,并且不是简单的concat,而是采用了一个递归深度更深的一个级联结构最终输出H

这个模型对突发实践效果更好些。
但是读到这里您有没有个自发的这样一个疑问:
就是说为什么要先update C再去级联生成M,为何不是后者在第一部分,前者在第二部分呢,也就是说用M去生成C?

其实这里是可以自行变换的,文中在实验部分也给出了这样变换之后结构的实验结果。

3.2 Gradient Highway


通过Recurrent Highway Networks的思想能够证明高速网络能够有效的在非常深的网络中传递梯度,继而防止长时导致的梯度消失。
通过这个想法,作者提出了Gradient Highway Unit (GHU), 结构如上图所示,公式如下:
相当于对两个输入做了个类似于GRU中的update gate的操作。

3.3 PredRNN++总体结构


和PredRNN相比,区别在于cell从ST-LSTM换为Causal LSTM 以及在第一层和第二层堆叠结构中引入GHU结构。
GHU的输入为目前的更低一层的输出以及前一个时刻的GHU的输入,即GHU连接了当前时刻以及前一个时刻的输入,引导的结果就是梯度不再是一股线传播了,而是可以直接在第一层与第二层之间有个高速的传播,换句话讲就是传播的距离缩短了,也就变得没有之前的那么’深‘了,可以有效的解决梯度消失的问题。

这里也对 GHU的里面的类似于update gate的结构做出了说明,主要是为了可适应性

其实这里你是否又会自发的出现一个问题:
为什么GHU结构要放在第一层与第二层之间呢?而没有放在其他两层之间呢??

其实这里是也是可以自行变换的,文中在实验说明了其他情况。
文中有一句推测,也是一个很好的总结:

四、Experiments

参数,底层需要更大一些的hidden state维度

codes地址:(对于代码的讲解以后推出)
https://github.com/Yunbo426/predrnn-pp


利用 tf框架,lr=0.001,优化为ADAM,此外利用L1+L2正则化并采用scheduled sampling strategy
这里主要说明 Moving MNIST Dataset的实验部分,此数据集本身不再重复讲述。

4.1 预测表现



这里的实验主要都是针对有数字重叠的时候来举例的,这种其实更能说明模型的预测能力,这里PredRNN++效果相比于其他的模型,主要的优势在于更加清晰有明显的轮廓,模糊的程度降低,在此类问题中预测越来越模糊是一个十分棘手的问题,也是需要解决的问题。

为了更好的测试模型的泛化和迁移能力,这里也用包含三个数字运动的测试集进行模型测试,指标为MSE,值越小说明预测越好,可以看出所有的模型都是随着预测时间的长度增长,所预测的精度在下降,但PredRNN++依然是保持最高的精度,并且相比之下,下降率也是很小的

  1. 表中指标有SSIM,这个值范围为-1到1,是衡量产生的预测数据和真实数据的相似度,越大说明越相似。
  2. 表中也对更长的预测序列做一个说明,从输出为10 time steps到30 time steps。
  3. 对于我前面所提出的问题做出了说明,把Casual LSTM的内部结构空间和时间memory进行对应的交换。
  4. 是否连有GHU结构
    最终的结果由图可见,Causal LSTM+GHU的结构最好。
    通过对比①和②可以说明Causal LSTM 代替ST-LSTM 效果更好
    通过对比②和③可以说明还是TEMPORAL-TO-SPATIAL结构更好
    通过对比④和①可以说明GHU也可以和ST-LSTM结构无缝连接,并且GHU的效果明显
    通过对比⑤和②可以说明加入GHU可以得到更好的结果,如果是输出10 steps还是30 steps。

4.2 GHU实验

但是这里读者是否还记得我前面所问的一个问题就是这个GHU的放置位置,上表中应该是默认都放在第一层和第二层之间。

因为一共是设计四层Causal LSTM 结构,再加上一层GHU,所以有三种方法分别为Bottom,Middle,Top,实验可以证明最底层最好。

4.2 梯度分析


当预测的数字互相覆盖的时候,预测的难点在于,将他们分开,并且独立的目标不要失去自己的形状特征,依然能保持原有的形状。而这个的影响可能主要取决于梯度消失的问题,这个问题会防止这种很深的网络去获取长时数据的关系。

左图为每一个输入帧的最后时间步的loss函数的梯度范数,比如输入第一个图片,总共时间步移为10,那么输出第一个图片的loss求出来的梯度范数就是上图所示的值。右图为每一个输入帧出现数字覆盖情况的概率。
其他模型为比较陡峭的变化曲线,而PredRNN++是一个碗状的曲线,说明可以缓解梯度消失的问题,并且这个碗装和右图的上边界的碗状相像,这说明模型学习到了长时的信息依赖。

五、Conclusions

  1. 提出了新的LSTM结构Causal LSTM ,比ST-LSTM更好,其实主要思想是更改了两个memory的连接结构,ST-LSTM是简单的concat,而Causal LSTM 为级联结构。
  2. 为了解决梯度消失的问题,提出了GHU结构,主要是借鉴了高速的想法。
  3. 对梯度有一定很系统的分析。

又不知不觉,码了1w多字,不为了别的,就为了简单、通俗、易懂、全面,共勉。

【时空序列预测第四篇】PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive相关推荐

  1. 【时空序列预测第二篇】Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting

    个人公众号 AI蜗牛车 作者是南京985AI硕士,CSDN博客专家,研究方向主要是时空序列预测和时间序列数据挖掘,获国家奖学金,校十佳大学生,省优秀毕业生,阿里天池时空序列比赛rank3.公众号致力于 ...

  2. 卷积LSTM网络应用于时空序列预测

    时空序列预测问题是输入的是按照某一时刻之前若干个时刻表示空间信息的二维矩阵,预测某一时刻后面若干个时刻的空间状态.可以形式化为: 卷积LSTM(Convolutional LSTM)是把卷积神经网络的 ...

  3. 2021AIOps挑战赛|基于移动通信网络运维中的多指标时空序列预测

    2021国际AIOps挑战赛决赛暨AIOps创新高峰论坛于2021年5月13日在北京成功举行.本文根据中国移动研究院首席科学家.人工智能与智慧运营中心总经理冯俊兰博士现场发言纪要整理而成. 演讲内容 ...

  4. 中国移动研究院冯俊兰:基于移动通信网络运维中的多指标时空序列预测

    这和我当年做的工作就很像了. 转载自:https://mp.weixin.qq.com/s/veqH753nxWW0Hr0PDB1uSg 中国移动研究院冯俊兰:基于移动通信网络运维中的多指标时空序列预 ...

  5. 【时空序列预测实战】风险时空预测?keras之ConvLSTM实战来搞定

    作者 | Eric琨 学校 | 武汉大学信管 研究 | NLP.时空序列 出品 | AI蜗牛车 前言 毕设临近截止,故写一篇心得以供新手学习,理论在知乎上有很多介绍的不错的文章,这里强烈推荐微信公众号 ...

  6. 【时空序列预测paper】ConvLSTM:A Machine Learning Approach for Precipitation Nowcasting

    前言: 论文和两位大佬的解读一起看AI蜗牛车 和翻滚的小@强 论文原文:Convolutional LSTM Network: a machine learning approach for prec ...

  7. PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive Learning 翻译

    PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive Learning 目录 ...

  8. 时空序列预测之PredRNN++(Casual LSTM和GHU解决时空预测学习中的深度困境)

    首先声明,虽是原创文章,但是站在了巨人的肩膀上进行创作的,借鉴了车哥AI蜗牛车的一些总结,加上了自己的补充和整理完成. 1. 写在前面 今天分享的这篇文章是发表在ICML2018年的paper,是基于 ...

  9. PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive Learning

    摘要 我们提出了PredRNN ++,这是一种用于时空预测学习的递归网络.为了获得强大的短期视频动态建模能力,我们利用名为Causal LSTM的新型递归结构和级联双存储器,使我们的网络更加及时.为了 ...

最新文章

  1. Don’t Use the Win32 API PostThreadMessage() to Post Messages to UI Threads(翻译)
  2. 图解.net程序集赋予强名称
  3. UIAutomation 自动化
  4. 【渝粤教育】国家开放大学2018年秋季 1133t文献检索 参考试题
  5. 学习曾国藩,学做人做事学技术
  6. python怎么输入两个数然后求差值_python两个日期之间天差值获取
  7. pip更新后怎么还是旧版本_双城SEO优化_百度算法更新后,企业网站外链该怎么发?...
  8. 比特币区块链将分道扬镳、Libra苦难继续,2020区块链进入关键时期!
  9. java让程序暂停几秒_影响JAVA系统性能的微观指标
  10. linux tcp 压力测试工具,技术|分布式TCP压力测试工具 tcpcopy
  11. 英特尔核显驱动hd630_全新CPU性能天梯图,十代英特尔与R3 3100/3300X定位讲解
  12. 用photoshop去掉图片文字
  13. 【汇智学堂】基于Socket实现的网络版梅花易数一撮金游戏
  14. 关于wlw(windows live writer):“无法连接到您的日志服务:服务器响应无效”的解决方案
  15. aardio - 调用Python库下载蓝奏盘文件
  16. FHS 文件系统的理解
  17. python实现多句话翻译多语种(调翻译接口)
  18. 爱莫科技加入中国ECR委员会助力FMCG产业更好更快发展
  19. 我的python语音阅读器
  20. hive 随机抽样 distribute by rand() sort by rand() limit n

热门文章

  1. 【BZOJ 1050】旅行comf
  2. 最新在线客服系统php代码微信软件公众号小程序app二维码聊天网站源码
  3. Redis源码学习(14),t_set.c 学习(二),sismember,scard,spop 命令学习
  4. 第十六届全国大学生智能车竞赛线上比赛监督裁判培训演练
  5. __attribute__((__aligned__(n)))对结构体对齐的影响
  6. 实时动态定位(RTK)
  7. U盘成为电脑头号杀手 是谁给U盘下毒
  8. 48种数据分析可视化图表
  9. 蛋糕究竟是怎样做大的
  10. 开发功能更加完善的智能颈部按摩仪