batch_size:一次训练所选取的样本数; batch_size的大小影响内存的使用情况,同时也影响模型的优化程度和速度。
batch_size设置合适时的优点:
1.并行化提高了内存的利用率,提高了训练速度
2.使得单个epoch的训练次数变少了,如果要达到相同的精度,需要增加epoch迭代次数
3.使得梯度下降的方向更加准确,batch_size=1,梯度变来变去,网络很难收敛;batch_size越大,其确定的下降方向越准
batch_size的选择决定了梯度下降的方向;如果数据量较小,可以选择全数据集的形式;
batchsize和梯度下降的关系
我们知道,梯度下降需要求得每个参数的梯度,在求每个参数的梯度时,我们是从loss反向传播的,loss的计算和选择多少个样本有关,选择一个样本来计算loss,也就是把batchsize设置成1,这样求得的loss是一个样本的loss图像,和通过n个样本求得的loss图像是不同的,然后我们通过求该loss 下的梯度对参数进行更新,这对应着随机梯度下降;如果batchsize等于4,那我们求得的loss图像就是关于这4个样本,在求每个参数的梯度时,也是通过这4个样本求得,这对应着小批量梯度下降;如果选择全量数据,对应着全批量梯度下降。
1.batchsize=1与随机梯度下降:随机梯度下降就是随机选择一个样本进行前向传播求得loss,然后计算该loss下的参数梯度,参数梯度是通过一个样本计算的。
好处:每次只使用1个样本,能跳出局部最小值和鞍点,泛化能力强
坏处:耗时间,不能并行训练,用时间换空间,过大的样本差异会使得训练震荡,收敛比较慢
2.batchsize>1与小批量梯度下降:
好处:就是其他两个的坏处
3.batchsize=n与全批量梯度下降:
容易陷入局部最小值或鞍点,收敛比较慢(不容易收敛,因为更新的参数要符合所有样本),要求显存大