随机初始化(Random+Initialization)
当你训练神经网络时,权重随机初始化是很重要的。
对于逻辑回归,把权重初始化为0当然也是可以的。
但是对于一个神经网络,如果你把权重或者参数都初始化为0,那么梯度下降将不会起作用。
让我们看看这是为什么?
有两个输入特征,n([0])=2,2个隐藏层单元n([1])就等于2。 因此与一个隐藏层相关的矩阵,或者说W([1])是2*2的矩阵,假设把它初始化为0的2*2矩阵,b([1])也等于 [0 0]^T,把偏置项b初始化为0是合理的,但是把w初始化为0就有问题了。
那这个问题如果按照这样初始化的话,你总是会发现a_1^([1]) 和 a_2([1])相等,这个激活单元和这个激活单元就会一样。因为两个隐含单元计算同样的函数,当你做反向传播计算时,这会导致dz_1([1]) 和 dz_2([1])也会一样,对称这些隐含单元会初始化得一样,这样输出的权值也会一模一样,由此W([2])等于[0 0];
如果你这样初始化这个神经网络,那么这两个隐含单元就会完全一样,因此他们完全对称,也就意味着计算同样的函数,并且肯定的是最终经过每次训练的迭代,这两个隐含单元仍然是同一个函数,令人困惑。
dW会是一个这样的矩阵&