赞
踩
为 了降低分布变化的影响,可使用归一化策略Normalization,把数据分布映射到一个确定的区间。
神经网络中,常用的归一化策略有BN(Batch Normalization), WN(Weight Normalization), LN(Layer Normalization), IN(Instance Normalization).
BN是针对单个神经元进行归一化操作,多用于batch size大的CNN网络。使用batch size数量的样本的均值和方差,近似整体样本的均值和方差,独立地规范每一个输入维度x。也有人说,BN输出的是标准正态分布(不明白,大量样本的分布是正态分布?)。BN使用的这样均值、方差近似,给神经网络引入了噪声,提高了泛化性。BN对batch size和样本的随机要求相对严苛。
WN是对神经网络的权重进行归一化,不直接依赖于输入样本。虽然是对权重w进行限定,但限定的结果还是反应到y=w*x+b的y中。
LN是对当前神经网络层单个训练样本的所有神经元的输入进行计算,利用统一的均值和方差,对数据进行归一化。但是,对不同类别的特征使用同样的限定,会降低网络性能。
IN是对单个图像进行的归一化操作。常用于风格迁移等。
GN是对通道进行分组,每个组做归一化操作。GN可以看作是LN与IN之间的一种折中方案。把当前层的所有通道都作为一个组的时候,GN结果就是LN。如果把所有通道N分为N个组里,GN结果就是IN。
协变量偏移(Covariate Shift)
,协变量可以看作是 输入变量
。一般的深度神经网络都要求输入变量在训练数据和测试数据上的分布是相似的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。中间每一层输入的数据分布往往会和参数更新之前有较大的差异
,导致网络要去不断的适应新的数据分布,进而使得训练变得异常困难,我们只能使用一个很小的学习速率和精调的初始化参数来解决这个问题。而且这个中间层的深度越大时,这种现象就越明显。由于是对层间数据的分析,也即是内部(internal),因此这种现象叫做内部协变量偏移(internal Covariate Shift)。批
标准化:是因为在训练期间,我们仅通过计算 当前层一小批数据
的均值和方差来标准化每一层的输入。现在几乎所有的卷积神经网络都会使用批量标准化操作,它可以为我们的网络训练带来一系列的好处。具体如下:
避免了梯度消失和梯度爆炸
加速网络的收敛
提高了网络的泛化能力
,使得我们可以减少或者取消 Dropout,优化网络结构
)你再也不用去理会过拟合中drop out、L2正则项参数的选择问题,采用BN算法后,你可以移除这两项了参数,或者可以选择更小的L2正则约束参数了
,因为BN具有提高网络泛化能力的特性激活函数前
使用不需要加 bias 项
了,因为减去batch 个数据的均值 μB后,偏置项 b 的作用会被抵消掉,其平移的功能将由 β来代替BN 的训练阶段均值和方差的求法
:
BN 的测试阶段均值和方差的求法
:测试时,使用的是 训练集 的每一个 BN 层累积下来的 均值和方差(C 维);训练阶段使用 指数衰减滑动平均(EMA) 将每个 batch 的均值和方差不断的累积下来,从而近似得到整个样本集的均值和方差详情见:https://blog.csdn.net/wuzhongqiang/article/details/103764412
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。