©PaperWeekly 原创 · 作者|桑运鑫
学校|上海交通大学硕士生
研究方向|图神经网络在金融领域的应用
本文介绍三篇从模型层面着手解决股价预测问题的顶会文章。
IJCAI 2019
论文标题:Enhancing Stock Movement Prediction with Adversarial Training
论文来源:IJCAI 2019
论文链接:https://www.ijcai.org/Proceedings/2019/0810.pdf
众所周知,股票市场具有噪声高和随机性强的特点,传统使用静态历史数据训练的模型很容易过拟合。为了提高模型的泛化能力,文章提出通过对数据增加扰动来解决这一问题。其最大的亮点就是提出了使用对抗训练(Adversarial Training)的方式来训练模型。
首先,为了适应股票数据时序依赖的特点,文章首先提出了 Attentive LSTM。为了预测某一时刻的股价走势(1 代表上涨,0 代表下跌),输入之前 天的数据 。之后输入一个全连接层获取特征的隐向量:
之后使用 LSTM 捕捉时序依赖,获得隐向量 , 因为不同时间的状态对时刻 的股价走势影响是不同的,使用时序注意力层(Temporal Attention Layer)来对隐向量进行加权求和:
之后将时刻 的隐向量和加权求和的结果拼接获取最终的股票表示,计算获取预测结果:
但这种训练方式不那么适用于股票市场,因为我们输入模型的数据(如各种技术因子的取值)是有随机性的,因此很容易导致过拟合而缺少泛化性能。而一个好的模型应当能捕捉随机性。所以文章提出了对抗训练的方式。
首先来思考一个问题,怎么提高模型建模随机性的能力?自然的想法就是如果我们对输入样本加一个扰动,模型仍然可以正确预测,那么模型肯定能很好的抵御随机性。那么这个扰动怎么加也很有学问,我们希望加的扰动能够让模型输出结果发生最大的改变。
那么哪个方向的扰动能够让模型输出结果发生最大的改变呢?回忆一下梯度下降法,梯度方向是下降最快的方向。显然,样本的梯度方向就是我们寻求的那个能够让模型输出结果发生最大改变的方向。
所以从本质上来说,文章提出的对抗训练就是一种梯度下降法,不过梯度下降法优化的是参数,而这里的对抗训练改变的是样本,得到对抗样本。
根据上图所示,生成对抗样本的计算过程如下:
其中 是原样本。之后将对抗样本的训练和损失也加入到目标函数中:
模型的总体结构如下:
文章在 ACL18 和 KDD17 两个数据集上进行了实验,结果证明方法了有效性,同时与 ALSTM 的对比实验表明,使用对抗样本训练的模型分类置信度更高,扩展了决策边界,增强了模型的鲁棒性和泛化性能。
KDD 2017
论文标题:Stock Price Prediction via Discovering Multi-Frequency Trading Patterns
论文来源:KDD 2017
论文链接:http://www.eecs.ucf.edu/~gqi/publications/kdd2017_stock.pdf
这是一篇应用的文章,作者还发了一篇偏理论的文章在 ICML 2017 上:State-Frequency Memory Recurrent Neural Networks, in Proceedings of International Conference on Machine Learning [1] 。
我们通常使用 LSTM 来建模时间序列之间的长期依赖。如果我们将股价的变动看作一种信号处理任务的话,那么利用 LSTM 来预测股价变动只捕捉了时域上的信息,而忽略了频域上的信息。
而对于股价信号来说,频域上的信息是非常有用的,其中的高频部分反应了股价的波动性,低频部分捕捉了长期的趋势和规律。基于此,文章提出了 SFM 来同时建模时间序列的时域与频域信息。
传统的 LSTM 结构大家都知道,这里不再赘述。我们来介绍下文章提出的 SFM 对于传统 LSTM 的三个改进:
将 LSTM 中的记忆细胞 变成状态-频率矩阵(the state-frequency matrix) ;
将遗忘门改成联合状态-频率遗忘门;
利用傅里叶变换和逆变换使信号能够在时域与频域之间转换。
对于时间步 ,模型有三个输入:数据