交叉熵损失函数(RNN为什么会梯度消失)

2022-09-24 09:27

梯度消失/梯度爆炸的问题不仅仅是RNN有,而是深度神经网络所面临的问题。 这里简单地介绍一下RNN和RNN梯度消失的原因。

RNN

RNN是循环神经网络的英文缩写(也是递归神经网络的英文缩写)。

RNN模型如下图所示


展开后就是



RNN的损失



贯穿一个序列中每一个元素,Wa,ba,Wy,by都是被共享的,所以交叉熵损失是



RNN的梯度消失

当RNN处理长序列的时候,通常会出现梯度消失的问题。

让我们来借助一个例子处理这个问题。假设我们正在处理语言建模问题,尝试学习两个系列:

"The cat, which already ate ........................, was full"

"The cats, which already ate ........................, were full"

这里我们需要学习的是,"was"搭配"cat","were"搭配"cats"。

普通的RNN会很难获得它们的关系。要计算单词"was",我们需要计算之后所有单词的梯度。



乘以分数往往会使梯度消失,而乘以大的数目会导致梯度爆炸。这时候有一些的权重可能没有被更新。 正如深度网络一样,很容易发生梯度消失问题。

在深层网络(反向传播)中,想要计算前面(某一层)的权重,需要计算在它之后所有层的权重,这会导致梯度消失。处理长序列的RNN也会发生类似的问题。

RNN梯度消失/梯度爆炸的对策

梯度爆炸的解决方案

  • 截断反向传播。在反向的途中不更新所有权重, 不是最佳的,所有权重都不更新。
  • 梯度裁剪。

梯度消失问题的解决方案

  • 权重初始化,比如HE初始化。
  • 回声状态网络(ECS)。
  • 使用LSTM/GRU网络。

参考

个人网站博客:https://www.soaringroad.com/result/category/DeepLearning.ai

最后

根据所学的DeepLearning.ai发表一下见解,抛砖引玉,欢迎大家讨论。

上一篇:16进制颜色(亮银色的Rgb值是多少)
下一篇:解决问题的方法和步骤(我们在处理问题时如何克服思维僵化)
图文资讯
返回顶部小火箭