在神经网络中,权重基本上是要随机初始化的。有以下一些问题
-
权重不能全部设为0
• 每个神经元都有着相同的输出,在反向传播时具有相同的梯度 -
一个神经网络的层中的权重值很小,那么在反向传播的时候就会计算出非常小的梯度(因为梯度与权重值是成比例的)。这就会很大程度上减小反向传播中的“梯度信号
-
解决方案:校准方差,除以1/sqrt(n):
• w = np.random.randn(n) / np.sqrt(n)
• ReLU:w = np.random.randn(n) * np.sqrt(2/n) -
b的初始化
• 通常设为0 (不是1,手动笑,以前一直以为是1,,)
• 有些设为如0.01的小值
• 这样做能让所有的ReLU单元一开始就激活,这样就能保存并传播一些梯度
这里 没有加转载链接,是因为上述文字,我从别人做的ppt上看到的,自己做了一些改动而已,因此没有链接。