机器学习中的批量标准化如何解决协变量偏移并加快训练速度?

数据挖掘 深度学习 批量标准化
2022-02-15 19:36:21

这个视频这个答案中,提到批量标准化不允许任何特定隐藏层的参数的均值和方差随着前一层节点值的变化而变化太大。假设我们有一个这样的网络(取自视频):

在此处输入图像描述

当我们改变训练神经网络的小批量时,输入特征相对于不同小批量的分布可能是不同的据我了解,这称为协变量移位。协变量偏移的一个问题是,输入特征相对于验证集示例的分布可能与训练集不同(参考链接视频中的黑猫/彩色猫示例),并且分布在不同的小批量中是不同的。

因此,由于将输入层连接到下一层的学习权重取决于输入特征分布,因此学习权重将随着每个小批量而相应变化。因此,下一个隐藏层中的激活也将在不同的 mini-batch 中分布不同

第一个问题:到目前为止我的理解是否正确?

现在我可以理解,只有当小批量(或训练集和验证集之间)的分布基本相同但参数不同时,限制输入特征隐藏层激活的均值和方差才能解决协变量偏移问题(不是神经网络参数——我的意思是和标准差)。粗略地说,如果不同 mini-batch 的输入特征分布是正常的,但参数(mean 和 stddev)不同,那么 batch normalization 似乎没问题。

问题 2:但是,如果输入特征在一个 mini-batch 中具有正态分布,而在另一个 mini-batch 中具有完全不同的分布呢?我看不出限制均值和方差会有什么帮助。也许我忽略了一些关键假设。

问题 3为什么限制隐藏层分布的变化会加速收敛?

1个回答

所以对于第一个问题,你几乎是正确的。您对协变量偏移的描述是正确的,但批量归一化并不专注于修复输入层协变量偏移,而是内部协变量偏移。这不是一个巨大的差异,因为隐藏层的内部协变量偏移充当另一层的输入,但是即使没有显着的输入层协变量偏移,内部协变量偏移也可能发生。

当学习过程中发生权重更新时,内部偏移就会发生,在几个 epoch 之后,隐藏层的输出分布可能会发生变化。这会减慢学习速度,因为现在下一个隐藏层将不得不学习新的分布。批量归一化试图最小化分布的这种变化,以便较少的学习集中在尝试学习隐藏层分布的变化。