如果你使用一个简单的逻辑回归,那么进行随机初始化,或者直接吧所有的权重矩阵置为0那是没有问题的。
但是对于神经网络来说,如果都置为0那么将是不能接受的。
这是因为,如果你的w全是相同的0,那么对于隐层的每个神经单元来说,他们都是计算结果相同的,那么最后输出y hat 后进行反向传播的时候,dz也是一样的。
相当于一个对称的结构了。
正确的随机初始化形式应该是,np.random.randn((i,k))*0.01后面乘以一个很小的数很重要。我们希望随机初始化的数字非常小,但绝不能为0,这样经过激活函数(这里面用tanh)后,会得到一个正常的值,如果w很大,那么z=wx+b这个形式,会落在函数的两端,这样产生的后果就是梯度非常小,如果层比较深,那么梯度下降就非常慢,这样就会让学习很慢。
网友评论