我读到这个:
为了训练我们的神经网络,我们将每个参数W(l)ijWij(l)和每个b(l)ibi(l)初始化为接近零的小随机值(根据Normal(0,ϵ2)Normal(0 ,ϵ2)分布一些小ϵϵ,例如0.01)
从斯坦福大学深度学习教程 在第7款的BP算法
我不明白的是为什么权重或偏差的初始化应该在0左右?
我读到这个:
为了训练我们的神经网络,我们将每个参数W(l)ijWij(l)和每个b(l)ibi(l)初始化为接近零的小随机值(根据Normal(0,ϵ2)Normal(0 ,ϵ2)分布一些小ϵϵ,例如0.01)
从斯坦福大学深度学习教程 在第7款的BP算法
我不明白的是为什么权重或偏差的初始化应该在0左右?
Answers:
假设数据归一化比较合理,则权重的期望值应为零或接近零。因此,将所有初始权重都设置为零可能是合理的,因为如果初始权重实际上应该是负权重,那么正负权重还会进一步增加,反之亦然。但是,这不起作用。如果所有权重都相同,则它们都将具有相同的误差,并且该模型将不会学习任何东西-神经元之间没有不对称的来源。
相反,我们可以做的是使权重非常接近零,但通过将其初始化为较小的非零数字来使权重不同。这是您链接的教程中建议的内容。它具有全零初始化的相同优势,因为它接近“最佳猜测”期望值,但对称性也已被破坏,足以使算法起作用。
这种方法还有其他问题。较小的数字不一定会更好地工作,特别是在神经网络较深的情况下。反向传播中计算出的梯度与权重成正比;极小的权重导致极小的梯度,并且可能导致网络花费大量,更长的时间来训练或永远无法完成。
如果将其设置为0,它们都将具有相同的错误,因此backprop会使它们都相等;因此,您应该进行随机初始化。
为什么在0左右?我认为这篇文章可能会很好地回答:https://stats.stackexchange.com/questions/47590/what-are-good-initial-weights-in-a-neural-network