学习日记—Normalizaion作用以及种类

Normalization-归一化是数据处理多不开的技术,那么这个东西究竟是干吗用的呢?

Normalization就是把数据特征缩放到相同的范围,通常是均值为0,方差为1的标准正态分布。

为什么要把数据缩放到较小的范围呢?

  1. 减少数据的噪声以及异常值影响。

  1. 避免梯度消失/爆炸。激活函数的导数通常都在0到1之间,因此在反向传播过程中,梯度可能会因为连乘效应而变得非常小(梯度消失)或非常大(梯度爆炸)。通过对输入数据进行归一化处理,可以使得神经网络中的激活值分布更加均匀,减少梯度消失/梯度爆炸的问题

  1. 防止个别特征数值过大,引起模型过度关注导致的过拟合现象。

  1. 便于比较不同的特征。不同特征的含义会导致他取值数量级的不同,所以将特征缩放到统一范围内会更方便进行特征的比较。

  1. 便于比较相同的特征。相同的特征在不同的取样组内会具有不同的取值范围,比如工资。所以将特征缩放到统一范围内方便同一特征在不同组别内进行比较。

.......

总之Normalization就是好,有事没事搞一搞。

那问题来了,花样Normalization应该使用哪一个?

  1. Batch Normalization(BN)

对每个batch的数据进行归一化。

BN实际使用时需要计算并且保存某一层神经网络batch的均值和方差等统计信息,对于对一个固定深度的前向神经网络(DNN,CNN)使用BN,很方便;但对于RNN来说,sequence的长度是不一致的,换句话说RNN的深度不是固定的,不同的time-step需要保存不同的statics特征,可能存在一个特殊sequence比其他sequence长很多,这样training时,计算很麻烦。

缺点:

batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布

使用范围:

BN实际使用时需要计算并且保存某一层神经网络batch的均值和方差等统计信息。

适用:DNN,CNN(固定深度前向网络)

不适用:RNN(深度不固定)

  1. Layer Normalization

对每个样本进行归一化,不依赖batch大小。

LN中同层神经元输入拥有相同的均值和方差,不同的输入样本有不同的均值和方差

LN不依赖于batch的大小RNN和输入sequence的深度,因此可以用于batchsize为1和RNN中对边长的输入sequence的normalize操作。

使用范围:

适用:RNN

不适用:CNN

  1. Instance Normalization

在每个样本上进行归一化,而不是在每个批次或每个层上进行归一化。

可以避免样本之间的数据分布差异导致的训练问题,可以提高图像生成任务的性能和稳定性,并且可以适用于各种图像生成模型,包括生成对抗网络(GAN)、变分自编码器(VAE)等。

使用范围:

适用:图像生成任务,例如风格迁移、图像翻译等任务

  1. Group Normalization

将特征分成若干组,对每组特征进行归一化处理,从而降低了对批次大小的依赖,适用于小批次训练和大规模并行训练。

优点:

a. 对批次大小不敏感,与BN和LN不同,GN将特征分成若干组,对每组特征进行归一化处理,因此不需要依赖于批次大小,可以适用于小批次训练和大规模并行训练。

b. 适用于多尺度输入,GN可以适用于多尺度输入的深度学习模型,例如图像分类、目标检测和语义分割等任务。

c. 稳定性更好,GN可以减少模型中的内部协变量偏移问题,从而提高模型的稳定性和泛化性能。

d. 计算速度更快,与BN相比,GN的计算速度更快,因为对于每个特征,只需要计算其所在组的均值和方差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值