循环神经网络RNN

神经网络的结构分为很多种,比如有之前介绍的全连接神经网络,有卷积神经网络等。在这一章节当中,我们会介绍一种新的神经神经网络——循环神经网络(Recurrent Neural Network,RNN)。RNN是一种特殊的神经网络结构, 它是根据"人的认知是基于过往的经验和记忆"这一观点提出的. 它与CNN不同的是: 它不仅考虑前一时刻的输入,而且赋予了网络对前面的内容的一种’记忆’功能。 RNN是一类专门处理和预测序列数据的神经网络,序列数据类似于 , RNN对可变长度的序列数据有很强的处理能力,因此RNN在自然语言处理(NLP)领域起到了很大的作用,譬如机器翻译、语音识别、图像描述生成等等。

CNN和RNN的比较:CNN 需要固定长度的输入、输出,RNN 的输入和输出可以是不定长的,但是对于经典RNN而言(N vs N)输入和输出序列必须要等长的,这也是经典RNN的一个弊端,在以后的内容中我们讲到其它相关模型解决这一问题。

CNN 只有 one-to-one 一种结构,而 RNN 有多种结构,如下图:

循环神经网络RNN
RNN的不同结构

在接下来的内容中我们首先介绍一下循环神经网络中的简单组成和基础知识:
循环神经网络RNN

RNN的基本结构以及展开形式

由上图可知,RNN的结构是一个重复的过程,再来介绍一下各个符号的含义:x是输入,h是隐含状态(hiddenstate),o为输出,L为损失函数,y为训练集的标签。这些元素右上角带的t代表t时刻的状态,其中需要注意的是,单元h在t时刻的表现不仅由此刻的输入决定,还受t时刻之前时刻的影响,在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的,这是RNN的重要特点,一定要牢记,循环神经网络理论上可以被看作是在同一神经网络结构被无限复制的结果,循环神经网络在不同时间位置共享参数,从而能够使用有限的参数处理任意时间长度的序列。下面是RNN的前向传播过程:(1)

循环神经网络RNN
这一步主要是把t-1时刻的隐含状态和此刻的样本输入结合起来,再加上偏置量,W代表上一时刻隐含状态的权重,U代表输入样本的权重,(2)
循环神经网络RNN

对刚才求出的值使用一个tanh()**函数(3)

循环神经网络RNN
把t时刻的隐含状态的值乘上一个权重,加上偏置量。(4)

循环神经网络RNN
对求出来的值使用sotfmax函数。5)通过最小化损失误差(即输出的y与真实值之间的差值),我们可以不断训练网络,使得得到的循环神经网络可以准确的预测文本的输出,相比于卷积神经网络等前馈神经网络,循环神经网络由于具备对序列顺序信息的刻画能力,往往可以得到更准确的结果。在本节的最后我们做一个对RNN结构简单的小结:RNN这里的权重参数在每个时刻都是相等的(参数共享);隐藏状态可以理解为:s=f (现有的输入+过去的记忆总结)

关注小鲸融创,一起深度学习金融科技!
循环神经网络RNN