10 RNN
1 RNN和CNN
场景描述
- 传统方法文本分类时,
- 通常将一篇文章所对应的TF-IDF向量作为输入
- 维度是词汇表的大小。
- 用前馈神经网络,如CNN对文本数据建模时,如何操作?
- 用RNN对文本这种带有序列信息的数据进行建模时,
- 相比CNN又会有什么不同?
- 知识点
- RNN,前馈神经网络
处理文本时,CNN与前馈神经网络相比特点?
- 传统一般将TF-IDF向量作为特征输入。
- 丢失了输入的文本序列中每个单词的顺序
- 在神经网络的建模过程中,一般的前馈神经网络,如CNN,通常接受一个定长向量作为输入
- CNN对文本数据建模时,
- 输入变长字符串或者单词串,
- 通过滑动窗口加池化将原先的输入转換成一个固定长度的向量,
- 可捕捉到原文本中的一些局部特征,
- 但两个单词之间的长距离依赖关系还是很难被学到
- RNN能很好地处理文本数据变长并且有序的输入序列。
- 它从前到后阅读文章中的每一个单词,将前面阅读到的有用信息编码到状态变量中,有了ー定的记忆能力,可更好地理解之后的文本。
- 图10.1展示了一个典型的RNN
- 长度为T的序列用RNN建模,展开后看作一个T层的前馈神经网络
- 第层的隐含状态编码了序列中前个输入的信息,
- 可通过当前的输入和上一层神经网络的状态得到
- 最后一层的状态编码整个序列信息
- 可作为整篇文档的压缩表示
- 以此为基础的结构可以应用于多种任务
-
后面直接接一个 Softmax
- 输出文本所属类别的预测概率y,可实现文本分类
- 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梯度可表示成连乘