神经网络中批量大小的目的是什么?

人工智能 神经网络 深度学习 训练 反向传播 批量大小
2021-10-28 05:53:00

为什么需要批量大小来更新神经网络的权重?

根据3B1B的 Youtube 视频,通过计算神经网络的期望和结果之间的误差来更新权重。在此基础上,应用链式法则来计算新的权重。

按照这个逻辑,我为什么要通过网络传递一个完整的批次?第一个条目不会对权重产生影响。

使用反向传播时是否需要定义批量大小?

2个回答

tl; dr:批量大小是网络在更新其梯度之前看到的样本数。这个数字的范围可以从单个样本到整个训练集。根据经验,在 1 到几百个范围内有一个最佳点,人们体验到最快的训练速度。查看这篇文章了解更多详情。


更详细的解释...

如果您的样本数量足够少,您可以让网络在更新其权重之前查看所有样本;这称为梯度下降这样做的好处是您可以保证权重将在减少整个数据集的训练损失的方向上更新。缺点是它的计算成本很高,并且在大多数情况下对于深度神经网络来说是不可行的。

在实践中所做的是,在更新其权重之前,网络只看到一批训练数据,而不是整个数据集。然而,这种技术并不能保证网络更新其权重以减少数据集的训练损失;相反,它减少了批次的训练损失,这可能不是一回事。这给训练过程增加了噪音,在某些情况下这可能是一件好事,但需要网络采取太多步骤才能收敛(这不是问题,因为每一步都快得多)。

您所说的本质上是每次都在单个样本上训练网络。这正式称为随机梯度下降,但是该术语更广泛地用于包括网络在整个训练集的子集上训练的任何情况。这种方法的问题是它给训练过程增加了太多的噪音,导致它需要更多的步骤才能真正收敛。

我们基本上区分了 3 种形式的批量训练:

Lossminibatch=mlm(W,tm)withmϵM
其中M是整个数据集的(随机)子集。

Lossbatch=blm(W,tb)withbϵB
B整个数据集 在哪里。

Lossstochastic=li(W,ti)
其中i是整个数据集中的单个样本。

t是样本的目标/标签,m,b,iW网络权重。今天最常见的情况通常是小批量训练。

当我们训练(更新神经网络的权重以优化到更低的损失)时,我们取这个损失函数相对于权重 W 的导数。这将给我们 NN 的梯度,它告诉我们多少和多少我们应该在哪个方向更新每个权重。

L=dLossminibatchdW=dmlm(W,tm)dW=mdlm(W,tm)dW=mlm

正如您在小批量案例的示例中看到的那样:总梯度是小批量中每个样本的梯度之和。那么为什么你认为第一个元素对权重更新没有影响呢?还是我理解错了?