近几年,华尔街不断裁员,高盛在2000年顶峰时期,雇佣了600名交易员,为其机构客户进行股票买卖。但时至今日,却仅剩下2名交易员“看守”柜台。
不仅高盛,瑞银、摩根士丹利等金融公司,目前都已采用机器学习算法替代普通交易员,来进行交易。
那,什么样的算法如此厉害?
它能够预测股价走势,
不仅如此,
它还能搭建聊天机器人、可以翻译外文、可以写新闻稿、写小说……
这个看起来无所不能的算法,就是:循环神经网络,简称RNN。
本系列教程将以RNN为主线,总共分为3个部分:
今天是系列教程的第1部分:
RNN算法之预备知识:前馈神经网络(FFNN)
在讲RNN之前,首先引入前馈神经网络的部分内容,是因为了解了FFNN,再学习RNN会更加容易,遇到的阻力更小。
如果你已经对前馈神经网络很熟悉,直接跳过此部分内容。
好啦,话不多说,下面开始我们今天的内容。
先来看这样一组数据:
这只是我们随机编写的一些数字,它很简单,不使用任何模型算法,你也能轻而易举地找到x-y之间的规律:
但是如果,
我们一定要用神经网络来计算的话,
那么,这个神经网络可以简单地搭建为:
先别晕,我们举个例子,你就明白上面的逻辑了。
以第1条数据为例:
这个模型的核心:就是努力找到x与y之间的联系。
比如,
图中的 "1" 和 “9”,就是模型找到的其中一种连接方法。
更一般的,
如果你拥有数据(X,Y),神经网络算法就会去寻找最佳的参数W:
求解W,就是这条神经网络会替我们努力完成的工作。
上面的图,写成公式为:
注:两个公式中的w,数值可能不相同。
这就是一条最简单的神经网络。
当然,更多的时候,你在教材上看到的是这样的:
如果我们将参数b暂时遮挡住:
“公式二”与“公式一”之间,仅仅多出一个f()函数。
这个f()函数,在学术上被称为“激活函数”,通常是一个非线性的函数。
例如,
像上面这些,均可以作为激活函数来使用。
你会问:
“为什么我们要使用激活函数?”
这是因为,
(w*X) 和 (w*h) 仅仅是线性运算:
而我们在现实中遇到的问题,更多都是非线性的。
这就好比,
家到学校,理论上是两点一线的距离;
但现实中,你要曲曲弯弯走很多路,才能抵达终点:
因而,在w*X的外面,包裹上一层激活函数
f(w*X)
可以将线性问题转化为非线性问题,这样更接近真实的世界,也能使我们的模型预测准确度,得到大幅提升。
好了,前面我们一直讨论的是一条数据的情形,即
现在,如果我们把t+1条数据,全部考虑进来:
那么此时,
神经网络的形态变为:
由图可以看出,
它是t+1条数据的“堆叠”。
你会发现,像这样的神经网络,它只有横向箭头
并没有纵向箭头
即“第t条数据,并不受之前数据的影响”。
你可以视它为一条“一直向前,永不回望”的神经网络,
也因此而得名“前馈神经网络”。
我们单拎出第t条数据:
此时,ht仅受Xt的影响。
在实际工作中,它适用于“上一条数据与下一条数据,彼此之间没有任何关联”的情形。
举几个例子:
图像分类
第1张图与第2张图之间,并无关联。
薪水等的预测
第1条职位所提供的薪水,并不决定第2条职位薪水的高低。
电影推荐
第1部电影的好坏,并不影响第2部电影是否受观众的欢迎。
上面这些例子,都可以借助前馈神经网络来解决。但有些例子则不然。
下一期,我们进一步来了解“会回望的”神经网络——循环神经网络(RNN)。