首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是“批量规范”?为什么要用它?它如何影响预测?

什么是“批量规范”?为什么要用它?它如何影响预测?
EN

Stack Overflow用户
提问于 2016-12-21 18:30:03
回答 3查看 3.1K关注 0票数 9

最近,许多深层架构使用“批处理规范化”进行培训。

什么是“批量标准化”?它从数学上做什么?它在哪些方面有助于培训过程?

如何在培训期间使用批处理规范化?是否在模型中插入了一个特殊的层?我需要在每一层之前正常化,还是只需要一次?

假设我用批量规范化进行训练。这会影响我的测试时间模型吗?我是否应该用“部署”网络中的其他/等效层/操作来替换批处理规范化?

关于批处理规范化的这个问题只涉及这个问题的一部分,我的目标是并希望得到一个更详细的答案。更具体地说,我想知道批量规范化培训如何影响测试时间预测,即“部署”网络和网络的测试阶段。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-21 19:02:07

批处理规范化是针对可能遭受有害漂移的层。数学上很简单:找到每个分量的均值和方差,然后应用标准变换将所有值转换为相应的Z-分数:减去平均值,再除以标准差。这确保了组件范围非常相似,以便每个组件都有机会影响培训三角洲(在后端)。

如果您正在使用网络进行纯测试(没有进一步的培训),那么只需删除这些层,它们已经完成了他们的工作。如果您在测试/预测/分类时进行培训,那么将它们放在适当的位置;这些操作将不会损害您的结果,而且几乎不会减慢前向计算的速度。

至于卡菲的细节,卡菲并没有什么特别之处。计算是一个基本的统计过程,对于任何框架都是相同的代数。当然,对于支持向量和矩阵数学的硬件也会有一些优化,但是这些优化包括简单地利用芯片的内置操作。

对评论的回应

如果你能负担得起一些额外的训练时间,是的,你会想要在每一层正常化。在实践中,减少插入次数--比如说,每隔1到3次--就可以正常工作。

您可以在部署中忽略这些,因为它们已经完成了它们的工作:当没有反向传播时,就没有权重漂移。另外,当模型在每个批处理中只处理一个实例时,Z-得分总是0:每个输入都是批的平均值(即整个批处理)。

票数 5
EN

Stack Overflow用户

发布于 2016-12-22 01:51:01

作为剪枝回答的补充,在测试过程中,批归一化层将使用来自不同训练迭代的平均mean/variance/scale/shift值来规范其输入(减去均值并除以标准差)。

而最初的谷歌的批量标准化文件只说它应该是一种移动平均法,但是没有提供更详尽的解释。caffe和tensorflow都使用指数移动平均法。

根据我的经验,就验证精度而言,简单移动平均法通常比指数移动平均法更好(也许它需要更多的实验)。作为比较,您可以参考这里(与BVLC/caffe中的batch norm层相比,我尝试了channel_wise_bn_layer中的两种移动平均方法实现)。

票数 2
EN

Stack Overflow用户

发布于 2021-04-01 14:53:32

批归一化解决了一个称为“内部协变量转移”的问题。要理解为什么会有帮助,你需要首先了解什么是协变量转移。

“协变量”只是输入“功能”的另一个名称,通常写为X。协变量移位意味着特征在培训/测试数据的不同部分中的分布是不同的,从而打破了大多数ML中使用的i.i.d假设。这个问题经常出现在医疗数据中(您有来自一个年龄组的培训样本,但是您希望对来自另一个年龄组的东西进行分类),或者金融(由于市场条件的变化)。

“内部协变量转移”是指在神经网络中发生的协变量转移,即从(例如)第2层到第3层。这是因为,随着网络学习和权重的更新,网络中特定层的输出分布发生变化。这迫使更高的层适应这种漂移,这减慢了学习速度。

BN有助于使网络中间层之间的数据看起来像白化的数据,这意味着您可以使用更高的学习速度。因为BN有正规化的效果,它也意味着你可以经常删除辍学(这是有帮助的,因为辍学通常会减缓训练)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41269570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档