Batch Normalization

Batch Normalization(批量标准化)是有google提出的一种训练优化方法,参考论文:Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift 。

神经网络学习过程本质就是为了学习数据分布,一旦训练数据和测试数据的分布不同,那么网络的泛化能力也就大大降低;另一方面,一旦每批训练数据的分布各不相同(batch梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,因此需要对数据做归一化预处理。

网络一旦train起来,那么参数就要发生更新,除了输入层的数据外(因为输入层数据,我们已经人为的为每个样本归一化),后面网络每一层的输入数据分布是一直在发生变化的,因为在训练的时候,前面层训练参数的更新将导致后面层输入数据分布的变化。以网络第二层为例:网络的第二层输入,是由第一层的参数和input计算得到的,而第一层的参数在整个训练过程中一直在变化,因此必然会引起后面每一层输入数据分布的改变。我们把网络中间层在训练过程中,数据分布的改变称之为:“Internal  Covariate Shift”。Batch  Normalization算法就是要解决在训练过程中,中间层数据分布发生改变的情况。

Batch Normalization(BN)是将训练数据中心化、方差归一化,这样可以加快模型收敛。

Batch Normalization优点:

(1) 可以让我们使用更大的学习率

(2)在某些情况下,有它就不需要使用Dropout了

(3)不需要使用局部响应归一化层,因为BN本身就是一个归一化网络层

(4)初值更随意,起到正则项的作用。可以把训练数据打乱

BN概述

BN(Batch Normalization)也属于网络的一层。在网络的每一层输入的时候,又插入了一个归一化层,也就是先做一个归一化处理,然后再进入网络的下一层。BN层是一个可学习、有参数的网络层。

Normalization的过程:


参考:

[1] https://blog.csdn.net/hjimce/article/details/50866313

[2] https://blog.csdn.net/fate_fjh/article/details/53375881


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值