为什么非零中心激活函数在反向传播中是个问题?

机器算法验证 神经网络 深度学习 反向传播
2022-01-24 14:14:15

我在这里读到以下内容:

  • Sigmoid 输出不是以零为中心的这是不可取的,因为神经网络中后续处理层中的神经元(稍后会详细介绍)将接收非零中心的数据。这对梯度下降过程中的动力学有影响,因为如果进入神经元的数据总是正的(例如 elementwise )),那么在反向传播期间权重 的梯度将变为全部为正,或全部为负(取决于整个表达式 x>0f=wTx+bwf)。这可能会在权重的梯度更新中引入不希望的锯齿形动态。但是,请注意,一旦将这些梯度在一批数据中相加,权重的最终更新可能会有不同的符号,从而在一定程度上缓解了这个问题。因此,这是一个不便,但与上述饱和激活问题相比,它的后果较轻。

为什么所有上的全正或全负梯度x>0w


1个回答

f=wixi+b
dfdwi=xi
dLdwi=dLdfdfdwi=dLdfxi

因为,梯度具有相同的符号(全部为正或全部为负)。xi>0dLdwidLdf

更新
假设有两个参数如果两个维度的梯度总是相同的符号(即要么都是正的,要么都是负的),这意味着我们在参数空间中只能大致向东北或西南方向移动。w1w2

如果我们的目标恰好在西北方向,我们只能以之字形的方式移动才能到达那里,就像在狭窄的空间中平行停车一样。(原谅我的画)

在此处输入图像描述

因此,全正或全负激活函数(relu、sigmoid)对于基于梯度的优化可能很困难。为了解决这个问题,我们可以提前将数据标准化为以零为中心,就像在批次/层标准化中一样。

另外我能想到的另一个解决方案是为每个输入添加一个偏置项,使层变为 然后梯度是 符号将不仅仅取决于

f=wi(xi+bi).
dLdwi=dLdf(xibi)
xi