几个概念解释
1、batch_size
batch_size, 又叫 批尺度,作用:决定 梯度下降方向,意义:1次迭代所使用的样本量。
(1)小数据集:
通常在数据集较小时采用Full Batch Learning 即全数据集的形式。使用梯度下降 的方法,一次迭代样本量为全量的数据集。
便于并行计算,数据量大了会比较慢。
(2)大数据集:
数据集较大的时候,Full Batch learning 的方法就不再合适,这时候有两种选择:
一、随机梯度下降,batch_size = 1,即每次迭代的样本数为1;
优点:基于每个采样去修正,修正幅度大了以后,就容易跳出局部极值,避免过拟合发生;速度比全数据集的形式要快;
缺点: 难以并行计算;因为每次更新基于单个采样,很容易导致难以收敛;
二、批梯度下降,Mini-batches Learning ,batch_size = n,即每次迭代的样本数为n,1<n<all;
一部分数据作为一个batch,这种情况每次更新模型修正幅度没有全量数据集形式 那么小,也没有随机梯度下降 那么大,而且可以并行计算,所以速度也比较快。
一般在监督训练阶段,可选择小batch size进行初步训练,让模型跳出局部极值,之后用大的batch size让模型收敛,这样一般能达到较好的效果。
实际运用:
batch_size设的大一些,收敛得快,也就是需要训练的次数少,准确率上升得也很稳定,但是实际使用起来精度不高。
batch_size设的小一些,收敛得慢,而且可能准确率来回震荡(不收敛),所以还要把基础学习速率降低一些;但是实际使用起来精度较高。
合理选择 Batch_Size:
1、有利于提高内存利用率,盲目增大会导至内存不够。
2、一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快;但是要想达到相同的精度,其所花费的时间会大大增加。
3、在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小;增大到一定程度,其确定的下降方向已经基本不再变化。