神经网络中的名词解释:梯度下降、Epoch、Batch_size、迭代

(一) 梯度下降

梯度下降是在机器学习中用于寻找最佳结果(即曲线最小值)的一种迭代优化算法。

如下图所示,要使绿色点达到最小值,需要考虑两个问题:1)绿色点向左还是右移动;2)移动多大的距离。

  • 对于向左还是向右移动的问题,我们可以根据数学求导公式来进行判断,即判断曲线还是在绿色点位置是递增还是递减,进而决定点该想哪个方向移动。

神经网络中的名词解释:梯度下降、Epoch、Batch_size、迭代_第1张图片

  • 对于移动多大的距离问题,以下图中绿色和蓝色两个点为例。在两个点位置分别做一条切线,可以看到蓝色点的切线斜率是低于绿色点的。这提示,蓝色点很有可能更加接近最小值,那么此时蓝色点移动的距离就要更小一些。

神经网络中的名词解释:梯度下降、Epoch、Batch_size、迭代_第2张图片

这里只介绍了最最最简单粗暴的理解,建议深入阅读参考资料

  1. 理解梯度下降算法. 知乎
  2. 神经网络训练中,傻傻分不清Epoch、Batch Size和迭代. 机器之心
  3. 浅显易懂!「高中数学」读懂梯度下降的数学原理.机器之心

(二) Batch_size

因为机器学习需要的数据量非常庞大,一次性将数据完全读入计算机内存是不现实的。为了解决这个问题,我们需要把数据分割成一小块,再一块一块地读入到内存中,并且在每一块数据计算完成后,更新神经网络参数的权重。这里所说的“小块”被称为“Batch”,而每一个Batch中的数据量,则成为Bathc_size。


(三) Epoch

上面介绍了,当数据量非常庞大时,需要将数据分割成多个Batch进行计算。而Epoch是指 “当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch。”

简单理解Epoch就是所有的数据在神经网络中做了一次运算。

Epoch 参数设置多少合适?

实际情况下,构建的神经网络模型中,Epoch参数往往设置大于1。原因是:在神经网络中传递完整的数据集一次是不够的,而且我们需要将完整的数据集在同样的神经网络中传递多次。我们使用的是有限的数据集,并且我们使用一个迭代过程即梯度下降,优化学习过程和图示。因此仅仅更新权重一次或者说使用一个 epoch 是不够的。

随着 epoch 数量增加,神经网络中的权重的更新次数也增加,曲线从欠拟合变得过拟合。对于不同的数据集,epoch参数设置的值也不同。数据的多样性也会影响合适的 epoch 的数量。比如,只有黑色的猫的数据集,以及有各种颜色的猫的数据集。

神经网络中的名词解释:梯度下降、Epoch、Batch_size、迭代_第3张图片


(四) 迭代 (Iteration)

上面介绍了,当数据量非常庞大时,需要将数据分割成多个Batch进行计算。1个Batch通过计算过程就被称为1次迭代

因此,对于一个神经网络训练过程而言,迭代次数等于Batch个数

例如,对于一个有 2000 个训练样本的数据集。将 2000 个样本分成大小为 500 的 batch,那么完成一个 epoch 需要 4 个 iteration。

参考资料

  1. https://medium.com/towards-data-science/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9
  2. 神经网络训练中,傻傻分不清Epoch、Batch Size和迭代. 机器之心

你可能感兴趣的:(深度学习)