循环神经网络
- 绪论
基本应用:语音问答、机器翻译、股票预测、作词、模仿论文代码、图像理解、视觉问答
核心:具有上下文关系
RNN与CNN的区别:CNN输入与输出之间相互独立,输出只考虑当前需要判断的图片,不会考虑前两个图片的判断结果;RNN更好的处理时序关系的任务,引入“记忆”,输出不仅依赖于输入,还依赖“记忆”,将同一个结构循环利用。
- 基本结构
两种输入:正常的输入与记忆单元一起作为输入
两种输出:正常的输出和输出到记忆单元的值
一种函数:中间运算
- BPTT算法
- 传统RNN的问题
梯度爆炸的问题:模型训练不稳定,梯度变为Nan。
改进:权重衰减、梯度截断
梯度消失的问题:长时依赖问题,随着时间间隔的增大,RNN会丧失学习远距离信息的能力。
改进:改进模型,LSTM、GRU
- LSTM
遗忘门:
输入门:
Ct:
输出门:
RNN的“记忆”在每个时间点都会被新的输入覆盖,但LSTM中“记忆”是与新的输入相加。
LSTM初始化时将输出门bias置为正数(1或5),这样模型刚开始训练时遗忘门的值接近于1,不会发生梯度消失。
LSTM如何来避免梯度消失?
RNN 所谓梯度消失的真正含义是,梯度被近距离梯度主导,导致模型难以学到远距离的依赖关系。只要保证有一条远距离路径梯度不消失,总的远距离梯度就不会消失。因此 LSTM 通过改善一条路径上的梯度问题拯救了总体的远距离梯度。
- GRU
重置门:控制忽略前一时刻的状态信息的程度,重置门越小说明忽略的越多。
更新门:控制前一时刻的状态信息被带入到当前状态中的程度,更新门值越大表示前一时刻的状态信息带入越多。
可以防止梯度消失。
- 基于attention的RNN