1、简单介绍一下RNN,LSTM,GRU
RNN,Recurrent Neural Networks,循环神经网络。RNN有短期记忆问题,无法处理很长的输入序列。由于在训练的过程中,会用误差的反向传播,基于链式法则,梯度一层层的传递下去,假如每层的梯度都比较小,趋向于0,难么n层相乘就会无限趋向于0,这就是梯度消失。反之,如果每层的梯度都很大,那么n层相乘就会趋向于正无穷,这就是梯度爆炸。
LSTM,Long Short Term Memory,长短时记忆模块。它的出现就避免(不是完全解决,只是优化)了梯度消失和梯度爆炸的问题。LSTM有三个门,输入、输出、遗忘门。
GRU,Gated Recurrent Unit,门控循环单元。GRU有两个门,更新门与重置门。
LSTM | GRU |
---|---|
输入门:决定何时让输入进入细胞单元; | 更新门:控制当前状态需从上一时刻中保留多少信息,从候选状态中接受多少信息 |
输出门:决定何时让记忆流入下一时刻 | 重置门:控制候选状态的计算是否依赖上一时刻 |
遗忘门:决定何时应该记住前一时刻的信息 |
2、还有哪些解决梯度消失和梯度爆炸的方法?
- LSTM的门结构。
- 选择relu激活函数,替代sigmoid函数。因为sigmoid函数的导数的最大值就是1/4,越乘越小。详细的可以见问题3.
- 预训练与微调:采取无监督逐层训练方法,其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此过程就是逐层“预训练”(pre-training);在预训练完成后