Time-Aware Multi-Scale RNNs for Time Series Modeling IJCAI-21时间序列预测论文
作者:互联网
Time-Aware Multi-Scale RNNs for Time Series Modeling 时间序列预测
这篇论文实际上是对RNN的一个改进,本质上就是对hidden state分成了不同的部分,然后根据不同的频率(时间范围)进行加权和更新,论文的思想很简洁
Motivation
论文主要研究动机来自于现有时间序列建模的reasearch gap
- 传统的时间序列建模只能提取一个指定时间步长范围内的信息;
- 现有的multi-scale的时间序列模型能够对不同提取不同scale范围内的信息,但是存在2个不足;
- multi-scale中不同的scale通常是提前指定的几个scale,比如在CNN中指定不同大小的kernel
- 虽然在每个时刻提取了不同scale的信息,但是,不同的scale之间重要性是相同的,缺乏动态性。比如上面图中,时间序列在不同的时刻,可能有些时刻更重视长期依赖,有些时刻更重视短期依赖;这里实际上就是涉及到一个加权的问题
TAMS-RNNs
针对Motivation中的两个问题,论文中提出了两个策略,都很容易理解.
- Multi-Scale Feature Disentanglement 多范围特征区分
- Time-Aware Feature Modulation 时间敏感的特征调整(实际上就是加权)
Multi-Scale Feature Disentanglement (MSFD)
给出时间序列\(X=[x_1,..,x_T]\),\(x_i \in R^{d_0}\)
标准的RNN的hidden state计算
\(h_t=f(Wx_t + Uh_{t-1} + b)\),\(h_t \in R^d\),RNN隐藏维度为\(d\)
\(W \in R^{d \times d_0}, U \in R^{d \times d}, b \in R^{d}\)
MSFD中的hidden state计算
把标准及算方法中的\(h_t\)分成K段(small hidden state),每一段的维度是\(p=d/K\),则\(h_t=[h_t^1,...,h_t^K]\),显然,当\(K=1\)时,就是普通的RNN。
进而,在每个时间步分别求解small hidden stae \(h_t^k\)。
\(h_t^k = f(W^k x_t + \tilde{U}h_{t-1}^k + \tilde{b})\),这里\(W^k \in R^{p \times d_0}, \tilde{U} \in R^{p \times p}\)。
MSFD中hidden state的更新
K个small hidden state代表了不同scale的时间信息,那么他们的scale如何不同呢,实际上就是更新频率不同。
- 对于K个\(h_k\)有相应的K个更新频率(scale)\(S=\{s_1,..,s_K\}\),一般是2的次幂,1,2,4,8,...。
- 如上面Figure 2所示,蓝色的\(s_1 = 1\)表示\(h_t^1\)每个时间步都更新,紫色的\(s_2=2\)表示\(h_t^2\)每2个时间步更新一次,绿色的\(s_3=4\)表示\(h_t^3\)每4个时间步更新一次。
- 公式化表示就是下面这个公式,当前时间步长\(t\)对\(s_k\)取余数,当且仅当余数为0的时候更新第\(h_t^k\),否则,直接复制上个时间步\(h_t^k=h_{t-1}^k\)。
通过这种不同的更新频率,让RNN具备了捕获不同scale信息的能力。
Time-Aware Feature Modulation (TAFM)
TAFM实际上就是对不同scale的信息\(h_t^k\)在每个时间步进行加权。
- 加权的方式是\(\alpha_t=softmax(W'x_t + U'h_{t-1} + b')\),\(W' \in R^{K \times d_0}, U' \in R^{K \times d}, b' \in R^K\)。
- \(\alpha_t\)是一个长度为\(K\)的向量,对应于\(h_t=[h_t^1,...,h_t^K]\)中每个\(h_t^k\)在\(t\)时刻的权重。
- 进一步的,根据下面公式(6)对RNN的隐藏状态进行更新。
- 虽然在每个时刻\(t\),每个small hidden state都有权重\(\alpha_t^k\),但是,并不是在每个时间步都对\(h_t^k\)进行加权。
- 当且仅当\(h_t^{k}\)进行更新时,才对它进行加权,避免hidden state的梯度消失(因为\(\alpha_t\)中的每个元素总是小于1的,如果每个时间步都加权,可能导致\(h_t^k\)消失)。
- 虽然文中为了避免梯度消失这样做了,但是对于短时信息(更新频率高的small hidden state)我认为,目前的方法中,梯度消失难以避免。
这篇论文公开了代码,但是令我稍有不解的是,2021年录用的论文,大约是在2020年完成吧,使用Python2.7+tensorflow1.11完成,作者可能是位老派tf用户
参考链接
标签:Multi,Scale,RNN,更新,state,scale,时间,Time,hidden 来源: https://www.cnblogs.com/HeartKing/p/16491278.html