【初始化为0】深度学习为啥不能初始化为0以及初始化为0的各种情况表现

时间:2024-04-05 15:21:30

定义神经网络

首先,针对一个四层的神经网络如下图,不同情况下进行0初始化;【初始化为0】深度学习为啥不能初始化为0以及初始化为0的各种情况表现【初始化为0】深度学习为啥不能初始化为0以及初始化为0的各种情况表现【初始化为0】深度学习为啥不能初始化为0以及初始化为0的各种情况表现

1、权重w和偏差b全部初始化为0

如果权重w和偏差b全部被初始化为0,则first hidden layer到output layer第一次计算全部为0;然后,再进行权重和偏差使用梯度下降算法更新时,
【初始化为0】深度学习为啥不能初始化为0以及初始化为0的各种情况表现
因为q为0,所以权重更新时变化量为0,但是偏差有所变化,而且每个偏差都不同,再次进行计算时所有层的输出结果理论上不再为0;那么是可以继续进行计算,其中权重和偏差也是可以继续进行更新,也就是神经网络是可以继续进行训练出有用的权重和偏差的!

2、权重为0,偏差不为0

此时就相当于上面那种情况权重和偏差均为0进行训练时,少训练一层而已,因为在第一种情况权重偏差迭代更新到第二次的时候,就是权重为0,偏差不为0的情况。仍然是可以进行正常的神经网络训练的。

3、模型中只有权重,不设偏差

这里首先要区别一下没有偏差和偏差为0,没有偏差是在建立模型时,完全不设偏差这一项,而偏差为0是模型中设置偏差,并在训练神经网络中会进行偏差的迭代更新,不论偏差是否一直为0,我们会使用sgd算法进行计算偏差的。
那么,如果没有偏差,权重初始化为0,则每层输出均为0(除了输入层),在进行权重迭代更新时,权重的变化量仍然为0,权重得不到更新,也就不会训练出有效的权重。

4、其他各种情况均可以正常进行神经网络的训练