神经网络的参数为什么不能初始化为全零

训练神经网络时,随机初始化权重非常重要。对于Logistic回归,可以将权重初始化为零,但如果将神经网络的各参数全部初始化为0,再使用梯度下降法,这样将会完全无效。

神经网络的参数为什么不能初始化为全零

如图所示,这是一个简单的两层神经网络(输入层是第0层),如果将所有的w矩阵和b向量都初始为全0

则矩阵神经网络的参数为什么不能初始化为全零  是神经网络的参数为什么不能初始化为全零神经网络的参数为什么不能初始化为全零神经网络的参数为什么不能初始化为全零     神经网络的参数为什么不能初始化为全零神经网络的参数为什么不能初始化为全零

将偏置项b初始化为0实际上是可行的,但把W初始化成全零就成问题了,它的问题在于给神经网络输入任何的样本,隐藏层的两个单元都是相同的值,由于每个**单元的计算公式如下,([i]表示第i层,w表示权重矩阵,x表示训练样本,b表示偏置项向量,a表示**后的值)

神经网络的参数为什么不能初始化为全零

由于w[1]是全0矩阵(维度是2x2),所以

神经网络的参数为什么不能初始化为全零

然后在相同的**函数作用后,得

神经网络的参数为什么不能初始化为全零

所以这两个隐藏单元其实在进行相同的计算,它们在做一样的事情。

又因为w[2]也是全0的矩阵(维度是1x2),所以

神经网络的参数为什么不能初始化为全零

现在的Loss function(损失函数)为

神经网络的参数为什么不能初始化为全零

那么对a求导

神经网络的参数为什么不能初始化为全零

为了便于说明问题,这里假设输出层的**函数是sigmoid函数,即

神经网络的参数为什么不能初始化为全零

g(z)代表**函数作用在z之后的值,所以g(z)=a,所以

神经网络的参数为什么不能初始化为全零

那么由链式求导法则知

神经网络的参数为什么不能初始化为全零

所以

神经网络的参数为什么不能初始化为全零

由于神经网络的参数为什么不能初始化为全零,所以神经网络的参数为什么不能初始化为全零,根据前面的推导,可知dw[2]的两个分量也是相同的,那么梯度下降更新一次神经网络的参数为什么不能初始化为全零 ,所以

神经网络的参数为什么不能初始化为全零

又因为神经网络的参数为什么不能初始化为全零,那么da的两个分量也是相同的,神经网络的参数为什么不能初始化为全零

所以dz[1]的两个分量是相同的

再向前计算一次导数

神经网络的参数为什么不能初始化为全零

神经网络的参数为什么不能初始化为全零

u,v只是变量记号,结果表明每个单元的节点的权重是一样的,即权重矩阵的每一行是相同的。

一直这样迭代下去,神经网络的每一次正向和反向传播,隐藏层的每个**单元其实都在计算同样的东西,其实也就是一个"对称网络",这种网络无法学习到什么有趣的东西,因为每个隐藏层的**单元都在计算同样的东西,那么隐藏层其实相当于只有一个单元,所以这个神经网络其实可以简化为logistic回归,因此神经网络的W参数矩阵不能随机初始化为0。