深度学习Normalization技术简介

 

Batch Normalization

BN主要解决了Internal Covariate Shift问题,该问题的意思是在深度神经网络中,每层的参数都在不断的更新,导致了隐含层的输入分布一直不断的变化,不符合监督学习的IID条件。同时,分布的不断变化,会导致收敛的难度增大,收敛速度变慢。BN的思想,是把mini-batch输入的分布尽量保持一致,降低收敛难度,提升收敛速度。同时,当同一个样本处在不同mini-batch中时,会经过不同的转换,变相进行了数据增强。在测试时,使用的是训练集得到的统计数据进行转换。

x_{i}y_{i}表示一个神经网络的输入和输出,X._{j}表示第j列输入数据,\gamma _{j}\beta _{j}表示两个可学习的参数。

Batch 顾名思义是对一个batch进行操作。假设我们有 10行 3列 的数据,即我们的batchsize = 10,每一行数据有三个特征,假设这三个特征是【身高、体重、年龄】。那么BN是针对每一列(特征)进行缩放,例如算出【身高】的均值与方差,再对身高这一列的10个数据进行缩放。体重和年龄同理。这是一种“列缩放”。

转自: https://zhuanlan.zhihu.com/p/74516930

 

Layer Normalization

BN存在两个缺陷:

1. batch size的设置,影响训练过程,过小的batch size,并不能反映整体数据集的数据分布。

2. BN对RNN不定长的sequence不友好,若出现个别较深时,计算统计信息较麻烦。

而layer方向相反,它针对的是每一行进行缩放。即只看一笔数据,算出这笔所有特征的均值与方差再缩放。这是一种“行缩放”。

在BN的论文中有提到,理论上来说,几乎所有归一化技术,都能起到平滑损失平面的作用,加速收敛,所以LN也能降低ICS问题。


Instance normalization

BN是对一个mini-batch中所有图片的同一通道进行归一化,而IN是对每个feature map的单一通道进行归一化。

IN适用于风格迁移任务,每张图片对应一种风格,而一个batch中存在多张图片,一起归一化并不合适。

https://zhuanlan.zhihu.com/p/57875010

其中\gamma\beta相对每个channel是不同的

还有一种CIN (conditional instance normalization)

一组\left ( \gamma ^{s}, \beta ^{s} \right )对应一种风格,训练s种风格,新风格需要重新训练模型

Adain normalization

AdaIN(Adaptive Instance Normalization)直接使用一张图片计算\gamma\beta,直接应用在领一张图片上,完成风格迁移

Group Normalization

GN、IN、LN和BN相比,不依赖与batch size,其中LN可以看做group=1的GN,IN可以看做group=C的GN。

Switchable Normalization

计算均值时,可以使用instance的结果作为中间变量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值