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

文章目录

  • 1. 为什么要使用循环神经网络?
  • 2. 简单循环神经网络
  • 3. 双向循环神经网络
  • 4. 应用到机器学习
  • 5. 参数学习
    • 5.1 随时间反向传播算法(BPTT)
  • 6. RNN的梯度爆炸与消失、长程依赖问题
  • 7. 长短时记忆网络 (LSTM)
  • 8. RNN vs CNN vs DNN

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

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

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

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

  1. 延时神经网络
    【深度学习】第四章:循环神经网络_第1张图片

  2. 自回归模型
    【深度学习】第四章:循环神经网络_第2张图片

  3. 循环神经网络
    【深度学习】第四章:循环神经网络_第3张图片
    RNN主要用于解决输入之间具有时序关系的问题。

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

2. 简单循环神经网络

【深度学习】第四章:循环神经网络_第4张图片

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

3. 双向循环神经网络

【深度学习】第四章:循环神经网络_第5张图片

4. 应用到机器学习

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

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

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

5. 参数学习

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

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

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

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

  1. 前向计算激活值:在简单神经网络中提到过
    【深度学习】第四章:循环神经网络_第6张图片

  2. 反向传播误差
    在这里插入图片描述
    【深度学习】第四章:循环神经网络_第7张图片
    【深度学习】第四章:循环神经网络_第8张图片

  3. 更新参数

    【深度学习】第四章:循环神经网络_第9张图片
    【深度学习】第四章:循环神经网络_第10张图片

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

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

那么,如何避免梯度爆炸梯度消失,从而解决RNN的长程依赖问题?
【深度学习】第四章:循环神经网络_第11张图片

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

【深度学习】第四章:循环神经网络_第12张图片
LSTM使用了三个门去控制LSTM的三个输入是否输入:
【深度学习】第四章:循环神经网络_第13张图片

门实际上就是一层全连接层,它的输入是一个向量,输出是一个0到1之间的实数向量。
【深度学习】第四章:循环神经网络_第14张图片

8. RNN vs CNN vs DNN

  • DNN的代表是全连接神经网络,其层之间是全连接的,层内无连接。主要用于传统的机器学习,进行预测。
  • CNN是卷积神经网络,其层之间是局部连接的,层内无连接。主要用于处理图像分类
  • RNN是循环神经网络,其层之间是全连接的,层内是有连接的。主要用于解决时序数据的,比如语音识别、语言翻译等。

你可能感兴趣的:(#,深度学习,深度学习,rnn)