批标准化—BN

Posted cropmodel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批标准化—BN相关的知识,希望对你有一定的参考价值。

作用:神经网络对0附近的数据更敏感,但是随着网络层数的增加,特征数据会出现偏离0均值的情况,标准化可以使数据符合以0位均值,1为标准差的正太分布,把偏移的特征数据重新拉回0附近。

方法:

  标准化:使数据符合0为均值,1为标准差的分布。

  批标准差:对一小批数据(batch),做标准化处理。

  批标准化后,第K个卷积核的输出特征图中的第i个像素点的值计算过程为:

  技术图片

  技术图片 批标准化前,第K个卷积核,输出特征图中第i个像素点的值

  技术图片批标准化前,第K个卷积核,batch张输出特征中所有像素点的平均值即   像素点的数量 = batch*该层卷积核数量*每个 卷积核的输出特征图像素数量

    技术图片批标准化前,第k个卷积核,batch张输出特征中所有要素点的标准差

   技术图片

   技术图片

   BN操作将原本偏移的特征数据重新拉回到0均值,使进入激活函数的数据分布在激活函数线性区,使得输入数据的微小变化更明显的体现到激活函数的输出,提升了激活函数对输入数据的区分力

   技术图片

   但是这种简单的特征数据标准化使特征数据完全满足标准正分布,集中在激活函数的中心区域,使激活函数失去了非线性特性。

   技术图片

     因此在BN操作中为每个卷积核引入了两个可训练参数γ和β,反向传播时缩放银子γ和偏移因子β会与其他带训练参数一同被训练优化,使标准正太分布后的特征数据通过缩放因子和偏移因子优化了特征数据的宽窄和偏移量保证了网络的非线性表达力

 

   技术图片技术图片

 

   BN层位于卷积层之后,激活层之前

   技术图片

 

TF2描述:

   tf,keras.layers.BatchNormalization()

 

实例:

model = tf.keras.models.Sequential(
    Conv2D(filter=6, kernel_size=(5, 5), padding=‘same‘),  # 卷积层
    BatchNormalization(),  # BN层
    Activation(‘relu‘),  # 激活函数
    MaxPool2D(pool_size=(2, 2), strides=2, padding=‘same‘),  # 池化层
    Dropout(0.2)  # dropout层
)

  

 

  

  

以上是关于批标准化—BN的主要内容,如果未能解决你的问题,请参考以下文章

深度模型的优化(1):批标准化(Batch Normalization,BN)

batch-normalization 批标准化

深度学习BN与神经网络调优

Batch Normalization批标准化是什么? | BN有啥用 | Batch Normalization是什么

tensorflow批标准化

经典BN很NB,精读论文《Batch Normalization》