美文网首页
Day 3: 参数初始化

Day 3: 参数初始化

作者: andyjkt | 来源:发表于2019-11-17 11:15 被阅读0次

    神经网络参数初始化

    神经网络结构图

    神经网络的参数主要是权重(weights):W, 和偏置项(bias):b

    1) 0初始化

    不管是哪个神经元,它的前向传播和反向传播的算法都是一样的,如果初始值也一样的话,不管训练多久,它们最终都一样,都无法打破对称(fail to break the symmetry),那每一层就相当于只有一个神经元,最终L层神经网络就相当于一个线性的网络,如Logistic regression

    因此,我们决不能把所有参数初始化为0,同样也不能初始化为任何相同的值,因为我们必须“打破对称性”

    2)随机初始化

    b不用随机初始化,因为w随机之后,已经打破对称,b就一个常数,无所谓了

    random.rand()是在0~1之间随机,random.randn()是标准正态分布中随机,有正有负

    np.zeros(())这里是两个括号,random.randn()是一个括号

    sigmoid函数

    (1)放大版随机初始化(w*10)

    效果不好,因为sigmoid函数中间的斜率大,两边的斜率小还趋于零。所以当我们把随机的值乘以10了之后,我们的初值会往两边跑,那么我们的梯度下降就会显著变慢,可能迭代半天,才下降一点点

    (2)缩小版随机初始化(w/10)

    我们把w都除以10,实际上就接近0了,深度学习中我们认为参数越大,模型越复杂;参数越小,模型越简单。所以除以10之后,参数太小了,模型就too simple了,效果当然不好。

    3) 何氏初试法(He Initialization)

    在我们随机初始化了之后,乘以

    ,这样就避免了参数的初始值过大或者过小

    W = np.random.randn(num_of_dim[l],num_of_dim[l-1])*np.sqrt(2/num_of_dim[l-1]) # W的维度是(当前层单元数,上一层单元数)

    推荐针对使用ReLU激活函数的神经网络使用的

    4) Xavier Initialization

    推荐给sigmoid的Xavier Initialization


    参考文献

    相关文章

      网友评论

          本文标题:Day 3: 参数初始化

          本文链接:https://www.haomeiwen.com/subject/kunyictx.html