随机梯度下降
- 随机梯度下降(Stochastic Gradient Descent,简称SGD)是一种用于训练机器学习算法的优化算法,最值得注意的是深度学习中使用的人工神经网络。该算法的工作是找到一组内部模型参数,这些参数在某些性能测量中表现良好,例如对数损失或均方误差。
- 优化是一种搜索过程,您可以将此搜索视为学习。优化算法称为“ 梯度下降 ”,其中“ 梯度 ”是指误差梯度或误差斜率的计算,“下降”是指沿着该斜率向下移动到某个最小误差水平。该算法是迭代的。这意味着搜索过程发生在多个不连续的步骤上,每个步骤都希望略微改进模型参数。
- 每一步都需要使用模型和当前的一组内部参数对一些样本进行预测,将预测与实际预期结果进行比较,计算误差,并使用误差更新内部模型参数。该更新过程对于不同的算法是不同的,但是在人工神经网络的情况下,使用反向传播更新算法。
什么是Sample?
- Sample是单行数据。它包含输入到算法中的输入和用于与预测进行比较并计算错误的输出。训练数据集由许多行数据组成,例如许多Sample。Sample也可以称为实例,观察,输入向量或特征向量。
现在我们知道Sample是什么,让我们定义一个batch。
什么是Batch?
Batch大小是一个超参数,用于定义在更新内部模型参数之前要处理的样本数。将批处理视为循环迭代一个或多个样本并进行预测。在批处理结束时,将预测与预期输出变量进行比较,并计算误差。从该错误中,更新算法用于改进模型,例如沿误差梯度向下移动。
训练数据集可以分为一个或多个Batch。当所有训练样本用于创建一个Batch时,学习算法称为批量梯度下降。当批量是一个样本的大小时,学习算法称为随机梯度下降。当批量大小超过一个样本且小于训练数据集的大小时,学习算法称为小批量梯度下降。
· 批量梯度下降。批量大小=训练集的大小
· 随机梯度下降。批量大小= 1
· 小批量梯度下降。1 <批量大小<训练集的大小
在小批量梯度下降的情况下,流行的批量大小包括32,64和128个样本。可能会在文献和教程中看到这些值在模型中使用。
什么是Epoch?
Epoch数是一个超参数,它定义了学习算法在整个训练数据集中的工作次数。一个Epoch意味着训练数据集中的每个样本都有机会更新内部模型参数。Epoch由一个或多个Batch组成。例如,如上所述,具有一批的Epoch称为批量梯度下降学习算法。可以将for循环放在每个需要遍历训练数据集的epoch上,在这个for循环中是另一个嵌套的for循环,它遍历每批样本,其中一个批次具有指定的“批量大小”样本数。
epochs 数量传统上很大,通常是数百或数千,允许学习算法运行直到模型的误差被充分地最小化了。可能会看到文献和教程设置为10,100,500,1000和更大的时期数量的示例。通常创建线图,其显示沿x轴的时间以及模型在y轴上的误差或技能。这些图有时被称为学习曲线。这些图可以帮助诊断模型是否已经过度学习,学习不足或者是否适合训练数据集。
Batch和Epoch有什么关系?
- Batch大小是在更新模型之前处理的多个样本。Epoch数是通过训练完整数据集的传递次数。批处理的大小必须大于或等于1且小于或等于训练数据集中的样本数。可以将epoch设置为1和无穷大之间的整数值。可以根据需要运行算法,甚至可以使用除固定数量的epoch之外的其他条件来停止算法,例如模型错误随时间的变化(或缺少变化)。
- 它们都是整数值,并且它们都是学习算法的超参数,例如学习过程的参数,而不是学习过程找到的内部模型参数。必须为学习算法指定batch大小和epoch数。如何配置这些参数没有固定的规则。可以尝试不同的值,看看哪种方法最适合问题。
工作实例
最后,让我们用一个小例子来说明这一点。
假设有一个包含200个样本(数据行)的数据集,并且选择的Batch大小为5和1,000个Epoch。
这意味着数据集将分为40个Batch,每个Batch有5个样本。每批五个样品后,模型权重将更新。
这也意味着一个epoch将涉及40个Batch或40个模型更新。
有1000个Epoch,模型将暴露或传递整个数据集1,000次。在整个培训过程中,总共有40,000Batch。
在这里batchsize为5,若将batchsize设为10,则相应的训练时间也会加倍。
总结
(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;
举个例子,训练集有1000个样本,batchsize=10,那么:
训练一个epoch是100个batch,也就是这1个epoch中iteration是100。