深度学习中的Batch Normalization

本文探讨了深度学习中Batch Normalization的重要性,解释了Internal Covariate Shift问题及其对训练的影响。Batch Normalization通过在神经网络中引入可学习的归一化层,解决了训练速度慢和模型泛化能力下降的问题,允许使用更高的学习率和减少对dropout的依赖。此外,它还可以减少L2权重衰减系数并替代局部响应归一化层。

关注微信公众号【Microstrong】,我现在研究方向是机器学习、深度学习,分享我在学习过程中的读书笔记!一起来学习,一起来交流,一起来进步吧!


本文同步更新在我的微信公众号中,公众号文章地址:https://mp.weixin.qq.com/s/o_Gwa11BauT60U7S1--3fQ

本文同步更新在我的知乎中:

深度学习中的Batch Normalization - Microstrong的文章 - 知乎https://zhuanlan.zhihu.com/p/36222443


1.为什么需要Batch Normalization

Batch Normalization就是在神经网络的训练过程中对每层的输入数据进行预处理。对输入数据预处理方法有很多,比如常用Z-score、白化等。

1.1 传统神经网络如何使用Normalization

传统的神经网络中,只是在输入层之前或在输出层之后对 x 进行标准化处理(减去均值,除标准差),让数据处于均值为0、方差为1的分布中,以降低样本间的差异性。过程如图1所示。


图1:传统网络的Normalization

思考一个问题:为什么传统的神经网络在训练开始之前,要对输入的数据做Normalization?

原因在于神经网络学习过程本质上是为了学习数据的分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另一方面,一旦在mini-batch梯度下降训练的时候,每批训练数据的分布不相同,那么网络就要在每次迭代的时候去学习以适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么我们需要对所有训练数据做一个Normalization预处理的原因。

那么传统神经网络中使用Normalization的缺点是什么呢?

对于深度网络的训练是一个复杂的过程,只要网络的前面几层参数发生微小的改变,那么后面几层网络就会被积累放大发生更大的变动。一旦网络某一层的输入数据的分布发生改变,那么这一层网络就需要去适应学习这个新的数据分布,所以如果训练数据的分布发生变化,那么将会影响网络的训练速度。

1.2 白化预处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值