码迷,mamicode.com
首页 > 编程语言 > 详细

深度学习算法-循环神经网络(Recurrent Neural Network)讲解学习

时间:2020-07-01 12:45:41      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:微软雅黑   blog   越来越大   大于   man   -o   origin   nat   lan   

先来看一个例子:

技术图片

之前的全连接神经网络的结构:它的隐藏层的值只取决于输入的 x:

技术图片

 

该结构对于上面问题只能做如下预测:

比如:可以预测:花开时——>跑得快

 

 由此可见:通过简单的神经网络(单层的前馈神经网络)无法解决该三个问题,需要用关联的神经网络来解决。

RNNMotivation:需要前馈信息。

当前输入+之前输入+后面的信息

 RNN 的隐藏层的值h不仅仅取决于当前这次的输入 x,还取决于上一次隐藏层的值h,其结构图如下:

技术图片

技术图片

 

 

技术图片

 

 

技术图片技术图片

 

 

 看一个计算的例子:

技术图片

 

 技术图片

 

 技术图片

RNN的图解:对应多个输出

技术图片

 举一个预测的例子:

技术图片

 

技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 # 多个层的RNN结构:

 技术图片

 #RNN存在的问题:

序列比较长的关联难以预测,难以抓住太长的关联。

技术图片

 

技术图片

技术图片

技术图片

 

 

 # 梯度消失与梯度爆炸

当序列很长的时候,RNN梯度往回传每一步都要经过Whh,特别是计算h0的梯度,需要经过NWhhN个重复的tanh函数,因此在这种情况下,当设置的值大于1,则会产生NWhh相乘的情况,导致whhN次方值越来越大,最后梯度爆炸。当设置的值小于1,则会产生梯度消失(改变网络的结构,LSTM解决)。

RNN 的训练算法为:BPTT

BPTT 的基本原理和 BP 算法是一样的,同样是三步:

1前向计算每个神经元的输出值;

2反向计算每个神经元的误差项值,它是误差函数E对神经元j的加权输入的偏导数;

3计算每个权重的梯度。

最后再用随机梯度下降算法更新权重。

BPTT手写推导:http://www.jianshu.com/p/9e217cfd8a49

参考链接:

[1]详解循环神经网络(Recurrent Neural Network)https://www.cnblogs.com/codehome/p/9729909.html

[2]上海交大许志钦统计计算与机器学习5: 循环神经网络RNN:https://www.bilibili.com/video/BV1HE411c7yn?p=2

[3]RNN_了不起的赵队-CSDN博客_rnn https://blog.csdn.net/zhaojc1995/article/details/80572098

 

深度学习算法-循环神经网络(Recurrent Neural Network)讲解学习

标签:微软雅黑   blog   越来越大   大于   man   -o   origin   nat   lan   

原文地址:https://www.cnblogs.com/gcter/p/13218396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!