为何不可将神经网络的参数全都初始化成0?

为何不可将神经网络的参数全都初始化成0?

证明如下:

 

如图所示。所以其实可以看出,当你把所有参数都初始化为0的时候,同一hidden layer的参数的更新幅度是一样的。又因为它们的初值也一样(都是0),所以导致隐藏层的参数永远一样,这就意味着你同一隐藏层每个神经元输入一样、经过同样的sigmoid激活,又得到一样的输出(设a4=a5=a),然后再乘以一样的参数。对于图中x4、x5组成的hidden layer而言,由于w64=w65=w,所以可将w提出来,即

$$x_6 = w_{64}a_4 + w_{65}a_5 = w(a_4+a_5) = w*a*2$$

所以,看到了吧。你同一个隐藏层里即使有n个神经元,其作用也只不过是相当于在输出结果上乘以了“n”。这样的情况在每个隐藏层都会出现,每个隐藏层都退化成一个神经元,那么结果就和线性回归没什么区别了。

 

再进一步更确切地说,其实你只需将第一层input layer的参数(本例中为[w41,w42,w43,w51,w52,w53])都设为0,然后将后续每层隐藏层的参数都设成同一个数(不一定都是0),就可以造成这种,输入都一样,经一样的激活函数激活得到一样的输出,再乘以一样的权重传递给下一个hidden layer一样的值只有的效果。这肯定是你不想要的。

仔细想想,这种情况到底是怎么产生的呢?其实还是因为“0”这个奇妙的数字——是谁,可以让不同的input,乘以它之后,全都变得一样呢?只有0能做到,这也是0的威力。所以我们以后初始化的时候,还是离“0”远一点为妙呀!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_illusion_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值