论文题目:State-Frequency Memory Recurrent Neural Networks (发表在 ICML2017,作者单位:中佛罗里达大学)
(本篇是讲方法的,作者基于该方法写了一篇偏应用的发在了 KDD2017 上:Stock Price Prediction via Discovering Multi-Frequency Trading Patterns)
论文地址:
https://link.zhihu.com/?target=http%3A//120.52.51.19/delivery.acm.org/10.1145/3310000/3305543/p1568-hu.pdf%3Fip%3D218.108.29.107%26id%3D3305543%26acc%3DACTIVE%2520SERVICE%26key%3DBF85BBA5741FDC6E%252E0E9E463C2E5391F8%252E4D4702B0C3E38B35%252E4D4702B0C3E38B35%26__acm__%3D1551525497_f630aee394a2f710f8eb11de933b0abd
论文代码:
tensorflow版:
https://link.zhihu.com/?target=https%3A//github.com/dlarsen5/AdaptiveSFM
Theano版:
https://link.zhihu.com/?target=https%3A//github.com/hhkunming/State-Frequency-Memory-Recurrent-Neural-Networks
背景
时间序列动态性建模的研究由来已久,RNN 被广泛利用于这个领域。虽然已有的 RNN 模型 (如 LSTM,GRU 等)已经被证实是一种强有力的序列建模工具,但是在有一些场景,如在高频交易中预测短期投资策略等表现不佳。
其中一个原因是现有的 RNN 模型只考虑了在时域上的依赖关系,如果我们想要预测频率随着时间变化的时间序列时,只在时域上建模是不够的。举个例子 :在音素分类问题中,一些音素如 ‘p’ 和 ‘t’ 由短的、高频信号产生;而其他如 ‘iy’ 和 ‘ey’ 由长的、低频信号产生。
因此,建模频域上的 pattern 十分重要。
本文将多频分析和建模长期依赖相结合,共同捕获序列信息。提出了 State-frequency Memory (SFM):一种新的 RNN 架构,能将 RNN 中的内存记忆不同频率的信息。序列的信息可以表示成不同状态频率(state-frequency)的组合。对于预测和生成任务,可以动态的学习到一系列的状态频率,并将这些信息保存在内存门(memory gates)中,方便后续预测或生成目标输出。例如:对于短期预测,高频信息更有用;低频信息更有利于长期趋势的预测。
本文另一个贡献点就是 频域的阈值能够随着时间动态适应。
方法
整体介绍
说白了本文就是将 LSTM 中的各种门替换成自己的门,这样能够记住频域上的信息。对应的场景和现有的RNN场景相同:给定一段序列,通过一个带有 memory 的 RNN 对该序列建模。
SFM 和 LSTM 中的每一个 memory 单元中包含一个 [公式] 维的向量。而 SFM 的 memory 中包含 [公式] 个频率组件 [公式] ,即包含一个 [公式] 的矩阵。SFM 将序列的每一个时刻分解成不同频率的部分,能够提供提供细粒度的多频分析,从而建模频域上的依赖关系。
SFM 状态更新
和 LSTM 一样,每一时刻,SFM 中内存单元的更新与前一时刻的内存和当前的输入有关,与此同时,SFM 需要将内存状态分解为 [公式] 个频率组件,这是通过傅里叶变换实现的。
参考链接
https://zhuanlan.zhihu.com/p/58130392