原因主要涉及到神经网络学习的机制和效率。
1. 对称性破坏:如果所有权重都初始化为0,那么在前向传播和反向传播的过程中,每一层的所有神经元将接收到相同的输入和梯度更新,导致它们更新后的权重依然相同。这种情况下,无论网络有多少层或多少神经元,每一层的所有神经元都会执行相同的操作,相当于网络没有多个神经元的学习能力。因此,为了打破这种对称性,必须用随机值初始化权重,以确保神经网络能够学习到更丰富的特征。
2. 激活函数的非线性:大多数神经网络中使用的激活函数都是非线性的。如果权重初始化为0,那么无论输入数据如何,激活函数的输入总是0,这将使得激活函数的输出在一开始是固定值,从而无法通过梯度下降进行有效的学习。
3. 梯度消失或爆炸:即使能够通过某种方式打破对称性,从0开始的权重也容易导致梯度消失或爆炸的问题。因为在反向传播过程中,接近0的权重会导致梯度也接近0,使得权重难以更新(梯度消失);或者相反,使得梯度过大,导致权重更新过快,网络不稳定(梯度爆炸)。
4. 学习效率:从非零的小随机数开始,可以帮助神经网络更快地收敛。随机初始化权重提供了一个良好的起点,使得梯度下降算法能够有效地探索参数空间,寻找到减少损失函数的路径。