前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >循环神经网络之前向反向传播算法

循环神经网络之前向反向传播算法

作者头像
小一
发布2019-08-14 15:53:56
6920
发布2019-08-14 15:53:56
举报
文章被收录于专栏:谓之小一谓之小一
修正4.RNN梯度爆炸和梯度消失中错误,重新发一遍,抱歉。

前面我们已经介绍了深度神经网络卷积神经网络,这些算法都是前向反馈,模型的输出和模型本身没有关联关系。今天我们学习输出和模型间有反馈的神经网络,循环神经网络(Recurrent Neual Networks),其广泛应用于自然语言处理中的语音识别,书写识别和机器翻译等领域。

1.RNN简介

前面介绍的DNN和CNN之中,训练样本的输入和输出都是确定的。但对于训练样本输入是连续的序列,训练样本长度不同的样本,比如一段连续的语音和手写文字,DNN和CNN是比较难处理的。而对于上述问题,RNN则是比较擅长,那么RNN是怎么做到的呢?

2.RNN模型

循环神经网络有多种模型结构,这里我们介绍最主流的模型结构。上图中左边是没有按时间序列展开的图,右边是按照时间序列展开的结构,我们重点看右边的模型结构。这里描述了在序列索引号t附近的RNN模型,下面针对一些参数做具体说明。

3.RNN前向传播算法

根据上面介绍的模型,我们来看一下RNN前向传播算法,对于任意时刻序列索引号t,能够得到当前的隐藏状态。其中σ为RNN的激活函数,一般是tanh,b为偏倚系数。

序列索引号t时模型的输出为

最终能够得到模型的预测输出,由于RNN是识别类的分类模型,所以下式激活函数一般是softmax函数。

4.RNN反向传播算法

RNN反向传播算法和DNN思路相同,即通过梯度下降法进行迭代,得到合适的RNN模型参数U,W,V,b,c,传播过程中所有的参数在序列中各个位置是共享的,即反向传播中我们更新的是相同的参数。为了简化描述,反向传播时损失函数采用对数损失函数,隐藏层的激活函数为tanh函数,输出的激活函数为softmax函数。

对于RNN,由于我们在序列各位置都有损失函数,因此最终的损失函数L为

其中V,c的梯度计算比较简单,如下所示

针对W,U,b的梯度计算比较复杂,从RNN模型可以看出,在反向传播时,在某一序列位置t的梯度损失,由当前位置的输出对应的梯度损失和序列索引位置t+1时的梯度损失两部分共同决定。对于W在某一序列位置t的梯度损失需要反向传播一步步来进行计算,此处定义序列索引t位置的隐藏状态梯度为

4.RNN梯度爆炸和梯度消失

5.其他

上面总结了通用的RNN模型的前向传播算法和反向传播算法,当然RNN还有很多其他的模型,比如多层RNN、双向循环RNN(如上图所示),在前向和反向传播时公式自然也会不同,但基本原理类似,有兴趣可查询其他资料继续学习。

RNN存在梯度爆炸和梯度消失问题,但怎么解决呢,下篇文章我们来介绍LSTM算法,看如何解决传播时出现的梯度爆炸和梯度消失问题。

你看到的这篇文章来自于公众号「谓之小一」,欢迎关注我阅读更多文章。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 谓之小一 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.RNN简介
  • 2.RNN模型
  • 3.RNN前向传播算法
  • 4.RNN反向传播算法
  • 4.RNN梯度爆炸和梯度消失
  • 5.其他
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档