【深度学习】对batch Normalization(批归一化)的理解

BatchNormalization(BN)通过减少内部协变量偏移,有效解决梯度消失问题,加速深度网络训练。BN允许使用更大学习率,减少正则化,防止过拟合。归一化使激活值远离饱和区,增加梯度,同时引入gamma与beta参数,由网络自我学习调整,保持表达能力。

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

Batch Normalization:Accelerating Deep Network Training by  Reducing Internal Covariate Shift

 

关于BN的好处:

 1. 最主要的是减少梯度消失,加快收敛速度。

 2.  允许使用更大的学习率,不需要drop out,减少L2正则,防止过拟合。

阅读paper的难点主要在两个:

1.为什么通过归一化,减少内部斜变量转移就可以减少梯度消失,加快收敛速度呢?

2.归一化后又引入了两个新的参数 gamma与beta,而这两个参数最极端的情况是把分布拉回到原分布,这是为啥?

 

对于第一个问题,大神们发现内部斜变量转移(也就是激活值随着参数的变化分布发生变化)会使得输出层的分布趋近激活函数的非线性饱和区域,如sigmoid函数的两端,这样会使得梯度趋于0,从而无法训练网络,LeCun在文章Gradient based learning applied to document recognition中提出过如果输入数据白化可加速网络训练。于是BN的提出者就想出能不能将每一层的激活值归一化,将他们拉回到均值为0,方差为1的分布区域,这样大部分数据都从梯度趋近于0的区域变换至激活函数中梯度较大的区域,从而加快收敛速度。

对于第二个问题,因为归一化后会影响原始网络输出层的表达能力,因此引入两个参数进行调整,而这两个参数是网络自己学习的,因为在归一化后大部分数据都集中分布在激活函数中间的线性区域,但对于深层网络来说多层线性激活等价于一层没有意义,因此需要在非线性和梯度较大这两个点之间做个权衡,人为设定可能不合适,因此由网络自行学习去衡量激活值的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值