RNN存在的问题:梯度爆炸,长期依赖参数量过大等问题
目录
1.GRU(门控循环单元)
1.1.什么是GRU
1.2.直观理解
1.3.本质解决问题
2.LSTM(长短记忆网络)
2.1.作用
3.结构扩展与效率优化
1.GRU(门控循环单元)
2014年,出现的算法:
论文地址:[1406.1078] Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
1.1.什么是GRU
- GRU增加了两个门,一个重置门(reset gate)和一个更新门(update gate)
- 重置门决定了如何将新的输入信息与前面的记忆相结合
- 更新门定义了前面记忆保存到当前时间步的量
- 如果将重置门设置为 1,更新门设置为 0,那么将再次获得标准 RNN 模型
1.2.直观理解
相当于在网络当中增加了一些记忆的标记,然后对后面预测输出有帮助
The cat,which already ate,…….,was full.
对于上面的句子,was是句子前面的cat来进行指定的,如果是复数将是were。所以之前的RNN当中的细胞单元没有这个功能,GRU当中加入更新门,在cat的位置置位1,一直保留到was时候。
1.3.本质解决问题
原论文中这样介绍:
- 为了解决短期记忆问题,每个递归单元能够自适应捕捉不同尺度的依赖关系
- 解决梯度消失的问题,在隐层输出的地方ht,ht−1的关系用加法而不是RNN当中乘法+激活函数
2.LSTM(长短记忆网络)
- htht:为该cell单元的输出
- ctct:为隐层的状态
- 三个门:遗忘门f、更新门u、输出门o
2.1.作用
便于记忆更长距离的时间状态。
3.结构扩展与效率优化
- 双向RNN(Bi-RNN/Bi-LSTM/Bi-GRU)
- 叠加正向和反向RNN层,同时捕捉过去和未来的上下文信息,适用于NLP任务(如机器翻译)。
- 深层RNN(Stacked RNN)
- 堆叠多层RNN单元(如LSTM/GRU),增强模型表达能力,但需注意梯度问题。
- IndRNN(2018)
- 对神经元独立循环连接,缓解梯度消失,支持更深的网络和更长的序列。