神经网络中怎么解决梯度消失问题

在深度网络中,网络参数的学习是通过反向传播的链式求导法则来求 Loss 对某个参数 的偏导数,然后进行参数更新的。因此造成梯度消失的原因主要有两个:1.当网络层 数很深,而当前的参数所在层又靠近网络的输入时,求导链就会非常长;2.如果其中的某些中间结果的值很小,并经过链式的累成作用,最终求得的梯度值就会接近于零,而导致参数得不到更新。

 可通过以下方法解决梯度消失的问题:

1. 选用合适的激活函数。比如 ReLU 或者 Leaky ReLU。因为像 Sigmoid 和 Tanh 这样的激活函数,会出现比较大的梯度饱和区域,使得梯度的取值接近于 0。

2. 采用 Batch Normalization 层,对网络中计算得到中间值进行归一化,使得中 间计算结果的取值在均值为 0,方差为 1 这样的分布内。那么此时,在 sigmoid 和 tanh 中,函数取值处于中间变化较大的部分,梯度取值也相对较大,从而 可以防止过拟合。

3. 使用残差结构,残差结构相当于给靠近输入端的网络层提供了一个与靠近输出 端层的直连操作。在反向传播计算时,减少了梯度传播的路径长度,以缓解梯 度消失的问题。

4. 在 RNN 网络中,可以通过使用 LSTM(long-short term memory networks)长 短时记忆网络,来解决信息遗忘和梯度传播的问题

你可能感兴趣的:(深度学习,神经网络,深度学习)