最近,许多深层架构使用“批量规范化”进行培训。
什么是“批量标准化”?它在数学上做了什么?它以什么方式帮助培训过程?
培训期间如何使用批次标准化?它是插入模型的特殊层吗?我需要在每一层之前标准化,还是只需要一次?
假设我使用批量标准化进行训练。这会影响我的测试时间模型吗?我应该用“部署”网络中的其他/等效层/操作替换批量规范化吗?
关于批量标准化的This question仅涵盖了这个问题的一部分,我的目标是希望得到更详细的答案。更具体地说,我想知道批量标准化的培训如何影响测试时间预测,即“部署”网络和网络的TEST阶段。
答案 0 :(得分:4)
批量标准化适用于可能遭受有害漂移的层。数学很简单:找到每个分量的均值和方差,然后应用标准变换将所有值转换为相应的Z分数:减去均值并除以标准差。这可以确保组件范围非常相似,这样他们每个人都有机会影响训练增量(在反支柱中)。
如果您正在使用网络进行纯测试(无需进一步培训),那么只需删除这些图层;他们已经完成了自己的工作。如果你在测试/预测/分类时进行训练,那么就把它们留在原地;这些操作根本不会损害你的结果,并且几乎不会减慢前向计算的速度。
至于Caffe的细节,Caffe真的没什么特别的。计算是一个基本的统计过程,与任何框架都是相同的代数。当然,对支持向量和矩阵数学的硬件进行一些优化,但这些优化只需要利用芯片的内置操作。
回应评论
如果你能承受一点额外的训练时间,是的,你想要在每一层进行标准化。在实践中,不那么频繁地插入它们 - 例如,每1-3次插入 - 都可以正常工作。
你可以在部署中忽略这些因为他们已经完成了他们的工作:当没有反向传播时,没有权重漂移。此外,当模型在每个批次中只处理一个实例时,Z分数始终为0:每个输入都是批次的平均值(即整个批次)。
答案 1 :(得分:2)
作为Prune's answer的补充,在测试期间,批量标准化层将使用来自不同训练迭代的平均channel_wise_bn_layer
值来标准化其输入(减去平均值并除以标准偏差)。
原来google's batch normalization paper只说它应该是移动平均法,但没有提供更全面的解释。 caffe和tensorflow都使用指数移动平均法。
根据我的经验,simple moving average method通常优于指数移动平均法,至于验证准确度(可能需要更多实验)。对于比较,您可以参考here(我尝试了batch norm
中的两个移动平均方法实现,与BVLC/caffe中的UITesting Failure - Failed to get snapshot within 15.0s
层进行了比较。
答案 2 :(得分:1)
值得this link有一个在cifar10分类网中使用"BatchNorm"
图层的示例。
具体来说,它会在TRAIN
和TEST
阶段之间拆分:
layer {
name: "bn1"
type: "BatchNorm"
bottom: "pool1"
top: "bn1"
batch_norm_param {
use_global_stats: false
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
include {
phase: TRAIN
}
}
layer {
name: "bn1"
type: "BatchNorm"
bottom: "pool1"
top: "bn1"
batch_norm_param {
use_global_stats: true
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
param {
lr_mult: 0
}
include {
phase: TEST
}
}
答案 3 :(得分:1)
批量归一化解决了一个叫做“内部协变量移位”的问题。 要了解它为什么有帮助,您首先需要了解协变量偏移实际上是什么。
“协变量”只是输入“特征”的另一个名称,通常写成 X。协变量偏移意味着特征的分布在训练/测试数据的不同部分是不同的,打破了大多数使用的 iid 假设毫升。此问题在医疗数据(您有来自一个年龄段的训练样本,但您想对来自另一个年龄段的数据进行分类)或金融(由于市场条件变化)中经常发生。
“内部协变量偏移”是指在神经网络中发生的协变量偏移,即从(比如说)第 2 层到第 3 层。发生这种情况是因为,随着网络的学习和权重的更新,a网络中的特定层发生了变化。这会迫使更高层适应这种漂移,从而减慢学习速度。
BN 有助于使网络中间层之间流动的数据看起来像白化数据,这意味着您可以使用更高的学习率。由于 BN 具有正则化效果,这也意味着您通常可以移除 dropout(这很有帮助,因为 dropout 通常会减慢训练速度)。