BatchNorm2d

BatchNorm()

1、BatchNorm2d原理:参考链接

1)Batch Norm 只是插入在隐藏层和下一个隐藏层之间的另一个网络层。 它的工作是从第一个隐藏层获取输出并在将它们作为下一个隐藏层的输入传递之前对其进行标准化。

2)是以 一个 batch 为统计单位,在 C(channel) 维度做归一化,也就是如果是RGB图片,则会在这三个通道上分别处理!

3)通过每次迭代(也就是一个 batch 的数据)去统计参数,下次迭代会更新到上次统计出的参数,以此类推直至将整个数据集的数据统计完成。

4)参数:BN 前向需要 mean、var、γ 、 β 四个参数。mean,var 在训练模式的每次前向中更新,γ 、 β 相当于 BN 的 weight、bias,是有梯度的,在每次反向传播后更新。

2、作用:参考链接

1)Batch Norm在激活函数前加!抑制梯度消失!(主要作用)

2)加速优化过程(主要作用)。

(1)可以使用更大的学习率,训练过程更加稳定,极大提到了训练速度

3)减小参数初始化带来的影响!

(1)可以将bias置为0。因为Batch Normalization的Standardization过程会移除直流分量,所以不再需要bias。对权重初始化不再敏感,通常

(2)权重采样自0均值某方差的高斯分布。以往对高斯分布的方差设置十分重要,有了Batch Normalization后,对与同一个输出节点相连的权重进行放缩,其标准差Font metrics not found for font: .也会放缩同样的倍数,相除抵消。

(3)对权重的尺度不再敏感。理由同上,尺度统一由𝛾参数控制,在训练中决定。

4)具有一定的正则化作用(意外作用,有的实验证明并无此作用)

(1)Batch Normalization具有某种正则作用,不需要太依赖dropout,L1,L2等正则化方式,减少过拟合。

5)BN每次的mini-batch的数据都不一样,而每次的mini-batch的数据都会对moving mean和moving variance产生作用,可以认为是引入了噪声,这就可以认为是进行了data augmentation,而data augmentation被认为是防止过拟合的一种方法。因此,可以认为用BN可以防止过拟合。

3、计算:参考链接

1)激活:来自前一层的激活作为输入传递给 Batch Norm。数据中的每个特征都有一个激活向量。

2)计算均值和方差:每个激活向量分别计算 mini-batch 中所有值的均值和方差。

3)规范化:使用相应的均值和方差计算每个激活特征向量的归一化值。这些归一化值现在有零均值和单位方差。

4)规模和转移:这一步是 Batch Norm 引入的创新点。与要求所有归一化值的均值和单位方差为零的输入层不同,Batch Norm 允许将其值移动(到不同的均值)和缩放(到不同的方差)。它通过将归一化值乘以因子 gamma 并添加因子 beta 来实现此目的。这里是逐元素乘法,而不是矩阵乘法。创新点在于,这些因素不是超参数(即模型设计者提供的常数),而是网络学习的可训练参数。每个 Batch Norm 层都能够为自己找到最佳因子,因此可以移动和缩放归一化值以获得最佳预测。

5)移动平均线:Batch Norm 还保持对均值和方差的指数移动平均线 (EMA) 的运行计数。训练期间它只是计算这个 EMA,但不做任何处理。在训练结束时,它将该值保存为层状态的一部分,以在推理阶段使用。移动平均线计算使用由下面的 alpha 表示的标量“动量”。这是一个仅用于 Batch Norm 移动平均线的超参数,不应与优化器中使用的动量混淆。

 

posted @ 2023-03-07 23:05  kuaqi  阅读(448)  评论(0编辑  收藏  举报