一、为什么随机初始化
在之前有关梯度下降法的blo中我们讨论了一个系数是如何在一个神经网络中进行迭代的,而一个迭代过程,不知道知道迭代是如何进行的,还要知道,迭代的初值是什么,这节课讨论的就是这个问题。
那既然初始化是必要的,为什么一定要随机呢?
考虑这样一个问题,在一个隐藏层中存在两个神经元,他俩的激活函数相同,那么如果给这俩神经元相同的初值,我们就会发现这来这个神经元是可以轮换的,也就是说不管后面进行了什么操作,只要是针对神经网络的,这两个神经元的变化必然是一样的。若果不一样显然矛盾,这里不加证明。那么也就是说我们的这两个神经元在神经网络计算的任意时刻始终是相等的。
从这个结论出发,我们发现如果一个神经网络中有两个神经元是一模一样的,那么这两个神经元完全可以合并成同一个神经元,因此,我们不应该让一个神经网络中有相同的神经元,也就是说我们不能给两个神经元相同的初始化的值
二、如何随机初始化
我们在给初值的时候,用一个随机数然后乘上0.01作为w的初始值,这也被成为破坏对称性问题。
为什么是随机数,主要是这样可以使得我们最后得到的初值是一定不一样的,从上面的分析中我们不难得到一个推论——不同的初值所对应的神经元跑出来的结果是不相同的,因此这样可以保证我们的每个神经元是独立的。
而乘上0.01的原因主要是是的最终的值可以集中在0的附近,这样我们在做比如sigmiod函数的时候,一开始就能有一个很好的斜率,这可以使得我们开始时的学习效率更优。