DL——关于参数的初始化


为什么参数不能初始化为全0?

  • 因为此时会导致同一隐藏层的神经元互相对称,可以通过递推法证明,不管迭代多少次,此时所有的神经元都将计算完全相同的函数
  • 并不会因为参数都为0就导致所有神经元死亡!

为什么参数不能初始化为太大的数值?

  • 因为参数太大会导致sigmoid(z)或tanh(z)中的z太大,从而导致梯度太小而更新太慢

  • 如果网络中完全没有sigmoid和tanh等激活函数,那就还好,但是要注意,二分类中使用sigmoid函数于输出层时也不应该将参数初始化太大

  • 单层隐藏层的神经网络一般这样初始化:

    1
    W = np.random.randn((n1, n2)) * 0.01
    • 适用于单层隐藏层神经网络的参数
    • 如果是深层网络则要考虑使用其他常数而不是0.01

神经网络的层数也可当做参数

  • 不是越深越好
  • 一个问题的开始一般从单层网络开始,即Logistic回归开始
  • 逐步加深网络层数,不断测试效果,寻找合适的网络层数即可