PredRNN: Recurrent Neural Networks for Predictive Learning using Spatiotemporal LSTMs论文解读

论文解读《PredRNN: Recurrent Neural Networks for Predictive Learning using Spatiotemporal LSTMs》

点击下载.
作者:Yunbo Wang,Mingsheng Long,Jianmin Wang,Zhifeng Gao,Phip S Yu
清华大学软件学院

abstract

时空序列预测的目的是通过学习历史帧生成未来的图像,其中空间表现和时间变化是两个关键的结构。这篇论文提出了一种PreRNN来建模这种结构。主要思想是:时空预测学习应该在一个统一的记忆池中记忆空间表象和时间变化 具体来说,内存状态不在局限于每个LSTM的内部。而是在两个方向上之字形移动,垂直方向和水平方向贯穿所有RNN层的状态。网络的核心是一个新的时空ST-LSTM,同时提时间和空间表示的单元。PreRNN在三个视频预测数据集上实现了最先进的预测性能。

1 Introduction

作为预测学习的一个关键应用,基于连续帧的图像生成在机器学习和计算机视觉领域受到了越来越多的关注。学习时空序列的表示,(RNN)[17日27]长期短期记忆(LSTM)[9]最近从监督学习任务序列扩展,如机器翻译[22日2],语音识别[8],动作识别(28日,5)和视频字幕[5],这些都是时空预测学习场景。

1. 1 为什么提出时空记忆单元

在时空预测学习中,有两个关键方面:空间相关性时间动态性。预测系统的性能取决于它是否能够记住相关的结构。然而,据我们所知,最先进的RNN/LSTM预测学习方法[19,21,6,12,25]更关注于建模时间变化(如物体移动轨迹),每个LSTM单元内的记忆状态会随着时间不断更新。堆叠的LSTM架构被证明对于监督的时空学习(如视频动作识别[5,28])是强大的。该场景满足两个条件:(1)时间特征对分类任务足够强。相反,细粒度的空间外观被证明不那么显著;(2)在预期输出中没有需要建模的复杂视觉结构,空间表示可以高度抽象。然而,时空预测学习不满足这些条件。在这里,空间变化和时间动态性对于生成未来的框架同样重要。一个简单的想法是,如果我们希望预测未来,我们需要记住尽可能多的历史细节。当我们回忆以前发生过的事情时,我们不仅回忆了物体的运动,还回忆了从粗到细的视觉现象。基于此,我们提出了一种新的循环架构,称为预测性RNN (PredRNN),**它允许属于不同lstm的内存状态跨层交互(在传统的RNNs中,它们是相互独立的)。**作为PredRNN的关键组成部分,我们设计了一种新的时空LSTM (ST-LSTM)单元。它在一个统一的存储单元中为空间和时间表示建模,并在层次上垂直和状态上水平地传递内存。PredRNN在三个视频数据集上实现了最先进的预测结果。这是一个预测学习的一般和模块化框架,并不局限于视频预测。

1.2 相关工作

最近在RNN有了些新进展,比如如何基于历史的观测数据,预测未来数据。

  • Ranzato等人[16]定义了一种基于语言建模的RNN架构,在patch簇的离散空间中预测帧。

  • Srivastava等人[21]将该序列与LSTM框架序列相适应。

  • Shi等人[19]扩展了该模型,通过利用输入到状态和状态到状态转换中的卷积来进一步提取可视化表示。
    卷积LSTM (ConvLSTM)模型已经成为该领域的一项开创性工作。

  • Finn等人[6]构建了一个基于ConvLSTMs的网络,该网络可以对输入像素的变换进行预测,用于下一帧的预测。

  • Lotter等人[12]提出了一种深度预测编码网络,其中每个ConvLSTM层在每个时间步长输出一层特定的预测,并产生一个误差项,然后在网络中横向和纵向传播。然而,在它们的设置中,预测的下一帧总是基于整个前一ground truth序列。
    相比之下,我们通过序列来预测序列,这显然更具挑战性。

  • Patraucean et al.[15]和Villegas et al.[25]受行为识别的双流CNNs[20]启发,将光流引入RNNs来建模短期时间动态。然而,由于光流图像会带来较高的额外计算成本和降低预测效率,因而难以应用。

  • Kalchbrenner等人[10]提出了一种视频像素网络(VPN),利用成熟的PixelCNNs[24]估计视频中原始像素值的离散联合分布。但是它受制于高计算复杂度。除了上述RNN架构外,还涉及到其他深层架构来解决可视化预测学习问题。

  • Oh等人[14]定义了一个基于cnn的动作条件自动编码器模型来预测Atari游戏的下一帧。

  • Mathieu等人[13]成功地使用了生成对抗网络[7,4]来保持预测帧的锐度。

综上所述,RNN可以建模时间序列,但是缺少对细粒度的视觉外观的关注,图像会变得模糊,CNN更关注空间外观,在捕捉长期运动方面相对薄弱。这篇论文探索了一种新的预测学习的RNN框架,并提出了一种新的LSTM单元,用于同时记忆时间和空间信息

2 Preliminaries

2.1 时空预测学习

假设有一个动态系统(比如视频片段),在一段时间内有P个测量值,其中每一个测量值(如RGB通道)都记录在一个空间区域内的所有位置,这个空间区域由一个 M × N M×N M×N网络表示。从空间上看,P个测量值在任何时间的观测上都可以用张量 X ∈ R P × M × N \mathcal{X} \in \mathbb{R}^{P \times M \times N} XRP×M×N表示。从时间上看,观测的T个time steps的观测值组成序列张量 x 1 , x 2 , . . . , x T x_{1},x_{2},...,x_{T} x1,x2,...,xT. 时空预测学习问题是根据之前的length-J序列包括当前观测,预测未来最可能的length-K序列:

X ^ t + 1 , … , X ^ t + K = arg ⁡ max ⁡ X t + 1 , … , X t + K p ( X t + 1 , … , X t + K ∣ X t − J + 1 , … , X t ) \widehat{\mathcal{X}}_{t+1}, \ldots, \widehat{\mathcal{X}}_{t+K}=\underset{\mathcal{X}_{t+1}, \ldots, \mathcal{X}_{t+K}}{\arg \max } p\left(\mathcal{X}_{t+1}, \ldots, \mathcal{X}_{t+K} \mid \mathcal{X}_{t-J+1}, \ldots, \mathcal{X}_{t}\right) X t+1,,X t+K=Xt+1,,Xt+Kargmaxp(Xt+1,,Xt+KXtJ+1,,Xt)

时空预测学习是一个重要的问题,它在视频预测与监控、气象与环境预测、能源与智能电网管理、经济与金融预测等各个领域都具有重要和高影响的应用。以视频预测为例,测量为三个RGB通道,每个时间步长的观测为RGB图像的一个3D视频帧。又如基于雷达的降水预报,测量为雷达回波值,每个时间步长的观测为二维雷达回波图,可以可视化为RGB图像。

2.2 卷积ConvLSTM

在这里插入图片描述
ConvLSTM网络采用[23]中提出的编码解码器RNN架构,[21]中扩展到视频预测。对于四层ConvLSTM编解码器网络,输入帧馈入第一层,第四层生成未来视频序列。在这个过程中,空间表示被一层一层地编码,隐藏状态被自下而上地传递。而属于这四层的记忆单元相互独立,仅在时域内更新。在这种情况下,底层会完全忽略上层在前一个时间步所记忆的内容。克服这种层无关记忆机制的这些缺点,对视频序列的预测学习具有重要意义。

3 PreRNN

最初,这个架构受到了这样一个想法的启发:一个预测学习系统应该在一个统一的记忆池(a unified memory pool)中记住空间的外观和时间的变化。我们可以使内存状态沿着曲折的方向在整个网络中流动。然后,我们想更进一步看看如何使时空记忆与原始的长短期记忆相互作用。因此,我们对LSTMs/ConvLSTMs内部的记忆单元、记忆门和记忆融合机制进行了探索。最后,我们为PredRNN推导了一个新的时空LSTM (ST-LSTM)单元,该单元能够垂直和水平传输内存状态。

3.1 时空记忆流

在这里插入图片描述
为了生成时空预测,我们首先利用卷积LSTMs (ConvLSTM)[19]作为基本构建块。堆叠ConvLSTMs逐层提取高度抽象的特征,然后通过将它们映射回像素值空间进行预测。
在传统的ConvLSTM体系结构中,如上图(右)所示,单元状态被限制在每个ConvLSTM层内,只能水平更新。信息只能通过隐藏状态向上传递。这种时间记忆流在监督学习中是合理的,因为通过对层叠卷积层的研究,隐藏的表示从底层往上可以越来越抽象和具有特异性。然而,我们在预测学习中,应该保持原始输入序列中的详细信息。
我们提出如下想法,可以从不同层次的卷积层中提取表示学习。因此,我们可以应用统一的时空内存池并更改修改RNN连接,如上图(左)所示。橙色箭头表示LSTM存储器单元的前馈方向。在左图中,所有LSTMs共享一个统一的内存,并沿之字形进行更新。具有时空存储流的卷积LSTM单元的关键方程如下:
在这里插入图片描述

### Predictive RNN Usage and Implementation #### Overview of Predictive RNNs Predictive recurrent neural networks (RNNs), such as PredRNN, are designed to handle spatiotemporal data by integrating both spatial and temporal dependencies into a unified memory structure. Traditional multi-layered RNN architectures fail to account for the influence from higher-level cells at time \(t\) on lower-level cells at time \(t+1\)[^2]. This oversight can lead to suboptimal performance when dealing with complex sequences that require understanding long-term dependencies. #### Architecture Design To address this limitation, researchers introduced PredRNN which incorporates Spatial-Temporal Long Short Term Memory units (ST-LSTM). These ST-LSTM layers allow each cell state not only to pass information forward through time but also across different levels within the network hierarchy. By doing so, it ensures better propagation of relevant features between consecutive frames or steps in sequence prediction tasks [^3]. #### Practical Applications In practical applications like video frame forecasting or human activity recognition systems where capturing detailed motion patterns over multiple timesteps is crucial; predictive RNN models have shown significant improvements compared to conventional approaches due to their enhanced ability to model intricate dynamics present in real-world datasets [^4]. ```python import torch from torch import nn class PredRNNSpatialTemporalLSTMCell(nn.Module): def __init__(self, input_size, hidden_size): super().__init__() self.input_size = input_size self.hidden_size = hidden_size # Define parameters here based on specific requirements def forward(self, x_t, h_prev, c_prev): """Forward computation step.""" # Implement LSTM operations considering spatial-temporal aspects. ... return new_h, new_c def create_predrnn_model(input_dim=..., num_layers=...): layers = [] for i in range(num_layers): layer_input_dim = input_dim if i == 0 else output_dim_of_previous_layer rnn_cell = PredRNNSpatialTemporalLSTMCell(layer_input_dim, ...) layers.append(rnn_cell) return nn.Sequential(*layers) model = create_predrnn_model() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值