如果你想学会一种算法,它既能用来做聊天机器人,还能写诗,写新闻稿,最最重要的,它还能用来预测股价,帮你实现赚一个亿的小目标……
这么厉害的神器,它是谁?
答案就是:循环神经网络,简称RNN。
本系列教程将以RNN为主线,总共分为3个部分:
上一节课,我们已经简单了解了前馈神经网络,课程地址:
《股票预测,自动翻译,你想要的它都能做——RNN算法探索之旅(1)》
这一节,我们将学习本系列教程的第2部分:初识RNN算法。
好啦,话不多说,下面开始我们今天的内容。
先来看一组数据:
这组数据来自某只大A股2017年9月份的表现
跌得比较有节奏感
在前馈神经网络中,数据与数据之间,并不存在依存关系,即“下一条数据,并不依赖于之前数据的信息”。
但是,像上图中,这样的一组股票价格,你还能说“上一条数据与下一条没有关系”吗? (都已经跌出惯性了……)
我们在预测9月21日的价格时,不仅要参考9月20日的,还要参考9月18日的、9月17日的、……
此时,每一条数据,都受到之前数据的影响。
除了股价预测外,像搭建聊天机器人:
写新闻稿:
预测故事发展情节:
类似这样的数据,都是带有时间顺序的,即
都需要通过前面已经出现过的文字(或情节),来预测下一个文字(或片段)。
遇到这种情况,我们就需要借助循环神经网络(RNN)来处理。
RNN的运行原理,我们举一个很简单的例子来说明。
假设有这样一句话:
“我爱你们”
每次输入一个文字,我们都希望能预测出下一个即将出现的文字是什么?
这样的数据,写成表格的形式,即:
RNN的运算过程很简单,只要你耐心看完下面这张动图:
你会发现,RNN的运算,是这样一个流程:
如果我们将上图简化,它就是这个样子:
看出它与前馈神经网络的区别了吗?
循环神经网络,除了有前向箭头
外,
还有纵向箭头
即,对于循环神经网络来说,它的每一条数据演算,都会依赖于之前的数据。
我们会反复用到隐藏层所携带的信息:
此时,隐藏层ht不仅受Xt影响,还受上一时刻的ht-1的影响:
注意:ht是受 [Xt,ht-1] 的影响;
而不是受 [Xt,Xt-1] 的影响。
因为,ht与Xt-1,可以被视为简单的硬连接。
举个不恰当但是特别好记的例子:
如果你的第二盘菜,准备做鱼香肉丝。
那么,使用第一盘已经切好的土豆丝,
要比直接使用原材料——土豆块,更省时、省力,对吧?
开个玩笑,
不管怎样,要记住:
RNN的隐藏层
是受 [Xt,ht-1] 的影响,而非[Xt,Xt-1]的影响。
希望今后,你再看到其他教材上的公式,会觉得更好理解了。
注:公式中的w,数值可能不同
在上面公式中,对于函数 f() 不了解的同学,可以参照上节课的学习内容:
《股票预测,自动翻译,你想要的它都能做——RNN算法探索之旅(1)》
至此,RNN的基本原理,我们已经学习完了。
下一节,我们重点来看长短期记忆(LSTM)算法,它是一种比RNN更加有效的算法,在预测股票价格等方面,有更好的表现。
好啦,我们下期见。