0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

循环神经网络模型与前向反向传播算法

Dbwd_Imgtec 来源:fqj 2019-05-10 08:48 次阅读

本文将讨论:循环神经网络(Recurrent Neural Networks ,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域。

1. RNN概述

在前面讲到的DNN和CNN中,训练样本的输入和输出是比较的确定的。但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不一,比如基于时间的序列:一段段连续的语音,一段段连续的手写文字。这些序列比较长,且长度不一,比较难直接的拆分成一个个独立的样本来通过DNN/CNN进行训练。

而对于这类问题,RNN则比较的擅长。那么RNN是怎么做到的呢?RNN假设我们的样本是基于序列的。比如是从序列索引 1 到序列索引 T 的。对于这其中的任意序列索引号 t,它对应的输入是对应的样本序列中的。而模型在序列索引号 t 位置的隐藏状态,则由共同决定。在任意序列索引号 t,我们也有对应的模型预测输出。通过预测输出和训练序列真实输出,以及损失函数,我们就可以用DNN类似的方法来训练模型,接着用来预测测试序列中的一些位置的输出。

下面我们来看看RNN的模型。

2. RNN模型

RNN模型有比较多的变种,这里介绍最主流的RNN模型结构如下:

循环神经网络模型与前向反向传播算法

上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。我们重点观察右边部分的图。

这幅图描述了在序列索引号t附近RNN的模型。其中:

1)代表在序列索引号 t−1 和 t+1 时训练样本的输入。

2)

3)

4)

5)代表在序列索引号 t 时训练样本序列的真实输出。

6)U,W,V这三个矩阵是我们的模型的线性关系参数,它在整个RNN网络中是共享的,这点和DNN很不相同。 也正因为是共享了,它体现了RNN的模型的“循环反馈”的思想。

3. RNN前向传播算法

有了上面的模型,RNN的前向传播算法就很容易得到了。

对于任意一个序列索引号t,我们隐藏状态

循环神经网络模型与前向反向传播算法

其中 σ 为RNN的激活函数,一般为 tanh, b为线性关系的偏倚。

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

 + c

在最终在序列索引号 t 时我们的预测输出为:

循环神经网络模型与前向反向传播算法

通常由于RNN是识别类的分类模型,所以上面这个激活函数一般是softmax。

通过损失函数

4. RNN反向传播算法推导

有了RNN前向传播算法的基础,就容易推导出RNN反向传播算法的流程了。RNN反向传播算法的思路和DNN是一样的,即通过梯度下降法一轮轮的迭代,得到合适的RNN模型参数 U,W,V,b,c 。由于我们是基于时间反向传播,所以RNN的反向传播有时也叫做BPTT(back-propagation through time)。当然这里的BPTT和DNN也有很大的不同点,即这里所有的 U,W,V,b,c 在序列的各个位置是共享的,反向传播时我们更新的是相同的参数。

为了简化描述,这里的损失函数我们为交叉熵损失函数,输出的激活函数为softmax函数,隐藏层的激活函数为tanh函数。

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

循环神经网络模型与前向反向传播算法

其中 V,c,的梯度计算是比较简单的:

循环神经网络模型与前向反向传播算法

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

循环神经网络模型与前向反向传播算法

这样我们可以像DNN一样从递推 。

循环神经网络模型与前向反向传播算法

对于,由于它的后面没有其他的序列索引了,因此有:

循环神经网络模型与前向反向传播算法

有了

循环神经网络模型与前向反向传播算法

除了梯度表达式不同,RNN的反向传播算法和DNN区别不大,因此这里就不再重复总结了。

5. RNN小结

上面总结了通用的RNN模型和前向反向传播算法。当然,有些RNN模型会有些不同,自然前向反向传播的公式会有些不一样,但是原理基本类似。

RNN虽然理论上可以很漂亮的解决序列数据的训练,但是它也像DNN一样有梯度消失时的问题,当序列很长的时候问题尤其严重。因此,上面的RNN模型一般不能直接用于应用领域。在语音识别,手写书别以及机器翻译等NLP领域实际应用比较广泛的是基于RNN模型的一个特例LSTM,下一篇我们就来讨论LSTM模型。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:循环神经网络(RNN)模型与前向反向传播算法

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    神经网络教程(李亚非)

    网络BP算法的程序设计  多层网络BP算法源程序  第4章 Hopfield
    发表于 03-20 11:32

    AI知识科普 | 从无人相信到万人追捧的神经网络

    误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成,是一种应用最为广泛的
    发表于 06-05 10:11

    机器学习神经网络参数的代价函数

    吴恩达机器学习笔记之神经网络参数的反向传播算法
    发表于 05-22 15:11

    【案例分享】基于BP算法神经网络

    传播的,不会回流),区别于循环神经网络RNN。BP算法(Back Propagation):误差反向传播
    发表于 07-21 04:00

    如何设计BP神经网络图像压缩算法

    ,并能在脑海中重现这些图像信息,这不仅与人脑的海量信息存储能力有关,还与人脑的信息处理能力,包括数据压缩能力有关。在各种神经网络中,多层神经网络具有很强的信息处理能力,由于其采用BP算法
    发表于 08-08 06:11

    神经网络反向传播算法

    03_深度学习入门_神经网络反向传播算法
    发表于 09-12 07:08

    【AI学习】第3篇--人工神经网络

    `本篇主要介绍:人工神经网络的起源、简单神经网络模型、更多神经网络模型、机器学习的步骤:训练与预测、训练的两阶段:正向推演与
    发表于 11-05 17:48

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络是一种基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入层:根据现有数据获取输入的层隐藏层:使用反向
    发表于 07-12 08:02

    卷积神经网络模型发展及应用

    大多神经网络模型都是采用 BP网络或者其变化 形式。早期神经网络缺少严格数学理论的支撑,并 且在此后的近十年时间,由于其容易过拟合以及训 练速度慢,并且在 1991 年
    发表于 08-02 10:39

    基于Numpy实现神经网络反向传播

    和DeepMind数据科学家、Udacity深度学习导师Andrew Trask一起,基于Numpy手写神经网络,更深刻地理解反向传播这一概念。
    的头像 发表于 04-01 09:29 4785次阅读
    基于Numpy实现<b class='flag-5'>神经网络</b>:<b class='flag-5'>反向</b><b class='flag-5'>传播</b>

    手动设计一个卷积神经网络(前向传播反向传播

    本文主要写卷积神经网络如何进行一次完整的训练,包括前向传播反向传播,并自己手写一个卷积神经网络
    的头像 发表于 05-28 10:35 1.8w次阅读
    手动设计一个卷积<b class='flag-5'>神经网络</b>(前向<b class='flag-5'>传播</b>和<b class='flag-5'>反向</b><b class='flag-5'>传播</b>)

    浅析深度神经网络(DNN)反向传播算法(BP)

    在 深度神经网络(DNN)模型与前向传播算法 中,我们对DNN的模型和前向传播
    的头像 发表于 03-22 16:28 3187次阅读
    浅析深度<b class='flag-5'>神经网络</b>(DNN)<b class='flag-5'>反向</b><b class='flag-5'>传播</b><b class='flag-5'>算法</b>(BP)

    BP(BackPropagation)反向传播神经网络介绍及公式推导

    BP(BackPropagation)反向传播神经网络介绍及公式推导(电源和地电气安全间距)-该文档为BP(BackPropagation)反向传播
    发表于 07-26 10:31 48次下载
    BP(BackPropagation)<b class='flag-5'>反向</b><b class='flag-5'>传播</b><b class='flag-5'>神经网络</b>介绍及公式推导

    详解神经网络反向传播和梯度下降

    摘要:反向传播指的是计算神经网络参数梯度的方法。
    的头像 发表于 03-14 11:07 640次阅读

    卷积神经网络算法流程 卷积神经网络模型工作流程

    ,其独特的卷积结构可以有效地提取图像和音频等信息的特征,以用于分类、识别等任务。本文将从卷积神经网络的基本结构、前向传播算法反向传播
    的头像 发表于 08-21 16:50 1491次阅读