10 RNN

1 RNN和CNN

场景描述

  • 传统方法文本分类时,
  • 通常将一篇文章所对应的TF-IDF向量作为输入
    • 维度是词汇表的大小。
  • 用前馈神经网络,如CNN对文本数据建模时,如何操作?
  • 用RNN对文本这种带有序列信息的数据进行建模时,
    • 相比CNN又会有什么不同?

  • 知识点
    • RNN,前馈神经网络

处理文本时,CNN与前馈神经网络相比特点?

  • 传统一般将TF-IDF向量作为特征输入。
    • 丢失了输入的文本序列中每个单词的顺序
  • 在神经网络的建模过程中,一般的前馈神经网络,如CNN,通常接受一个定长向量作为输入
  • CNN对文本数据建模时,
    • 输入变长字符串或者单词串,
    • 通过滑动窗口加池化将原先的输入转換成一个固定长度的向量,
    • 可捕捉到原文本中的一些局部特征,
    • 但两个单词之间的长距离依赖关系还是很难被学到

  • RNN能很好地处理文本数据变长并且有序的输入序列。
  • 它从前到后阅读文章中的每一个单词,将前面阅读到的有用信息编码到状态变量中,有了ー定的记忆能力,可更好地理解之后的文本。
  • 图10.1展示了一个典型的RNN

10 RNN

  • 长度为T的序列用RNN建模,展开后看作一个T层的前馈神经网络
  • tt层的隐含状态hth_t编码了序列中前tt个输入的信息,
    • 可通过当前的输入xtx_t和上一层神经网络的状态ht1h_{t-1}得到
  • 最后一层的状态hTh_T编码整个序列信息
    • 可作为整篇文档的压缩表示
    • 以此为基础的结构可以应用于多种任务
  • hTh_T后面直接接一个 Softmax
    • 输出文本所属类别的预测概率y,可实现文本分类

10 RNN

  • f和g为**函数
  • U为输入层到隐含层权重矩阵
  • W为隐含层从上一时刻到下一时刻状态转移的权重矩阵
  • 文本分类中,f可Tanh或者ReLU,
    • g可 Softmax

  • 最小化损失误差(即输出的y与真实类别之间的距离),
  • 可不断训练网络,使得得到的循环神经网络可以准确地预测文本所属
    的类别
  • 相比CNN等前馈神经网络,RNN由于具备对序列顺序信息的刻画能力,往往能得到更准确

2 RNN的梯度消失问题

场景描述

  • 89年,Lecun已提出基于BP的CNN Lenet,
    • 将其用于数字识别,取得良好效果
  • Lenet当时并没取得广泛关注与重视,
    • 也少有人接着这项工作继续研究,提出更新颖的模型
  • 深度神经网络模型
    • 缺乏严格的数学理论支持,
    • 80年代未,这股浪潮便淅渐退去

  • 91年,深度学习冰点
  • 这年,BP被指出Gradient Vanishing
    • 梯度反向传播过程中,后层梯度以连乘方式叠加到前层
  • **函数一般都Sigmoid,有饱和特性
    • 在输入达到一定值,输出就不明显变化
  • 后层梯度本来就较小,误差梯度反传到前层时几乎为0,
    • 无法对前层的参数有效学习
  • RNN是否同样存在梯度消失?

  • 知识点
  • 梯度消失,梯度爆炸

RNN为什么会梯度消失或梯度爆炸?哪些改进?

  • RNN的求解
    • Back Propagation Through Time
    • 实际是BP的简单变种
  • 将RNN按时间展开成T层的前馈神经网络,
    • 就和普通的反向传播算法没什么区别
  • RNN的设计初衷之一:
    • 能够捕获长距离输入之间的依赖。
    • 结构上看,RNN也理应能做到
  • 用BPTT算法学习的循环神经网络不能成功捕捉到长距离的依赖,
    • 源于深度神经网络中的梯度消失。
  • 传统的RNN梯度可表示成连乘

10 RNN