Q1:什么是bn层,如何操作计算的?

bn :batch normlization数据归一化的一个计算

以batch为单位进行的计算。例如一个batch中有10张图片,每张图片有3个通道(10×224×224×3),bn的操作就是对当前的10张图片 先对这10张图片的第一个通道(R)进行归一化,再第二个通道(G)、第三个通道(B)...

BN层用于时序数据分析_BN层用于时序数据分析

 

具体过程:1、对R通道:把10张图片的R通道的像素相加再求平均得到

BN层用于时序数据分析_人工智能_02

,求方差得到

BN层用于时序数据分析_数据_03

,然后把均值和方差变为0,1其中

BN层用于时序数据分析_人工智能_04

为可以学习到的参数。这两个参数是bn的精髓,在一定程度上能够保留原始数据的分布

Q2:bn的作用是什么?

随着神经网路层数的增加,数据越来越偏向激活函数的上下两端,bn的操作使得数据能够进入激活函数的敏感区域。-> 加快模型收敛,使模型训练更加稳定。缓解梯度消失、梯度爆炸等

Q3:bn和ln的区别、联系

共同优点:都会加快模型收敛,使得模型训练更加稳定。

bn是以batch为单位,每个通道进行的归一化,而ln是对每个样本的操作

Q4:bn的局限性

1、受batch size影响比较大,(所以想要完全复现别人的论文,这个也需要对应上才不会有偏差),batch size越大效果越合理

2、bn降低了样本之间的绝对差异,从而使得样本之间的相对差异变得明显。所以bn对分类任务非常友好。但是,有些任务,需要绝对差异信息(如图像的超分辨率),这个时候去掉bn层效果会过更好

Q5:训练与推理时BN中的均值、方差分别是什么

训练时的均值和方差是当前batch计算所得。

测试的时候的batch size会有变化,所以为了不受到batch size大小的影响。测试的均值和方差是由所有训练数据的均值和方差用指数滑动平均(ExponentialMovingAverage)EMA计算所得。

推理的时候的均值方差:说白了就是把所有batch的均值方差求了个期望(并且这个值会记录到checkpoint中)

BN层用于时序数据分析_数据_05