RNN模型
2015-09-15 12:31
218 查看
(一)NN模型(neural network)
1.NN模型是复杂神经网络模型的基础计算单元,广泛使用于各种神经网络模型中,如下所示:
![](http://img.blog.csdn.net/20150917125541233?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.NN模型常见的激活函数主要有3种:sigmoid函数,tanh函数,以及ReLU(rectified linear unit)函数,分别如下:
![](http://img.blog.csdn.net/20150917125923088?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.NN模型若放在输出层,不同的任务使用不同的激活函数:
(1)multi-class:使用softmax函数
![](http://img.blog.csdn.net/20150917130313199?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(2)multi-label:每个节点使用一个sigmoid函数
(二)FFNN模型(feedforward neural network)
![](http://img.blog.csdn.net/20150917130941203?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.前向传播网络如下,在输入层输入数据后,根据NN模型依次进行计算即可得输出,该网络常用于分类或者预测;
2.FFNN模型的训练的关键在于优化以下的损失函数:
![](http://img.blog.csdn.net/20150917131145981?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
使得预测值与真实值尽可能吻合,经典的算法当属BP(backpropagation)算法;
3.BP算法
(1)BP算法通过链式法则计算出每一层参数的梯度,使用梯度下降的算法进行损失函数的优化;
(2)由于损失函数是非凸的,所以梯度下降算法并不能保证得到最优解,然而在实际应用中,使用随机梯度下降(stochastic gradient descent,SGD)算法可以得到很好的效果;这里的随机指的是每次进行参数迭代时,随机选取部分样本(也就是一个batch)进行优化计算;
![](http://img.blog.csdn.net/20150917132141411?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Fi是单个样本(xi,yi)的损失函数,参数表示学习率;
(3)BP算法中梯度的计算是基于残差进行计算的,残差的公式如下:
![](http://img.blog.csdn.net/20150917132654887?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(4)有了残差,就可以计算出梯度了:
![](http://img.blog.csdn.net/20150917132814483?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
PS:l 表示激活函数,v表示激活值;
4.对于FFNN模型来说,每计算一个样本点,模型信息就丢失,对于相互独立的样本点来说,这样的模型可以起到很好的作用,但是若样本点之间存在关联性,那么将会有信息丢失以至无法很好完成任务;因此,为了对时间进行建模,RNN模型出现;
(三)RNN模型
1.递归神经网络(recurrent neural network,RNN)是一种具有反馈结构的神经网络,其输出不但与当前输入和网络的权值有关,而且也与之前网络的输入有关;RNN通过添加跨越时间点的自连接隐藏层,对时间进行建模;换句话说,隐藏层的反馈,不仅仅进入输出端,而且还进入了下一时间的隐藏层,网络结构如下:
![](http://img.blog.csdn.net/20150915090944483?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
以上的网络可以通过两个时间步来展开,将连接以无环的形式可视化:
![](http://img.blog.csdn.net/20150915091309246?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
递归网络有时被描述为深度网络,其深度不仅仅发生在输入和输出之间,而且还发生在跨时间步,每个时间步可以被认为是一个层;
PS:权重(从输入到隐藏和隐藏到输出)在每个时间步是相同的;
2.为了方便网络的讲述,可以将网络按时间展开如下:
![](http://img.blog.csdn.net/20150915091523784?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(1)前向传播:
![](http://img.blog.csdn.net/20150915092045765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其中下标 i , h ,k 分别表示输入层,隐藏层,输出层,a表示未激活值,b表示激活值;
(2)反向传播:
![](http://img.blog.csdn.net/20150915092528642?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(3)梯度求解:
![](http://img.blog.csdn.net/20150915092730423?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.RNN的模型训练:RNN可以按时间展开,从而进行前向以及后向计算,从而可以将传统的BP算法应用于RNN模型的训练,由于是按照时间展开的BP算法,所以术语就叫做BPTT(backpropagation through time);然而用BPTT训练RNN具有一个致命的缺陷,就是梯度弥散问题,下面为了分析简便,只考虑一个输入节点,一个隐藏节点以及一个输出节点的网络,如下图1,按时间展开为图2:
![](http://img.blog.csdn.net/20150917135714441?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图1 图2
假设只考虑从时间节点t1到时间节点t2之间的序列,在节点t1给一个输入,t1与t2之间的节点输入都为0;那么节点t1的输入传到了节点t2时的输出随着t2-t1的增大而指数下降;与此同时,下降的速度也与时间点之间的传输权重以及激活函数有关;因此RNN并不能保持长时间的上下文信息;因此为了保存长时间的上下文信息,LSTM出现
(四)BRNN模型(Bidirectional RNN)
![](http://img.blog.csdn.net/20150917154644263?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.BRNN不仅接受上一个时刻的隐层输出作为输入,也有接受下一个时刻的隐层输出作为输入;
2.计算公式如下:
![](http://img.blog.csdn.net/20150917154852255?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
参考文献:
A Critical Review of Recurrent Neural Networks for Sequence Learning
RNN以及LSTM的介绍和公式梳理
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的介绍和公式梳理
相关文章推荐
- iOS生成服务器端的推送证书
- 我对栈的学习
- Qt 学习之路 :进程间通信
- Android技术知识网址集合
- 检查硬盘告警的脚本
- 教练式辅导-GROW模型的分析与运用
- 完美激活Flash builder 4.7
- sql:[dbo].[smt_MES_RptProductDaily] 生产日报表
- ICE
- 个人面试题(oracle数据库开发)(一)
- LBP+DLBP+STLBP+VLBP
- 输入输出之File类
- 降维工具箱
- 2014年度辛星完全解读html部分
- IOS开发-CAlayer-锚点小结
- cocos2dx画扇形
- 红黑树
- 简单的数据库交互展示
- 概率分析和随机算法(2)——算法导论(6)
- ubuntu mysql 安装