batch

batch字面上是批量的意思,在深度学习中指的是计算一次cost需要的输入数据个数。
在batch可以认为上述cost计算公式中的m。
如果数据集比较小,可以将全体数据看做一个batch,即把数据集中每个样本都计算loss然后取其平均值当做cost。

为什么要用batch?

由上述batch可以理解为计算一次cost需要输入的样本个数,当数据集比较大的时候,一次性将所有样本输入去计算一次cost存储会吃不消,因此会采用一次输入一定量的样本来进行训练。
  遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这称为Batch gradient descent,批梯度下降。这种方法缺点很明显,计算量大,吃内存,不适用与在线学习。
  每看一个数据就算一下损失函数,然后求梯度更新参数,这个称为随机梯度下降,stochastic gradient descent。这种方法比较快,但是由于迭代一次仅依靠单一样本,这样很容易在相邻的两次迭代计算的梯度差距非常大,甚至方向相反,因此容易不收敛。
  另一种就是将上述两种方法的折中,称为mini-batch gradient decent。将数据集分成一定数量的批,梯度不容易跑偏容易收敛,同时减少了一次处理的数据数量,因而计算量也小了很多,速度较快。

因而batch是一个很重要的概念,同时batch的大小的选取也至关重要,下篇博客主要介绍batch_size选取的相关知识

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐