【深度学习】第四章:循环神经网络

1. 为什么要使用循环神经网络?

因为全连接神经网络存在如下缺点:

  1. 网络没有记忆:每次网络的输出只依赖于当前的输入,不能处理输入之间有联系的数据。
  2. 参数太多:层与层之间全连接,层内无连接。
  3. 无法处理变长的序列数据,如视频、语音、文本 :因为输入和输出的维数都是固定的,不能任意改变。

其中,最主要的缺点还是第一点,输入之间没有联系,即网络没有记忆。那么如何给网络增加记忆能力? 有三种方法:

  1. 延时神经网络
    在这里插入图片描述

  2. 自回归模型
    在这里插入图片描述

  3. 循环神经网络
    在这里插入图片描述
    RNN主要用于解决输入之间具有时序关系的问题。

接下来介绍的就是其中的循环神经网络。

2. 简单循环神经网络

在这里插入图片描述

当隐藏层的个数不止一层时,就成了深度循环神经网络

3. 双向循环神经网络

在这里插入图片描述

4. 应用到机器学习

  1. 序列到类别模式:输入是序列,输出是类别,用于解决分类问题。比如:文本分类、情感分类等

  2. 同步的序列到序列模式:主要用于序列标注任务,即每一时刻都有输入和输出,输入序列和输出序列的长度相同。比如:词性标注、中文分词、信息抽取等

  3. 异步的序列到序列模式:也称编码器-解码器模型,即输入序列和输出序列不需要有严格的对应关系,也不需要保持相同的长度。比如:机器翻译中,输入为源语言的单词序列,输出是目标语言的单词序列。

5. 参数学习

可通过梯度下降的方法进行学习。主要有两种计算梯度的方式:

  1. 随时间反向传播算法(BPTT)
  2. 实时循环学习算法

5.1 随时间反向传播算法(BPTT)

主要思想是通过类似前馈神经网络的反向传播误差来计算梯度。过程如下:

  1. 前向计算激活值:在简单神经网络中提到过
    在这里插入图片描述

  2. 反向传播误差
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 更新参数

    在这里插入图片描述
    在这里插入图片描述

6. RNN的梯度爆炸与消失、长程依赖问题

  1. 梯度爆炸:靠近输入层的网络层,计算的到的偏导数极其大,更新后W变成一个很大的数(爆炸)。
  2. 梯度消失:靠后面网络层(如layer3)能够正常的得到一个合理的偏导数,但是靠近输入层的网络层,计算的到的偏导数近乎零,参数几乎无法得到更新。
  3. 长程依赖问题:RNN并不能很好的处理较长的序列。一个主要的原因是,RNN在训练中很容易发生梯度爆炸梯度消失,这导致训练时梯度不能在较长序列中一直传递下去,从而使RNN无法捕捉到长距离的影响。

那么,如何避免梯度爆炸梯度消失,从而解决RNN的长程依赖问题?
在这里插入图片描述

7. 长短时记忆网络 (LSTM)

在这里插入图片描述
LSTM使用了三个门去控制LSTM的三个输入是否输入:
在这里插入图片描述

门实际上就是一层全连接层,它的输入是一个向量,输出是一个0到1之间的实数向量。
在这里插入图片描述

8. RNN vs CNN vs DNN

  • DNN的代表是全连接神经网络,其层之间是全连接的,层内无连接。主要用于传统的机器学习,进行预测。
  • CNN是卷积神经网络,其层之间是局部连接的,层内无连接。主要用于处理图像分类
  • RNN是循环神经网络,其层之间是全连接的,层内是有连接的。主要用于解决时序数据的,比如语音识别、语言翻译等。
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElegantCodingWH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值