ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Time-Aware Multi-Scale RNNs for Time Series Modeling IJCAI-21时间序列预测论文

2022-07-18 19:04:49  阅读:238  来源: 互联网

标签:Multi Scale RNN 更新 state scale 时间 Time hidden


Time-Aware Multi-Scale RNNs for Time Series Modeling 时间序列预测

这篇论文实际上是对RNN的一个改进,本质上就是对hidden state分成了不同的部分,然后根据不同的频率(时间范围)进行加权和更新,论文的思想很简洁

Motivation

论文主要研究动机来自于现有时间序列建模的reasearch gap

  1. 传统的时间序列建模只能提取一个指定时间步长范围内的信息;
  2. 现有的multi-scale的时间序列模型能够对不同提取不同scale范围内的信息,但是存在2个不足;
    1. multi-scale中不同的scale通常是提前指定的几个scale,比如在CNN中指定不同大小的kernel
    2. 虽然在每个时刻提取了不同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用户

参考链接

Official implementation

标签:Multi,Scale,RNN,更新,state,scale,时间,Time,hidden
来源: https://www.cnblogs.com/HeartKing/p/16491278.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有