1.什么是batch

batch,翻译成汉语为批(一批一批的批)。在神经网络模型训练时,比如有1000个样本,把这些样本分为10批,就是10个batch。每个批(batch)的大小为100,就是batch size=100。
每次模型训练,更新权重时,就拿一个batch的样本来更新权重。

2.神经网络训练中batch的作用(从更高角度理解)

从更高的角度讲,”为什么神经网络训练时有batch?“,需要先讲一些预备知识。

当我们求损失loss用于梯度下降,更行权重时,有几种方式。一种是全部的样本用来求loss,这种方式称为批量梯度下降(BGD);一种是随机的选取一个样本,求loss,进而求梯度,这种方式称为随机梯度下降(SGD);BGD和SGB的这种,产生了第三种梯度下降的方法:小批量梯度下降(MBGD)

当我们使用BGD方法来更新权重时,面临一个问题:
我们知道,梯度下降法是求得某个点,使得loss最小。通过往梯度减小的方向更新权重值,可以使得loss减小。如下图所示:
在这里插入图片描述

绿色箭头所示,为梯度减小的方向。沿此方向更新权重,使得loss减小。

但这种方法面临一个很尖锐的问题。当梯度为0时,无论怎么更新权重,loss都不再改变,从而无法找到最优点。如下图所示,当位于红圈标出的区域时,梯度为0,此时梯度下降法就失效了,无法找到最优点。
在这里插入图片描述
但引入随机梯度下降SGD方法时,就能很大程度避免这个问题。

原因时:批量梯度下降时,全部的样本用于求loss。而随机梯度下降是,随机选取一个样本求loss进而求梯度。这种方式就很大程度上规避了梯度为0的情况。即使某次训练更新权重时,梯度为0,下次也不一定为0。而批量梯度下降则不然,本次更新权重时,梯度为0,下次还是0。梯度下降法就失效了。

但批量梯度下降和随机梯度下降有各自的优缺点:

1.使用批量梯度下降时,虽然模型的性能低,但耗费时间时间也低。(由于其求梯度,更新权重时,可以并行计算,因此是求所有样本损失的累加和)

2.使用随机梯度下降时,虽然模型的性能高,但耗费的时间也高。(由于其求梯度,更新权重时,可以并行计算。某步更新权重,要依赖上一步权重)

关于这一块,大家可以参考:批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

因此就提出了一种折中的方法:小批量梯度下降(MBGD)
下图,为三个方法,一次训练时,使用样本量的示意图。
左边红色的大框,指的是批量梯度下降把全部的样本由于一次更新权重的训练。
左边红色的多个小框,表示随机梯度下降随机选取一个样本用于一次更新权重的训练。
蓝色的框,表示把样本分为几批(batch),每次用一批的样本来进行一次更新权重的训练。
在这里插入图片描述

3.补充知识

对卷积神经网络中术语的理解:Epoch、Batch Size和batchsize

所谓
Epoch:1个epoch等于使用训练集中的全部样本训练一次,通俗的讲几次epoch就是整个数据集被轮几次

Batch Size:全部数据是分批来训练的,批的大小称为Batch Size

iteration:1个iteration等于使用batchsize个样本训练一次,也就是说训练一批的样本,称为一次迭代

比如训练集有500个样本,batchsize = 10 ,那么训练完整个样本集:iteration=50,epoch=1.

batch: 深度学习每一次参数的更新所需要损失函数并不是由一个数据获得的,而是由一组数据加权得到的,这一组数据的数量就是batchsize。

batchsize最大是样本总数N,此时就是Full batch learning;最小是1,即每次只训练一个样本,这就是在线学习(Online Learning)。当我们分批学习时,每次使用过全部训练数据完成一次Forword运算以及一次BP运算,成为完成了一次epoch。

参考:

1.批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐