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

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

神经网络的参数为什么不能初始化为全零_第1张图片

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

则矩阵  是神经网络的参数为什么不能初始化为全零_第2张图片    

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

神经网络的参数为什么不能初始化为全零_第3张图片

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

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

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

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

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

那么对a求导

神经网络的参数为什么不能初始化为全零_第4张图片

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

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

神经网络的参数为什么不能初始化为全零_第5张图片

那么由链式求导法则知

神经网络的参数为什么不能初始化为全零_第6张图片

所以

由于,所以,根据前面的推导,可知dw[2]的两个分量也是相同的,那么梯度下降更新一次 ,所以

又因为,那么da的两个分量也是相同的,

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

再向前计算一次导数

神经网络的参数为什么不能初始化为全零_第7张图片

神经网络的参数为什么不能初始化为全零_第8张图片

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

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

 

 

 

 

你可能感兴趣的:(Deep,Learning)