深度学习小白专场之循环神经网络和递归神经网络

全连接神经网络和卷积神经⽹网络,都只能单独的去处理单个的输入,且前后的输入之间毫无关系。但是在一些任务中,我们需要更好的去处理序列的信息,即前后的输⼊之间存在关系。比如,在理解一整句话的过程中,孤立理解组成这句话的词是不够的,我们需要整体的处理由这些词连接起来的整个序列;当我们处理视频时,我们也不能单独地仅仅分析每一帧,⽽要分析这些帧连接起来的整个序列。这就引出了了深度学习领域中另⼀类非常重要的神经网络:循环神经⽹网络(Recurrent Neural Network)。

1.循环神经网络

我们首先来看一下一个简单的循环神经⽹络图,它由输⼊层、一个隐藏层和⼀个输出层组成。我们可以看到,循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s,权重矩阵W就是隐藏层上一次的值作为这一次的输入的权重。

从上⾯可以看出,循环神经⽹网络的输出值ot,是受前⾯历次输⼊入值xt、xt−1、xt−2. . . 的影响的, 这就是为什么循环神经网络可以往前看任意多个输入值的原因。
对比与卷积神经网络CNN一般用于处理网格化数据如一个图像的神经网络,循环神经网络RNN是一类用于处理序列数据的神经网络。

  • 循环神经网络的训练:
    循环神经网络训练的算法和卷积神经网络,前馈神经网络的训练算法-BP算法的原理是一样的,也包括3个步骤:
    (1)前向计算每一个神经元的输出值
    (2)反向计算每一个神经元的误差项,即误差对加权输入(加法器)的偏导数。这里的加法器就是wx+b
    (3)计算每一个权重的梯度
    注: 应用于展开图且代价为O(tao)的反向传播算法称为通过时间反向传播(BPTT)。
  • CNN和RNN参数共享的区别:卷积的输出是一个序列,其中输出的每一项是相邻几项输入的函数,共享的概念体现在每个时间步中使用的相同的卷积核;而RNN是输出的每一项是前一项的函数。输出的每一项是对先前输出应用相同的更新规则而产生。
  • RNN的几种设计模式:
    (1)每个时间步都有输出,并且隐藏单元和隐藏单元之间有循环连接的循环网络
    (2)每个时间步都有输出,只有当前时刻的输出到下一时刻的隐藏单元之间有循环连接的网络
    (3)隐藏单元之间存在循环连接,但是读取整个序列后产生单个输出的循环网络

隐藏单元之间存在循环的网络非常强大但是训练代价也非常大。

  • 由输出反馈到模型而后产生循环连接的模型可使用导师驱动过程进行训练。训练模型时,导师驱动过程不再使用最大似然准则。 导师驱动过程是一种训练技术,适用于输出与下一时间步的隐藏状态存在连接的RNN。

我们通常希望将RNN的输出解释为一个概率分布,并且通常使用与分布相关联的交叉熵来定义损失。例如均方误差是与单位高斯分布的输出相关联的交叉熵损失,例如前馈网络中所使用的。

  • 循环网络为减少的参数数目付出的代价是优化参数可能变得困难。
  • 我们可以将t=1,2,3···的向量x^(t)序列作为输入的RNN。另一种选择我们可以使用单个向量x作为输入。当x是一个固定大小的向量时,我们可以简单的将其看做产生y序列RNN的额外输入。
    将额外的输入提供到RNN的一些常见方法是:
    (1)在每个时刻作为一个额外输入
    (2)作为初始状态h^(0)
    (3)结合两种方式

将固定长度的向量x映射到Y序列上分布的RNN。这类RNN适应于很多任务,如图注,可以将单个对象作为模型的输入,然后产生描述图像的词序列。

2.双向RNN

对于语⾔模型来说,很多时候光看前面的词是不够的,我们需要看到一个词前后的词,这时候就要用到双向RNN了。下图为双向RNN示例:

我们可以看出一般的规律:正向计算时,隐藏层的值st与st−1有关;反向计算时,隐藏层的值s ′t与s ′ t+1有关;最终的输出取决于正向和反向计算的加和。

  • 双向RNN允许输出单元同时依赖过去和未来且对时刻t的输入值最敏感的表示,而不必指定t周围固定大小的窗口。这是前馈网络、卷积网络或具有固定带下的线性缓存器的常规RNN所必须要做的。
  • 在双向RNN中,循环h在时间上向前(向右)传播信息,循环g在时间上向后(向左)传播信息。
    但是实践中,上面介绍的这两种RNN并不能处理较长的序列,主要是由于梯度消失和梯度爆炸的问题。使用其他结构的RNNs可以避免梯度消失问题,⽐如长短时记忆网络(LTSM)和Gated Recurrenr Unit(GRU),这是最流行的做法。同时避免使用饱和性激活函数比如sigmoid和tanh函数而采用ReLu函数也可以避免梯度消失问题。对于梯度爆炸问题我们可以通过设置梯度阈值来避免。

3.基于编码-解码的序列到序列架构

  • 我们还可以训练RNN使得输入序列可以变为不一定等长的输出序列。在这很多场景中都有应用,如语音识别、机器识别、或者问答,其中训练集的输入和输出序列的长度通常不相同。我们通常称为将这样的输入称为“上下文”。

4.递归神经网络

  • 递归神经网络代表循环网络的另一个扩展,它被构造为深的树状结构而不是RNN的链状结构。因此是不同的计算图。
  • 递归神经网络的一个明显优势是,对于具有相同长度tao的序列,深度可以急剧地从tao减小到log(tao),这可能有助于解决长期依赖。

深度学习小白专场之循环神经网络和递归神经网络相关推荐

  1. rnn 递归神经网络_递归神经网络rnn的简单解释

    rnn 递归神经网络 Recurrent neural network is a type of neural network used to deal specifically with seque ...

  2. 实录分享 | 计算未来轻沙龙:深度学习工具专场(PPT下载)

    12 月 2 日(周日)下午,PaperWeekly 携手清华大学计算机系推出了计算未来轻沙龙第六期线下活动--深度学习工具专场.来自亚马逊 AWS.谷歌.英伟达.百度 PaddlePaddle 以及 ...

  3. Keras深度学习实战(2)——使用Keras构建神经网络

    Keras深度学习实战(2)--使用Keras构建神经网络 0 前言 1. Keras 简介与安装 2. Keras 构建神经网络初体验 3. 训练香草神经网络 3.1 香草神经网络与 MNIST 数 ...

  4. 深度学习小白如何看懂神经网络模型/图?

    深度学习小白如何看懂神经网络模型/图? 神经网络的图还是比较容易看懂的,比电路图什么的要好懂多了.只是刚开始接触有些不习惯罢了,多看一些就好了. 下面举几张神经网络图作为例子(由简单到复杂). 简单的 ...

  5. 深度学习入门笔记(七):深层神经网络

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  6. 吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究

    吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究 吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究 2.1 为什么要进行实例探究 2.2 经典网络 LeNet-5 AlexNet VGG- ...

  7. 深度学习与计算机视觉系列(10)_细说卷积神经网络

    转载自: 深度学习与计算机视觉系列(10)_细说卷积神经网络 - 龙心尘 - 博客频道 - CSDN.NET http://blog.csdn.net/longxinchen_ml/article/d ...

  8. 吴恩达《神经网络与深度学习》精炼笔记(5)-- 深层神经网络

    上节课我们主要介绍了浅层神经网络.首先介绍神经网络的基本结构,包括输入层,隐藏层和输出层.然后以简单的2 layer NN为例,详细推导了其正向传播过程和反向传播过程,使用梯度下降的方法优化神经网络参 ...

  9. 深度学习小白装机-记录一下

    深度学习小白装机-记录一下 三个备选清单. 原本早就有攒一部机器的想法,最近刚刚好在玩深度学习的小案例,所以产生了装一部自己的台式机的想法. 下面均是自己查资料所得,可能与实际有差入.出错了,我也不负 ...

最新文章

  1. redhat6.4 添加yum本地源和安装virtualbox增强组件
  2. 为何大多数人做出来的图表只是一坨屎?
  3. PAT A1017 优先队列
  4. 谢百三:救市后股民应牢记教训?
  5. [云炬创业基础笔记]第六章商业模式测试12
  6. workunit 的指的工作单元是什么_分频器是做什么用的?
  7. React Native使用指南-使用链接库
  8. Java 蓝桥杯 矩阵乘法
  9. Cookie学习总结
  10. Mapx自带的工具的理解
  11. 计算机网络-01-计算机网络体系结构
  12. javascript网页自动填表_javascript实现自动填写表单实例简析
  13. 不改动当前账户密码的情况下,启用其他账户登录windows系统
  14. IOS开发之——硬件开发-加速计应用实例(04)
  15. SAR图像舰船目标检测介绍
  16. 贷款软件测试经典bug描述,如何描述bug
  17. unity操作详细教程
  18. maven install报The forked VM terminated without saying properly goodbye. VM crash or System.exit call
  19. Python教程:利用百度API进行批量图片OCR识别
  20. 【软件安装】spyder汉化包安装

热门文章

  1. 帆软认证BI工程师(FCBA)部分考试题目及答案
  2. word 使用域对公式进行编号
  3. 【信息安全案例】——软件解密技术(以OllyDbg为例)
  4. 【软件测试常见Bug清单】
  5. Type-2 Fuzzy Set and Interval Type-2 Fuzzy Set
  6. 微课微视频制作软件CS(Camtasia Studio)完整学习视频教程-黄波-专题视频课程
  7. DNF史诗计算机最新版,DNF100级史诗搭配计算器(dnf史诗组合计算工具)V2020.9.19 正式版...
  8. 班主任如何展开期中表彰班会
  9. 推荐5款高效的国产软件,精挑细选让你眼前一亮
  10. 虚拟服务器C盘备份,电脑换主机怎么备份_电脑换主机c盘怎么备份