深度学习中batch_size设置大小在神经网络训练中的影响
1.首先介绍Batch Normalization(BN/批标准化)的概念
传统的神经网络,只是在将样本x输入输入层之前对x进行标准化处理,以降低样本间的差异性。BN是在此基础上,不仅仅只对输入层的输入数据x进行标准化,还对每个隐藏层的输入进行标准化
那什么是标准化呢?
标准化使得不同的特征具有相同的尺度(Scale)经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:
x’=(x-u)/&,其中μ为所有样本数据的均值,&为所有样本数据的标准差
需要说明的事并不是任何问题都必须事先把原始数据进行规范化 , 也就是数据规范化这一步并不是必须要做的 , 要具体问题具体看待。比如视频人体行为识别就不需要标准化,他的数据格式都是一样的
- Covariate Shift问题
Convariate shift是BN论文作者提出来的概念,指的是具有不同分布的输入值对深度网络学习的影响。当神经网络的输入值的分布不同是,我们可以理解为输入特征值的scale差异较大,与权重进行矩阵相乘后,会产生一些偏离较大地差异值;而深度学习网络需要通过训练不断更新完善,那么差异值产生的些许变化都会深深影响后层,偏离越大表现越为明显;因此,对于反向传播来说,这些现象都会导致梯度发散,从而需要更多的训练步骤来抵消scale不同带来的影响,也就是说,这种分布不一致将减缓训练速度。
而BN的作用就是将这些输入值进行标准化,降低scale的差异至同一个范围内。这样做的好处在于一方面提高梯度