在训练好的神经网络中,权重分布通常会接近于零。因此,我认为将所有权重初始化为零是合理的。然而,像-1到1之间的随机分配和Nguyen-Widrow方法等方法的表现都优于零初始化。为什么这些随机方法比使用零更好呢?
回答:
激活与学习:
除了cr0ss所说的内容外,在一个普通的多层感知器(MLP)中,层n+1的激活是层n的输出与层n和n+1之间权重的点积…所以基本上你会得到层n中神经元i的激活a的这个方程:
其中w是神经元j(父层n-1)与当前神经元i(当前层n)之间连接的权重,o是神经元j(父层)的输出,b是当前层中当前神经元i的偏置。
很容易看出,如果用零初始化权重,实际上会“停用”权重,因为父层输出的权重乘积将等于零,因此(在最初的学习步骤中)你的输入数据将不会被识别,数据将被完全忽略。所以在最初的几个周期中,学习将仅依赖于偏置提供的数据。
这显然会使网络的学习变得更加困难,并大大增加所需的学习周期数。
初始化应针对你的问题进行优化:
用-1 <= w <= 1的随机浮点数分布来初始化权重是最典型的初始化方法,因为总体来说(如果你没有分析你正在处理的问题/领域),这可以保证一些权重从一开始就相对较好。此外,使用固定初始化和随机初始化可以使其他神经元更快地相互适应,从而确保更好的学习。
然而,-1 <= w <= 1的初始化并不适合所有问题。例如:生物神经网络没有负输出,所以当你试图模仿生物网络时,权重应该是正的。此外,例如在图像处理中,大多数神经元要么有相当高的输出,要么几乎不输出。考虑到这一点,通常将权重初始化在0.2 <= w <= 1之间是一个好主意,有时甚至0.5 <= w <= 2也显示出良好的结果(例如在暗图像中)。
因此,正确学习一个问题所需的周期数不仅取决于层、它们的连接性、传输函数和学习规则等,还取决于你的权重初始化。你应该尝试几种配置。在大多数情况下,你可以找出哪些解决方案是合适的(例如,对于处理暗图像,使用更高、正的权重)。