自问自答2——深度学习中梯度消失/爆炸为什么是一个问题?(待完善)

来源:互联网 发布:阿里云服务器重启 编辑:程序博客网 时间:2024/05/21 14:56

我们知道SGD只是用来求解优化问题的一种方法:沿着负梯度方向找到损失最小值。所以SGD的核心就是计算梯度以得到参数更新。而在深层神经网络中,反向传播时很容易发生梯度消失或者梯度爆炸的问题,尤其是RNN网络中。我们认为这两种情况是非常危险的,要极力避免。
无论梯度消失或者梯度爆炸,这些梯度仍旧指引着使得损失减小的参数方向(梯度的大小是否包含了期望更新的大小?)。那为什么要把梯度消失或者梯度爆炸看做一个问题呢?

首先梯度消失/爆炸意味着上层参数梯度是正常范围内,底层参数梯度绝对值极小或者极大。
当梯度爆炸时,部分参数梯度过大时,此时这部分更新会非常大,那么好了,参数不知道跳到哪里去了,之前学习的白学了。梯度爆炸的问题显而易见,我们不希望任何参数在训练的整个过程中梯度过大。
但是当梯度消失时,部分参数梯度接近0,关于这部分参数我们学不了任何东西。但是这并不妨碍在损失-参数图上朝着比当前位置好的地方移动。所以梯度消失之所以是一个问题,是因为梯度消失现象出现意味着我们在损失-参数图的一个bad位置(附近的极小值不是好极小值)吗?
发生梯度消失的情况时,损失-参数图到底位于什么样的位置?

回答:梯度消失现象出现,确实反映出我们位于一个bad位置,但并不是因为附近的极小值不是好的极小值,而是因为当前位置参数中部分梯度为0,部分有梯度,而且在学习过程中很有可能一直处于类似位置。这种情况下,即使可以到达一个比较好的损失位置,我们也得承认一部分参数没有任何更新,即没有学到任何有用的东西。
但是训练的目的是使得损失尽可能地小,而不是学习长时依赖。梯度消失情况下训练得到的模型的损失会比没有梯度消失的训练得到的模型的损失更大吗?预期结果:是。因为能学习到长时依赖的模型性能应该会好一点。


阅读全文
0 0
原创粉丝点击