Press enter to see results or esc to cancel.

【Enhancing Stock Movement Prediction with Adversarial Training 】

这里的股价预测的方法还是蛮有意思的,通过对抗学习的思路来处理股价的预测。整体的思路还是蛮流畅的,不过自己的对抗学习这部分学的并非是很好,希望大家看的时候可以多担待。

其认为股价的预测可以看成是一个分类的任务,通过输入特征获得股价上升还是下降的可能性,所以可以使用SVM或者是NN来建立预测的模型。但是由于股票市场太过于复杂了,所以很难产生极强的泛化的能力。而在传统的分类任务之中我们是从静态的输入里面做预测,对于股票预测的传统的方法也是从静态的时间节点的股价的相关的特征之中得到输入特征。

而在本文之中,作者使用了Adversarial Training的方法来处理数据,什么叫做是Adversarial Training的方法呢?可以认为是一种利用更加Fancy的方法添加扰动的技术。但是由于在对于股价预测这一块的问题是序列输入的特征,所以在这种序列的输入的特征上面添加扰动是一个非常非常非常耗时的过程。而为了避免在所有的Inputs上面都增加扰动,所以选择在高层特征之中添加一定的扰动。

模型的主体结构是一个带有Attention机制的LSTM模型。通过在最后一层hidden layer添加扰动使得模型的训练的过程更加的平稳,也有更好的泛化能力,按作者的话来说是通过加入了一个动态的正则项的方式使得整个模型的效果增加。

Approach

整个模型可以表示为如下的形式

如果将所有的输入记作是$X$的话,将参数记作是$\Theta$,模型可以表示为是$\hat{y}^{s}= f(X^s,\Theta)$。其中的输入$X$是一个$D\times T$的矩阵,$T$代表的是时间步的步数,而$D$表示的是特征的维度(比如说开盘价收盘价之类的)。

而假设有$S$只股票,所以存在了一个真实的标签$y = [y^{1},\cdots,y^S]\in R^S$,其中的$y^s\in\{1,-1\}$表示了股票在下一个时间步的涨跌的情况。

上面是基础的操作,下面的是加入了Attention Adversarial 的方法的操作,Attention的方法自然就是普通的Attention的方法。没有什么可以赘述的,我们重点来看Adversarial这一块。

在大多数的分类问题之中,正常的训练LSTM的方法是最小化目标函数$\Gamma$

$$\sum_{s = 1}^{S} l(y^{s},\hat{y}^{s}) +\frac{\alpha}{2}||\Theta||^{2}_{F}$$

其中的$l(y^{s},\hat{y}^{s}) = max(0,1 – y^{s}\hat{y}^{s})$,也就是一个岭回归项(Hinge Loss Term),在后面的是一个正则化的项避免模型发生过拟合的现象。

那么对于上面的的训练方法,作者提出了异议(異議あり!)因为假设这些输入是静态的,而忽略了在股票之中那些Stochastic的特征。而如果加入更多的Stochastic 的特征的话可以使得模型的泛化能力得到进一步的增加。

那么怎么加入Stochastic的特征呢?文章之中采用的方法是通过Adversarial Example(AE)的方法进行实现的。所谓的Adversarial Example也就是在原来的输入的特征之中加入一些扰动,这个扰动叫做Adversarial Perturbation(AP).

具体是怎么操作的呢?假设我们获得了神经网络之中的最后一层的Hidden Representation如果是记作是$e^s$的话,通过计算最后的Loss对于$e^s$的梯度如果记作是$g^s$,那么

$$g^s  =\frac{\partial l(y^s , \hat{y}^{s})  } {\partial e^s}$$

通过将上面的梯度归一化后可以得到扰动,而通过超参数$\epsilon$控制扰动的程度。

$$r^{s}_{adv} = \epsilon \frac{g^{s}}{||g^{s}||}$$

然后将这个扰动加到原来的特征之中

$$e^{s}_{adv} = e^{s}+r^{s}_{adv}$$

就可以得到了一个增加了扰动的样本。同时使用这个特征放入神经网络之中进行预测就可以得到了一个对于有扰动的样本的预测$\hat{y}^{s}_{adv}$,所以最后的目标函数可以写成是

$$\Gamma_{adv} =  \sum_{s=1}^{S}l(y^s , \hat{y}^{s})  +\beta\sum_{s=1}^{S}l(y^s , \hat{y}^s_{adv}) +\frac{\alpha}{2}||\Theta||_{F}^{2}$$

如果用图形表示则是如下所示:

Comments

在全文之中使用的方法还是非常有意思的,通过在模型之中添加扰动项使得模型的泛化能力得到提升,这种方法当然也是一种非常广泛的用法,可以在不同的模型之中都得到运用,而这里的Adversarial的数学理论基础自己也并不大熟悉,可能会在下一篇笔记里面写一些关于基础理论的东西吧。

Reference

Enhancing Stock Movement Prediction with Adversarial Training

Comments

Leave a Comment