金苹果乐园基于深度神经⽹络的股票多因⼦预测模型
RNN 不同于传统神经⽹络的感知机的最⼤特征就是跟时间挂上钩,即包含了⼀ 个循环的⽹络,就是下⼀时间的结果不仅受下⼀时间的输⼊的影响,也受上⼀ 时间输出的影响,进⼀步地说就是信息具有持久的影响⼒。放在实际中也很容 易理解,⼈们在看到新的信息的时候产⽣的看法或者判断,不仅仅是对当前信 息的反应,先前的经验、思想的也是参与进去这次信息的推断的。⼈类的⼤脑 不是⼀张⽩纸,是包含许多先验信息的,即思想的存在性、持久性是显然的。
举个例⼦,你要对某电影中各个时点发⽣的事件类型进⾏分类:温馨、烂漫、 暴⼒等等,如果利⽤传统神经⽹络是很难做到这⼀点的,但是RNN因为具备⼀ 定的记忆功能,可以较好处理这个问题。
路的词语从图中我们也可以看出,RNN 是具备链式结构特征的。递归神经⽹络因为该循 环结构⽽具有⼀定的记
忆功能,可以被⽤来解决很多问题,例如:语⾳识别、 语⾔模型、机器翻译等。但是它并不能很好地处理长时依赖问题,这⼀问题在 (Yoshua Bengio,1994 )这篇论⽂中阐释得很明⽩。⽂章指出,最直接的的 原因是原始 RNN 模型也是采⽤ BP 算法进⾏权重和阈值的调整优化,梯度消失 问题依然得不到解决,虽然由于记忆功能的存在使得该问题⽐传统神经⽹络有 所缓解。但是类似于⼈类的记忆,⼈总是会忘事的,即在后⾯的时间步难以⾛不回过去了,过去的时间步传递到现在也效果甚微了。所以这使得难以习得远 距离的影响。
长期依赖问题
RNN 的⼀个核⼼思想是,既然⽹络结构是时间列表特征的,那么可以将以前的信息⽤到当前的任务中来,例如,在语义推断中,通过前⾯的话来猜测接下来 的话。如果 RNN 真的能够这样做的话,那么它们将会极其有⽤。但是事实真是 如此吗?我们来看下⾯的例⼦。
考虑⼀个语⾔模型,通过前⾯的单词来预测接下来的单词。如果我们想预测句 ⼦“the birds are flying in the sky”中的最后⼀个单词,我们不需要考虑上下⽂ 信息,就可以得到答案,很明显下⼀个单词应该是 sky。在这种情况下,当前 要预测位臵(sky)与相关信息(birds 和fly)所在位臵之间的距离相对较⼩,RNN可以被训练来使⽤这样的信息。
唐家共乐园但是如果当前位臵和相关信息位臵距离很远时候,RNN 就会遇到困难了。⽐如 “I grew up in China, when I was ten years old,...,I speak Chine ”,如果要 预测最后⼀个单词 Chine,那么我们得搜索较长距离,才能获取到有⽤的信 息 China。但令⼈失望的是,当需预测信息和相关信息距离较远时,原始 RNN结构的传输的效率并不让⼈满意。虽然有学者证明了,我们可以通过精⼼设计 参数来达到预测较远处信息的⽬的,但是这样⽆疑是成本很⾼的,实现起来也很困难,也就失去了实践意义。
从上⾯分析可以看出,原始 RNN 中存在的长期依赖问题本质上还是梯度消失问 题。
LSTM
员工体检
LSTM (long-short term memory),长短期记忆⽹络,就是为了解决上⾯的长 期依赖问题⽽⽣的。LSTM 是⼀种经过精⼼巧妙设计的RNN ⽹络,尽管 LSTM和原始 RNN 总的来看都会三⼤层,即输⼊层、隐含层、输出层。但是 LSTM和原始 RNN 在隐含层设计上有较⼤的差异,主要是 LSTM 是在隐含层具备特 殊的 cell 结构。我们⽤下⾯两个对⽐图来进⾏较好的说明。
LSTM 的隐含层设计中图标解释
每⼀条⿊线传输着⼀整个向量,从⼀个节点的输出到其他节点的输⼊。粉⾊的圈代表 pointwi 的操作,诸如向量的和,积等运算,⽽黄⾊的矩阵就是学习到的神经⽹络层。合在⼀起的线表⽰向量的连接,分开的线表⽰内容被复制, 然后分发到不同的位臵。
LSTM 结构设计与思想
LSTM,长短期记忆⽹络,从上⾯的图中也可以看出,LSTM 是将⼀个简单型的 激活改成⼏部分的线性组合的储存单元 cell 去激活。相当于每次都可以控制下 ⼀步的输出信息,如是否要包含前⾯的信息,包含多少的问题等。类似于进⾏下⼀步操作前,根据情况提醒你需要注意的信息。好记性不如烂笔头,就是这 个 道理。
每个存储单元由三⼤构件组成,输⼊门,输出门和跨越时间⼲扰的传⼊⾃⾝的 内部状态。
输⼊门(input gate):控制当前输⼊和前⼀步输出 ,他们能进⼊新的 cell单元的信息量。
忘记门(forget gate):为了更有效传输,需要对信息进⾏过滤,决定哪些信息可以遗忘。
输出门:cell 的新状态下信息更新。
LSTM 详细实现步骤图解
为了更好地说明,我们下⾯在进⾏每⼀步图解时候,都结合语义识别功能进⾏ 说 明,这样有更直观的认识。
关于八的成语
第⼀步,先由忘记门决定丢弃哪些信息。数字的意思
即结合当前输⼊和前⼀步输出,经激活函数,得到⼀个概率变量,再与原 cell结构 做运算得到遗忘后的信息。⽐如 f=0 时,表⽰ 的所有信息都会被遗 忘,f=1 时表⽰ 的信息都会被保存。
让我们回头看看语义预测的例⼦中来基于已经看到的词去预测下⼀个词。在这个问题中,细胞状态可能包含当前主语的性别,因此正确的代词可以被选择出 来。当我们看到新的主语时要想匹配对应的代词,则我们希望忘记旧的主语和代词。恋爱的定义
第⼆步, 由输⼊ 层决定 什么样 的信息 会被存 储到细 胞中。
这⼀步这⾥包含两个部分。第⼀,sigmoid 层决定什么值我们将要更新。然后,
⼀个 tanh 层创建⼀个新的候选值向量 ,会被加⼊到状态中。
在我们语义预测的例⼦中,我们希望增加新的主语的性别或者别的信息添加到细胞状态中,来替代旧的主语并完善新的主语的信息。 下⼀步,我们会讲这两个信息来产⽣对状态的更新。
即我们 cell 的更新是由经忘记门剩下的信息和需要更新的信息的结合,在语义预测中就是,我们忘记了旧的主语,我们在换成新的主语的时候可以由输⼊层决定需要更新的信息,⽐如性别、年龄等。这些作为整体保存在新的 cell 中。
再接着,就是输出信息。这个输出将会基于我们的细胞状态,但是也是⼀个过滤后的版本。⾸先,我们运⾏⼀个 sigmoid 激活函数来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过 tanh 进⾏处理(得到⼀个在 -1 到1 之间的值)并将它和 sigmoid 的输出相乘,最终我们仅仅会输出我们确定输 出的那部分。
不求甚解的反义词在语义预测的例⼦中,当我们看到了⼀个代词,可能需要输出与⼀个动词相关的信息。例如,由 sigmoid 决定可能输出是否代词是单数还是负数,这样如果经过 tanh 函数的细胞状态是动词的话,sigmoid 和 tanh 结合我们也就知道了动词需要进⾏的词形变化 。具体如下图所⽰:
LSTM的发展
上⾯我们已经把标准的 LSTM 解释清楚了,但是为了满⾜更复杂的需求,LSTM出现很多变形。其中最流⾏的是由 Gers & Schmidhuber (2000) 提出的,增加 了 “peepholeconnection”。是说,我们让“门”也要接受细胞状态的输⼊。
另⼀个变体是通过使⽤复合忘记和输⼊门。不同于之前是分开确定什么忘记和需要添加什么新的信息,这⾥是⼀同做出决定。
还有⽐较流⾏的是改动较⼤的变体是 Gated Recurrent Unit (GRU),这是由Cho, et al. (2014) 提出。它将忘记门和输⼊门合成了⼀个单⼀的更新门。同样还混合了细胞状态和隐藏状态,和其他⼀些改动。最终的模型⽐标准的LSTM模型要简单
推荐阅读: