NNDL 作业10:第六章课后题(LSTM | GRU)

目录

习题6-3 当使用公式(6.50)作为循环神经网络得状态更新公式时,分析其可能存在梯度爆炸的原因并给出解决办法.

习题6-4 推导LSTM网络中参数的梯度,并分析其避免梯度消失的效果

习题6-5 推导GRU网络中参数的梯度,并分析其避免梯度消失的效果

附加题 6-1P 什么时候应该用GRU? 什么时候用LSTM?


习题6-3 当使用公式(6.50)作为循环神经网络得状态更新公式时,分析其可能存在梯度爆炸的原因并给出解决办法.

原因:6.50公式为:

h(t)=h(t-1)+g(x_{t},h_{t-1},\theta )

若使用z_{k}=Uh_{k-1}+Wx_{k}+b作为k时刻g(·)的输入,计算误差项\varrho _{tk}=\frac{\delta L_{t}}{Z_{k}}时,梯度可能会过大,从而导致梯度爆炸问题.

解决方法:

1.梯度剪切这个方案主要是针对梯度爆炸提出的,其思想是设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。这可以防止梯度爆炸。

2.采用权重正则化,如果发生梯度爆炸,那么权值就会变的非常大,通过正则化项来限制权重的大小,也可以在一定程度上防止梯度爆炸的发生。
 

习题6-4 推导LSTM网络中参数的梯度,并分析其避免梯度消失的效果

LSTM单元有4个不同的组件。忘记门、输入门、输出门和单元状态。

NNDL 作业10:第六章课后题(LSTM | GRU)_第1张图片

 前向传播推导

NNDL 作业10:第六章课后题(LSTM | GRU)_第2张图片

门的计算公式

NNDL 作业10:第六章课后题(LSTM | GRU)_第3张图片

NNDL 作业10:第六章课后题(LSTM | GRU)_第4张图片

ref

https://blog.csdn.net/weixin_30709179/article/details/112241460

LSTM缓解梯度消失的原因

NNDL 作业10:第六章课后题(LSTM | GRU)_第5张图片

1.cell state传播函数中的“加法”结构确实起了一定作用,它使得导数有可能大于1;
2.LSTM中逻辑门的参数可以一定程度控制不同时间步梯度消失的程度。 

习题6-5 推导GRU网络中参数的梯度,并分析其避免梯度消失的效果

GRU单元结构如下图所示

NNDL 作业10:第六章课后题(LSTM | GRU)_第6张图片

其中:

NNDL 作业10:第六章课后题(LSTM | GRU)_第7张图片

对参数计算梯度

NNDL 作业10:第六章课后题(LSTM | GRU)_第8张图片

得到

NNDL 作业10:第六章课后题(LSTM | GRU)_第9张图片

LSTM和GRU里面都存储了一个中间状态,并把中间状态持续从前往后传,和当前步的特征合并来做预测,合并过程用的是加法模型,这点其实和ResNet的残差模块有点类似。

附加题 6-1P 什么时候应该用GRU? 什么时候用LSTM?

这里归纳一下 LSTM 与 GRU 的区别:

  • 首先, LSTM 选择暴露部分信息( ht 才是真正的输出, ct 只是作为信息载体,并不输出), 而GRU 选择暴露全部信息。
  • 另一个区别在于输出变化所带来的结构调整。为了与LSTM的信息流保持一致,重置门本质上是输出门的一种变化,由于输出变了,因此其调整到了计算 ht′ 的过程中。

对于 LSTM 与 GRU 而言, 由于 GRU 参数更少,收敛速度更快,因此其实际花费时间要少很多,这可以大大加速了我们的迭代过程。 而从表现上讲,二者之间孰优孰劣并没有定论,这要依据具体的任务和数据集而定,而实际上,二者之间的 performance 差距往往并不大,远没有调参所带来的效果明显,与其争论 LSTM 与 GRU 孰优孰劣, 不如在 LSTM 或 GRU的激活函数(如将tanh改为tanh变体)和权重初始化上功夫。

一般来说,我会选择GRU作为基本的单元,因为其收敛速度快,可以加速试验进程,快速迭代,而我认为快速迭代这一特点很重要,如果实现没其余优化技巧,才会尝试将 GRU 换为 LSTM。

你可能感兴趣的:(lstm,gru,深度学习)