我已经阅读了几篇博客文章,其中建议解决深度神经网络中梯度消失/爆炸问题的解决方案是使用Relu 激活函数而不是tanH和sigmoid。
但是,我遇到了Andrew NG 教授讲座的解释,它解释了消失梯度问题的部分解决方案是更好或更仔细地选择神经网络中权重的随机初始化。
即解决方案是:
将 Wi 的方差设置为等于 1/n,其中 n 是进入神经元的输入特征的数量。除了假设激活的输入特征大致为 0 和标准方差为 1。所以,它正在尝试设置每个权重矩阵 w,使其不会比 1 大太多,也不会太小比 1,因此,它不会爆炸或消失太快。
- 因此,如果您使用ReLu 激活函数,则将 Wi 的方差设置为等于
sqrt(2/n)
效果更好**。 - 如果您使用的是TanH 激活函数,则将 Wi 的方差设置为等于
sqrt(2/n)
效果更好。 - 或者在某些情况下,建议使用Xavier 初始化
- 此外,如果我们需要,我们可以
variance parameter
通过乘以上述公式将其调整为另一个超参数,并将该乘数调整为超参数搜索的一部分。
因此,为如何初始化权重选择一个合理的缩放比例有助于权重不会太快爆炸,也不会太快衰减到零,这反过来又有助于训练一个合理的深度网络,而不会导致权重或梯度过度爆炸或消失,不仅仅是使用 ReLu!。如果我的理解有误或不完整,请纠正我!