为什么要使用RNN
前馈神经网络
前馈神经网络是一种最简单的神经网络,是目前应用最广泛、发展最迅速的人工神经网络之一。
各神经元分层排列,第一层是输入层;然后是隐藏层,其中隐藏层可能会有多层;最后一层为输出层。
层与层之间是全连接的,每层的节点之间是无链接的。
每层的神经元只与前一层的神经元相连,只接受前一层的输出,并传给下一层,各层间没有反馈。
每一层的神经元之间都是相互独立的,如输入层的神经元是彼此独立的。
常见的前馈神经网络有单层前馈神经网络、多层前馈神经网络(DNN、多层感知器)、CNN等。
前馈神经网络的缺陷
前馈神经网络只能单独处理一个个的输入,前一个输入与后一个输入之间没有任何关系,如果碰到需要处理输入之间关系的数据,它们将无法正确的预测输入值,比如下列样例:
球的轨迹(移动过程点的集合)
现有一个球在平面上移动,我们想要预测球的移动方向。
如果使用前馈网络,那么我们把点集输入模型,但是由于它只能处理单独一个个的输入,那么我们就无法根据上一个的信息来预测下一个点的方向(即球的移动方向)。
只能根据被动的根据所有的输入(点)的来预测方向,不清楚点位于第几步,就无法正确的预测方向。如下图:我们知道球的轨迹,却不清楚此时球位于哪一点的位置。
自然语言处理
如果我们输入一句话我吃苹果,想要预测它的语义,那么它会被拆成一个个词输入模型
如果我们不知道它们的顺序,随机处理它们,那么我们就无法正确的预测出这句话的语义
因为:苹果吃我、苹我吃果和我吃苹果是完全不同的语义
RNN的定义
针对上述需要需要按照顺序处理的数据,在原有全连接神经网络的基础上添加了一个时间轴的概念,即诞生了循环神经网络(RNN)
循环神经网络(RNN)是一类用于处理序列数据的神经网络。RNN拥有记忆模块,可以获取以及计算过的信息,记住执行的顺序。即使是同样的输入,如果输入的顺序不同也会产生不同的输出。
RNN的基本结构
神经网络的结构分为输入层、隐藏层、输出层。输入与输出层是处理数据的输入输出的;而隐藏层则对数据进行计算、预测处理。前馈网络与循环网络(RNN)的主要区别就是在隐藏层。
最简前馈神经网络
前馈网络的隐藏层,如果只有一个神经元,则直接处理;如果有多个神经元&#x