CNN-batch normalization讲解

batch normalzation

introduction

  • BN主要是为了解决NN训练过程中难以收敛的问题,可以在一定上推迟过拟合的发生(注意:有些博客中说BN可以防止过拟合,但是论文(https://arxiv.org/pdf/1611.03530.pdf)中验证了BN只是有抑制作用,使得过拟合在更多的epoch之后出现,但是并不能阻止)
  • 在机器学习过程中,最理想的状态就是特征或者数据是独立同分布的,因此在数据预处理的时候,一般会使用PCA或者normalization方法去规范化数据,使得模型易于训练。
  • 下图是CNN训练中常用的normalization方法,一般每层feature map的尺寸是 ( N X C X H X W ) (NXCXHXW) (NXCXHXW)。其中BN是对每个batch中的每个channel中的所有值进行单独处理,最终可以得到C个mean与C个var的值。其他的normalization方法与特定的数据维度可以参见下图。

在这里插入图片描述

注意:CNN中的normalization方法与regularization方法是不同的,一个是正规化,一个是正则化,
regularization是防止过拟合,normalization是为了规范数据的分布,便于后续的训练过程。

简介

  • 在训练的过程中,BN是首先计算当前channel中所有值得均值与方差,然后对其进行归一化,为了防止这种归一化使得数据丢失学习到的特征,BN又添加了2个可以学习的值,使得归一化的值可以有不同的变化。主要的公式如下

μ B = 1 m ∑ i = 1 m x i σ B 2 = 1 m ∑ i = 1 m ( x i − μ B ) 2 x ^ i = x i − μ B σ B 2 + ε y i = γ x ^ i + β = B N γ , β ( x i ) \begin{array}{l} {\mu _B} = \frac{1}{m}\sum\limits_{i = 1}^m {{x_i}} \\ \sigma _B^2 = \frac{1}{m}\sum\limits_{i = 1}^m {({x_i} - } {\mu _B}{)^2}\\ {{\hat x}_i} = \frac{{{x_i} - {\mu _B}}}{{\sqrt {\sigma _B^2 + \varepsilon } }}\\ {y_i} = \gamma {{\hat x}_i} + \beta = B{N_{\gamma ,\beta }}({x_i}) \end{array} μB=m1i=1mxiσB2=m1i=1m(xiμB)2x^i=σB2+ε xiμByi=γx^i+β=BNγ,β(xi)

  • 在测试的时候,一般都是一张图像,没有batch size的概念,无法在测试数据中获取原始数据的均值与方差,因此我们可以记录训练样本中的值,相当于假设每批训练样本中的均值和方差都是固定不变的,因此在测试阶段的 μ \mu μ σ \sigma σ的计算公式如下。

E [ x ] = E B [ μ B ] v a r [ x ] = m m − 1 E B [ σ B 2 ] \begin{array}{l} E[x] = {E_B}[{\mu _B}]\\ var[x] = \frac{m}{{m - 1}}{E_B}[\sigma _B^2] \end{array} E[x]=EB[μB]var[x]=m1mEB[σB2]

上面计算结果是均值和标准差的无偏估计

  • 最后BN的使用公式就是

y = γ v a r [ x ] + ε x + ( β γ E [ x ] v a r [ x ] + ε ) y = \frac{\gamma }{{\sqrt {{\mathop{\rm var}} [x] + \varepsilon } }}x + (\beta \frac{{\gamma E[x]}}{{\sqrt {{\mathop{\rm var}} [x] + \varepsilon } }}) y=var[x]+ε γx+(βvar[x]+ε γE[x])

注意

  • 在训练和测试的过程中,BN的使用稍有不同,但是原始公式都是相同的,造成差异的原因是训练和测试数据的不同。
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littletomatodonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值