赞
踩
由于卷积神经网络不擅长处理语音数据、翻译语句等有先后顺序的数据结构。随之而来的循环神经网络(Recurrent Natural Network,RNN)它特别适合处理序列数据,RNN已经成功应用于自然语言处理(Neuro-Linguistic Programming)、语音识别、图像标注、智能翻译等场景中。
随着深度学习的不断发展和网络结构的优化,循环神经网络出现其他衍生网络模型,如长短期记忆模型LSTM(Long Short-Term Memory)、门控循环单元GRU(Gated Recurrent Unit)和双向循环神经网络Bi-RNN(Bidirectional Recurrent Neural Networks)等。首先从循环神经网络入手,该部分内容由3部分构成:
1)循环神经网络RNN模型介绍;
2)前向传播和随时间反向传播;
3)梯度消失和梯度爆炸问题。
由于篇幅本文先针对循环神经网络RNN模型做介绍。
循环神经网络模型介绍
循环神经网络模型是一种经典网络结构,它包括输入层、隐含层、输出层,它的最大特点在于它有自循环结构,即表示神经元之间还有关联,这是传统神经网络、卷积神经网络所没有的。
(a)传统神经网络
上图中,第1列圆圈代表输入层,第2列圆圈就是神经网络的中间层,这里的中间层只有一层,输出层与逻辑回归的输出层一致。在神经网络中,输入层是已知的,是用户输入的数据,因此不将输入层看出神经网络的网络层,上图的神经网络只包含一层隐藏层和一层输出层,又称为双层神经网络。为了区分神经元在神经网络中的位置,我们分别用上标[l]和下标[i]代表神经网络所处的网络层次l和在该层中的位置i。
单隐层中的神经元也包括了以上两个处理步骤,以此图为例, 其流程为:
(由于不能输入公式只能截图了!)
隐藏层中的可以是任意的激活函数,例如ReLu函数,tanh函数,PReLu函数及Sigmoid函数,输出层在二分类问题中经常采用sigmoid函数。
(b)循环神经网络
U是输入层到隐含层的权重矩阵,W是状态到隐含层的权重矩阵,s为状态,V是隐含层到输出层的权重矩阵。从上图中可以看出共享参数各个时间节点对应的U、V、W都是不变的,这个机制与卷积神经网络的过滤器机制一样,通过参数共享,降低了参数量。
隐藏层详细介绍:
该网络在每一时间都t有相同的网络结构,假设输入x为n维向量,隐含层的神经元个数为m,输出层神经元个数为r,则U为nxm维,W是上一次的为这一次输入的权重矩阵,大小为mxm维;V是输出层的权重矩阵,大小为mxr维。其中x(t),a(t),o(t)均为向量,编程含义如下:
x(t):为时刻t的输入;
a(t):为时刻t的隐藏层状态。它即是网络的记忆,基于前一时刻的隐层状态和当前时刻的输入进行计算,即,函数f通常是非线性的,如tanh或者ReLU,位前一时刻的隐藏层状态,初始化时值一般为0。
o(t):为时刻t的输出。
a(t)被认为是网络的记忆状态,可以捕获之前所有时刻发生的信息,输出的计算仅仅是依赖于时刻t的记忆。循环神经网络最大的特点就是隐藏层状态,它可以捕获一个序列的信息。
TensorFlow中这样的循环体结构叫做cell,用tf.nn.rnn_cell.BasicRNNCell,其参数定义如下:
tf.nn.rnn_cell.BasicRNNCell(num_units,activation=None,reuse=None,name=None)
参数说明:
num_units:int类型,必选参数,表示有多少个cell结构单元;
activation:string类型,激活函数,默认为tanh;
reuse:bool类型,代表是否重新使用scope中的参数;
name:string类型,名称。
下一篇继续讲《前向传播和随时间反向传播》内容。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。