关于Normalization的一些学习

本文深入解析BatchNormalization在深度学习中的作用机制,包括其在CNN中的应用、与其他Normalization方法的对比,以及如何解决训练与预测时统计量不一致的问题。同时,文章探讨了BN为何能有效加速模型收敛并增强泛化能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Batch Normalization 

首先,我们要清楚cnn的反向传播中更新参数用到的梯度下降,是基于mini-batch SGD。mini-batch就表示有一定的batch size(>1)。实验发现当batch size<8时神经网络的输出误差会显著增大。对于Batch Normalization的应用,举例来说:

一个feature map 为k*h*w大小,k表示通道数,h表示特征图的高,w表示特征图的宽,一个卷积层为m*k*f*f大小,m表示卷积核的个数,f表示卷积核的长或宽。对一个feature map 卷积处理后若尺寸不变就得到m*h*w, 而batch size中包含n个feature map,则对于一个mini-batch,卷积一次就会产生n个m*h*w,而Batch Normalization就是对一个集合S中所有数求平均值u和标准差\sigma,然后

通过t = \frac{x-\mu }{\sigma }标准化,x_{normal} = \gamma t+\beta,x_{normal}表示标准化后的像素点上的值,x表示未标准化的像素值。而这个集合S就表示n个feature map中每个的第i层通道的h*w的集合,i表示0、1、2...m。则经过一次Batch Normalization 就会得到标准化后的n个m*h*w。

2.Batch Normalization的优点和缺点:

优点:加快模型收敛速度,引入随机噪声增强模型泛化能力。

缺点:训练时和预测时的统计量不一致,即集合S不一致,训练时是mini-batch输入,预测时是一张一张输入。

3.解决方式:

(1)Layer Normalization

这种方式就是设置集合S为一个feature map的m个通道中所有层的h*w的像素值,当输入为一张图时,而且这种方式用在rnn中效果较好。但是在cnn下不如Batch Normalization和Group Normalization等模型。

(2)Instance Normalizatin

这种方式是设置集合S为m个通道中一个通道上h*w的像素值。这种方式仅适用于cnn,对于mlp(全连接网络)和rnn不适用,因为按照这种方式,就只剩下一个神经元了,无法形成集合S。

这种方式应用于图片生成类比如图片风格转换效果是明显优于BN的,但在图像分类任务上效果不如BN。

(3)Group Normalization

该种方式是Layer Normalization的变种,将一个feature map的m个通道分组,则集合S为一个组的所有像素值。

该种方式在要求Batch Size 比较小的场景下或物体检测/视频分类等场景下效果是优于BN的。

4.Normalization的Re-Scaling不变性

 

权重矩阵

Re-Scaling 

不变性

权重向量

Re-Scaling

不变性

数据

Re-Scaling

不变性

BN不变不变不变
LN不变变化不变
IN不变不变不变
GN不变变化不变

5.BN为何有效

张俊林老师认为:Normalization通过对激活值进行正态分布化的参数重整,产生参数Re-Scaling不变的效果,因此缓解梯度消失或梯度爆炸问题,与其对应的重整后的损失曲面及梯度也因此变得更平滑,更有利于SGD寻优找到问题好的解决方案。

 

 

 

张俊林老师的文章写的通俗易懂,我读完获益匪浅,遂立即做了笔记,再次感谢张俊林老师的分享!

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值