深度学习Normalization技术简介

深度学习Normalization技术简介_第1张图片

 

Batch Normalization

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

深度学习Normalization技术简介_第2张图片

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不友好,若出现个别较深时,计算统计信息较麻烦。

深度学习Normalization技术简介_第3张图片

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

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


Instance normalization

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

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

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

深度学习Normalization技术简介_第4张图片

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

还有一种CIN (conditional instance normalization)

深度学习Normalization技术简介_第5张图片

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

Adain normalization

深度学习Normalization技术简介_第6张图片

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

Group Normalization

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

Switchable Normalization

深度学习Normalization技术简介_第7张图片

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

深度学习Normalization技术简介_第8张图片

你可能感兴趣的:(深度学习,计算机视觉)