在反向传播中将所有初始权重设置为零的危险

机器算法验证 神经网络 反向传播
2022-01-31 10:06:02

为什么用零初始化权重很危险?有没有简单的例子来证明它?

4个回答

编辑见下面阿尔法的评论。我不是神经网络方面的专家,所以我会听从他的意见。

我的理解与此处发布的其他答案不同。

我很确定反向传播涉及增加现有权重,而不是相乘。您添加的数量由delta 规则指定。请注意,wij 不会出现在等式的右侧。

我的理解是,至少有两个充分的理由不将初始权重设置为零:

  • 首先,神经网络往往会陷入局部最小值,因此给它们提供许多不同的起始值是个好主意。如果它们都从零开始,你就不能这样做。

  • 其次,如果神经元以相同的权重开始,那么所有神经元将遵循相同的梯度,并且最终总是会彼此做同样的事情。

如果您将权重视为先验,就像在贝叶斯网络中一样,那么您已经排除了这些输入可能影响系统的任何可能性。另一种解释是,反向传播确定了一组权重,它使目标值和观测值 (E) 之间的加权平方差最小化。那么任何梯度下降算法如何在确定系统方向方面进行定向呢?您将自己置于参数空间的鞍点上。

这是一个坏主意,原因有两个:

  1. 如果你有 sigmoid 激活,或者任何那么它会导致权重“一起”移动,限制反向传播的能力来搜索整个空间以找到降低损失/成本的最佳权重.g(0)0

  2. 如果你有或 ReLu 激活,或者的任何东西,那么所有的输出都将为 0,权重的梯度将始终为 0。因此你根本不会有任何学习。tanhg(0)=0

让我们演示一下(为简单起见,我假设最终输出层为 1 个神经元):

前馈:如果所有权重均为 0,则第二层的输入对于所有节点都是相同的。节点的输出将是相同的,尽管它们将乘以下一组权重为 0,因此下一层的输入将为 0 等等。所以所有的输入(除了第一个接受实际输入的层)将为 0,所有输出都将相同(sigmoid 激活为 0.5,和 ReLu 激活为 0)。tanh

反向传播:让我们只检查最后一层。最终损失 ( ) 取决于网络的最终输出 (,其中 L 表示最后一层),这取决于激活前的最终输入 (),这取决于最后一层的权重()。现在我们要找到: 是成本函数的导数,是激活函数的导数。不管他们(LaLzL=WLaL1WL

dWL:=LWL=LaLaLzLzLWL
LaazLaaz ) 值是,简单地等于上一层输出,即到,但由于它们都是相同的,你会得到最终结果是一个所有元素都相等的向量。因此,当您更新时,它将朝相同的方向移动。前几层也是如此。zWaL1dWLWL=WLαdWL

第 2 点可以从将等于零的事实证明。因此,您的向量将充满零,并且无法实现学习。aL1dWL

在反向传播算法的每次迭代中,您将通过将现有权重乘以反向传播确定的增量来更新权重。如果初始权重值为 0,则将其乘以 delta 的任何值都不会改变权重,这意味着每次迭代对您尝试优化的权重没有影响。