Batch Normalization

Batch Normalization

深度学习中常用Normalization包括Batch Normalization, Layer Normalization, Instance Normalization等
,本文根据文章《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》内容理解Batch Normalization。

先验知识

文中提到,因为Network中的每一层的输出是下一层的输入,当输入乘上W以及加上b之后,在经过激活函数,它的分布其实发生了改变,这被称为covariate shift。covariate shift带来的问题是使得不同的层需要连续地适应新的分布。这不利于训练的收敛,通常会导致训练收敛速度变慢以及不收敛的问题,从而使得需要小心调整初始化策略以及学习率,以及需要drop put来防止过拟合。文中提到,在激活函数之前使用BN可以有效地减轻网络对初始化的依赖以及可以增大学习率来训练网络,同时可以remove掉drop out层,可谓是一举多得。

Batch Normalization公式

需要注意的是,BN层要加在激活函数之前,而不是激活函数之后,或者不是加在输入(激活函数后的tensor可以被视为是下一层的输入),文章的解释为:

在这里插入图片描述
BN的公式这里贴一下:
在这里插入图片描述
对每一个mini-batch做“白化”。

Inference时怎么用BN

特别注意,inference时,是用每一个mini-batch的均值和方差的期望当作inference时每一个sample"白化"的均值和方差!!!具体公式如下:
在这里插入图片描述

文章结果

下图是以MNIST数据集为例说明最后一层FC的输出,在经过sigmoid之前的值,在训练过程中的演变
在这里插入图片描述
下图是不同方法的准确度随着训练step的曲线,可以看到加了BN后,收敛速度明显加快在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值