随机初始化(Random+Initialization)

当你训练神经网络时,权重随机初始化是很重要的,如果你把权重或者参数都初始化为 0,那么梯度下降将不会起作用,是如果你这样初始化这个神经网络,那么这两个隐含单元就会完全一样,因此他们完全对称,也就意味着计算同样的函数,并且肯定的是最终经过每次训练的迭代,这两个隐含单元仍然是同一个函数,令人困惑。因此,应该这么做:w[1] 设 为np.random.randn(2,2)(生成高斯分布),通常再乘上一个小的数,比如 0.01,这样把它初始化为很小的随机数。然后b没有这个对称的问题(叫做 symmetry breaking problem),所以可以把 b 初始化为 0,因为只要随机初始化w你就有不同的隐含单元计算不同的东西,因此不会有 symmetry breaking 问题了。相似的,对于w[2]你可以随机初始化,b[2]可以初始化为 0。

 随机初始化(Random+Initialization)_初始化

这个常数从哪里来,为什么是 0.01,而不是 100 或者 1000,我们通常倾向于初始化为很小的随机数,事实上有时有比 0.01 更好的常数,当你训练一个只有一层隐藏层的网络时(这是相对浅的神经网络,没有太多的隐藏层),设为 0.01 可能也可以,但当你训练一个非常非常深的神经网络,你可能会选择一个不同于的常数而不是 0.01。


作者:zhang-X​,转载请注明原文链接​