作者:Jason
时间:2017.10.22
RNN的引出
在没有RNN(循环神经网络)的时候,我们通常使用前馈神经网络来处理时序预测问题。
一、用前馈神经网络处理时间序列预测有什么问题?
依赖受限,网络规格固定:前馈网络是利用窗处理将不同时刻的向量并接成一个更大的向量。以此利用前后发生的事情预测当前所发生的情况。如下图所示:
但其所能考虑到的前后依赖受限于将多少个向量(window size)并接在一起。所能考虑的依赖始终是固定长度的。想要更好的预测,需要让网络考虑更多的前后依赖。
例子:
比如在“我()”的后面预测一个字,可能出现很多种类似于“我们”、“我的”等等大概率下的可能性。进一步考虑“我想()”,则可选的范围会缩小,更进一步例如“我想骑自行()”则很有把握的给出预测为“车”。
所以要想预测更为准确的话,我们能首先想到的办法就是扩大拼接的向量长度,但是考虑这样一种情况:假如每个向量的维度是30,经过长度为3移动窗口处理之后,输入input的维度变为30*3=90,输入层与隐藏层(n的神经元)的连接权重矩阵就会变成90*n,其中很多权重是冗余的,但却不得不一直存在每一次预测中。
神经网络的学习黑洞
几乎所有的神经网络都可以看作为一种特殊制定的前馈神经网络,这里“特殊制定”的作用在于缩减寻找映射函数的搜索空间,也可以理解为减少VC维(目前神经网络没有明确界定VC维大小的方法,暂且把它等于可训练参数量),也正是因为搜索空间的缩小,才使得网络可以用相对较少的数据量学习到更好的规律。
例子
解一元二次方程y=ax+b。我们需要两组配对的(x,y)关系式来解该方程。但是如果我们知道y=ax+b实际上是y=ax,则只要搜索a的大小,这时就只需要一对(x,y)就可以确定x与y的关系。循环神经网络和卷积神经网络等神经网络的变体就具有类似的功效。
二、相比前馈神经网络,循环神经网络究竟有何不同之处?
需要注意的是循环网络并非只有一种结构(LSTM、GRU),这里介绍一种最为常用和有效的循环网络结构。
数学视角
首先让我们用从输入层到隐藏层的空间变换视角来观察,不同的地方在于,这次将时间维度一起考虑在内。
注:这里的圆圈不再代表节点,而是状态,是输入向量和输入经过隐藏层后的向量。
例子:用目前已说的所有字预测下一个字。
前馈网络:window size为3帧的窗处理后的前馈网络
数学公式: ,concat表示将向量并接成一个更大维度的向量。
学习参数: 需要从大量的数据中学习