为什么参数不能初始化为全0?
- 因为此时会导致同一隐藏层的神经元互相对称,可以通过递推法证明,不管迭代多少次,此时所有的神经元都将计算完全相同的函数
- 并不会因为参数都为0就导致所有神经元死亡!
为什么参数不能初始化为太大的数值?
因为参数太大会导致sigmoid(z)或tanh(z)中的z太大,从而导致梯度太小而更新太慢
如果网络中完全没有sigmoid和tanh等激活函数,那就还好,但是要注意,二分类中使用sigmoid函数于输出层时也不应该将参数初始化太大
单层隐藏层的神经网络一般这样初始化:
1
W = np.random.randn((n1, n2)) * 0.01
- 适用于单层隐藏层神经网络的参数
- 如果是深层网络则要考虑使用其他常数而不是
0.01
神经网络的层数也可当做参数
- 不是越深越好
- 一个问题的开始一般从单层网络开始,即Logistic回归开始
- 逐步加深网络层数,不断测试效果,寻找合适的网络层数即可