Batch_size参数的作用:
决定了下降的方向。
极端一:
batch_size为全数据集(Full Batch Learning):
好处:
1.由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。
2.由于不同权重的梯度值差别巨大,因此选择一个全局的学习率很困难。Full Batch Learning可以使用Rprop只基于梯度符号并且针对性单独更新各权值。
坏处:
1.随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。
2.以Rprop的方式迭代,会由于各个Batch之间的采样差异性,各次梯度修正值相互抵消,无法修正。
极端二:
Batch_size=1:
Batch_size=1,也就是每次只训练一个样本。这就是在线学习(Online Learning)。
线性神经元在均方误差代价函数的错误面是一个抛物面,横截面是椭圆。
对于多层神经元,非线性网络,在局部依然近似是抛物面。使用在线学习,每次修正方向以各自样本的梯度方向修正,难以达到收敛。
.
如何选择适中的Batch_size值:
也就是批梯度下降法。因为如果数据集足够充分,那么用一半,甚至少得多的数据训练算出来的梯度与用全部数据训练出来的梯度几乎是一样的。
在合理范围内,增大Batch_size的好处:
1.提高了内存利用率以及大矩阵乘法的并行化效率。
2.减少了跑完