批范数对梯度有什么影响?

人工智能 深度学习 优化 批量标准化 梯度消失问题 爆炸梯度问题
2021-11-09 07:59:38

Batch norm 是一种技术,它们本质上是在将每一层的激活标准化,然后再将其传递到下一层。自然,这会影响通过网络的梯度。我已经看到了导出批量范数层的反向传播方程的方程。来自原论文:https ://arxiv.org/pdf/1502.03167.pdf

来自论文:https://arxiv.org/pdf/1502.03167.pdf

但是,我很难理解是否可以直观地理解它对网络的实际影响。例如,它是否有助于解决梯度爆炸问题,因为激活被重新缩放,并且它们的方差受到限制?

1个回答

“当然,这会影响通过网络的梯度。” 这个陈述只是部分正确,让我们通过开始解释批量标准化的真正目的来了解原因。

正如论文的标题所暗示的,批量归一化的目的是通过减少协方差偏移来减少训练时间。什么是协方差偏移?我们可以将其视为网络两层值之间可能发生的变化。我们都熟悉这样一个概念,如果我们有不同单位比例的输入特征,比如公斤和欧元,很可能很多值会有不同的数量级,比如重量可能会出现数千,而金钱通常会出现数十万。当将激活函数应用于不同数量级时,这种差异将仍然存在,导致第一层中的值假设一个非常广泛的值范围。这不好,因为高波动意味着有更多时间收敛到稳定值。这就是为什么输入神经网络的值总是标准化的。

作者将相同的逻辑应用于隐藏层,认为可以将深度神经网络视为自身的重复(每个隐藏层都是将特征发送到另一个隐藏层的输入层),因此应该在每一层对特征进行归一化. 我们该怎么做?对每个批次进行归一化是最自然的处理方式,但这种方式存在最终转换层的内部表示的风险,因为归一化不是线性转换。这是作者提出了一种执行隐藏层归一化的巧妙方法的方式,该方法包括经典归一化,然后是使用两个可训练参数执行的线性缩放βγ(出现在下面批处理规范暂存代码的最后一步中)。

在此处输入图像描述

需要注意的一个非常重要的事情是,用于执行经典归一化的均值和方差是在 mini batch 上计算的均值和方差我将在几秒钟内解释为什么这很重要,首先我想强调的是β当批范数随机卡在其他层的顶部时,参数实际上会增加过度拟合。原因是,正如我们在规模和移位步骤中看到的那样,β只不过是一个有偏项,添加以执行批次隐藏值的平均值的移动。因此,为避免产生导致过度拟合的额外偏差,应移除前一层上的托架,只留下经典的权重参数矩阵。

回到梯度问题,我们可以看到它本身并不一定会提高性能,但它确实在隐藏层值收敛方面提供了优势。下图右侧两个子图中的 x 轴表示使用和不使用批范数训练的网络的隐藏值的变化。当使用批量规范训练时,隐藏值在几次迭代后达到稳定范围。这有助于网络在较少的迭代中达到高精度(左侧的第一个子图),但我们可以看到,即使没有批量标准化,网络最终也能达到高精度。

在此处输入图像描述

批范数对梯度的唯一帮助是,如前所述,归一化首先是通过计算各个批的均值和方差来执行的。这很重要,因为对均值和方差的这种部分估计会引入噪声。与 dropout 类似,由于随机停用部分权重产生的噪声而具有正则化效果,batch norm 可以通过添加噪声来引入正则化,因为对单个批次估计的均值和方差较大或较小。但是,批范数并未作为正则化技术引入,您提出的问题方程只是证明可以计算用于执行批范数的方程的导数。