您的位置:首页 > 其它

RNN模型

2015-09-15 12:31 218 查看
(一)NN模型(neural network)

1.NN模型是复杂神经网络模型的基础计算单元,广泛使用于各种神经网络模型中,如下所示:



2.NN模型常见的激活函数主要有3种:sigmoid函数,tanh函数,以及ReLU(rectified linear unit)函数,分别如下:



3.NN模型若放在输出层,不同的任务使用不同的激活函数:

(1)multi-class:使用softmax函数



(2)multi-label:每个节点使用一个sigmoid函数

(二)FFNN模型(feedforward neural network)



1.前向传播网络如下,在输入层输入数据后,根据NN模型依次进行计算即可得输出,该网络常用于分类或者预测;

2.FFNN模型的训练的关键在于优化以下的损失函数:



使得预测值与真实值尽可能吻合,经典的算法当属BP(backpropagation)算法;

3.BP算法

(1)BP算法通过链式法则计算出每一层参数的梯度,使用梯度下降的算法进行损失函数的优化;

(2)由于损失函数是非凸的,所以梯度下降算法并不能保证得到最优解,然而在实际应用中,使用随机梯度下降(stochastic gradient descent,SGD)算法可以得到很好的效果;这里的随机指的是每次进行参数迭代时,随机选取部分样本(也就是一个batch)进行优化计算;



Fi是单个样本(xi,yi)的损失函数,参数表示学习率;

(3)BP算法中梯度的计算是基于残差进行计算的,残差的公式如下:



(4)有了残差,就可以计算出梯度了:



PS:l 表示激活函数,v表示激活值;

4.对于FFNN模型来说,每计算一个样本点,模型信息就丢失,对于相互独立的样本点来说,这样的模型可以起到很好的作用,但是若样本点之间存在关联性,那么将会有信息丢失以至无法很好完成任务;因此,为了对时间进行建模,RNN模型出现;

(三)RNN模型

1.递归神经网络(recurrent neural network,RNN)是一种具有反馈结构的神经网络,其输出不但与当前输入和网络的权值有关,而且也与之前网络的输入有关;RNN通过添加跨越时间点的自连接隐藏层,对时间进行建模;换句话说,隐藏层的反馈,不仅仅进入输出端,而且还进入了下一时间的隐藏层,网络结构如下:



以上的网络可以通过两个时间步来展开,将连接以无环的形式可视化:



递归网络有时被描述为深度网络,其深度不仅仅发生在输入和输出之间,而且还发生在跨时间步,每个时间步可以被认为是一个层;

PS:权重(从输入到隐藏和隐藏到输出)在每个时间步是相同的;

2.为了方便网络的讲述,可以将网络按时间展开如下:



(1)前向传播:



其中下标 i , h ,k 分别表示输入层,隐藏层,输出层,a表示未激活值,b表示激活值;

(2)反向传播:



(3)梯度求解:



3.RNN的模型训练:RNN可以按时间展开,从而进行前向以及后向计算,从而可以将传统的BP算法应用于RNN模型的训练,由于是按照时间展开的BP算法,所以术语就叫做BPTT(backpropagation through time);然而用BPTT训练RNN具有一个致命的缺陷,就是梯度弥散问题,下面为了分析简便,只考虑一个输入节点,一个隐藏节点以及一个输出节点的网络,如下图1,按时间展开为图2:



图1 图2

假设只考虑从时间节点t1到时间节点t2之间的序列,在节点t1给一个输入,t1与t2之间的节点输入都为0;那么节点t1的输入传到了节点t2时的输出随着t2-t1的增大而指数下降;与此同时,下降的速度也与时间点之间的传输权重以及激活函数有关;因此RNN并不能保持长时间的上下文信息;因此为了保存长时间的上下文信息,LSTM出现

(四)BRNN模型(Bidirectional RNN)



1.BRNN不仅接受上一个时刻的隐层输出作为输入,也有接受下一个时刻的隐层输出作为输入;

2.计算公式如下:



参考文献:
A Critical Review of Recurrent Neural Networks for Sequence Learning

RNN以及LSTM的介绍和公式梳理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: