我正在从 Andrew Ng 的教程Mini-batch Gradient Descent学习深度学习。
谁能解释batch GD和mini-batch GD之间的异同?
我正在从 Andrew Ng 的教程Mini-batch Gradient Descent学习深度学习。
谁能解释batch GD和mini-batch GD之间的异同?
这真的很简单。
在不使用小批量的梯度下降中,您将整个训练数据集输入网络,并根据这组数据累积成本函数。然后使用梯度下降来调整网络权重以最小化成本。然后你重复这个过程,直到你得到满意的准确度。例如,如果您有一个由 50,000 个样本组成的训练集,您会将所有 50,000 个样本连同 50,000 个标签一起输入网络,然后执行梯度下降并更新权重。这是一个缓慢的过程,因为您必须处理 50,000 个输入才能执行梯度下降的一步。
为了让事情变得更快,而不是通过网络运行所有 50,000 个输入,您将训练集分成“批次”。例如,您可以将训练集分成 50 个批次,每个批次包含 1000 个样本。您将向网络提供第一批 1000 个样本,累积损失值,然后执行梯度下降并调整权重。然后您输入下一批 1000 个样本并重复该过程。因此,现在,对于 50,000 个样本,您将获得 50 步梯度下降,而不是仅获得 50,000 个样本的梯度下降。这种使用批次的方法可以更快地收敛网络。
另一个答案分别提供了对通常被称为“梯度下降”和“小批量梯度下降”的正确描述,但没有阐明所使用的术语,所以让我对此添加一些注释。
根据我的经验,“batch GD”和“mini-batch GD”可以指代相同的算法,即有些人可能会互换使用“batch GD”和“mini-batch GD”,但其他人可能会使用“batch GD” ”指的是另一个答案的作者所说的“不使用小批量的梯度下降”,即您在执行 GD 步骤之前使用所有训练数据,这有时被称为“梯度下降”(正如我在上面所写的)。