IIWAB 批量梯度下降(BGD)、随机梯度下降(SGD)和小批量梯度下降(Mini - Batch GD) - IIWAB

批量梯度下降(BGD)、随机梯度下降(SGD)和小批量梯度下降(Mini - Batch GD)

IIWAB 2天前 ⋅ 16 阅读

计算方式

  • 批量梯度下降(BGD):每次更新参数时都使用整个训练数据集来计算梯度。具体来说,对于具有(m)个样本的训练集,其梯度计算是对所有样本的损失函数关于参数的偏导数求和,然后再根据梯度更新参数。
  • 随机梯度下降(SGD):每次更新参数时只使用一个随机选择的样本的梯度来更新。即对于每个训练样本,计算其损失函数关于参数的偏导数,并立即用该梯度来更新参数。
  • 小批量梯度下降(Mini - Batch GD):结合了BGD和SGD的特点,每次更新参数时使用一小部分随机选择的样本(称为一个小批量)来计算梯度。通常小批量的大小在几十到几百之间,计算小批量样本的损失函数关于参数的偏导数之和,然后用这个和来更新参数。

收敛速度

  • 批量梯度下降(BGD):由于使用了整个数据集的信息来计算梯度,所以梯度方向比较准确,在凸优化问题中,能够保证收敛到全局最优解。但在非凸问题中,可能会陷入局部最优。当数据集较大时,收敛速度较慢。
  • 随机梯度下降(SGD):每次只使用一个样本更新参数,更新方向具有随机性,因此在训练过程中,目标函数值可能会出现波动,但总体上朝着最优解的方向前进。由于更新频繁,对于大规模数据集,其收敛速度通常比BGD快。
  • 小批量梯度下降(Mini - Batch GD):小批量梯度下降在收敛速度上通常介于BGD和SGD之间。它利用了小批量样本的信息,使得梯度估计相对稳定,同时又不像BGD那样需要处理整个数据集,因此在大规模数据集上能够更快地收敛到最优解附近。

内存占用

  • 批量梯度下降(BGD):需要一次性将整个训练数据集加载到内存中进行计算,当数据集很大时,可能会导致内存不足的问题。
  • 随机梯度下降(SGD):每次只需要一个样本,内存占用非常小,对于大规模数据集,这是一个很大的优势。
  • 小批量梯度下降(Mini - Batch GD):内存占用介于BGD和SGD之间,只需要加载一个小批量的样本到内存中进行计算,通常可以根据硬件资源和数据集大小来选择合适的小批量大小,以平衡内存占用和计算效率。

超参数选择

  • 批量梯度下降(BGD):学习率通常需要设置得比较小,以保证算法的稳定性和收敛性。因为使用整个数据集计算梯度,梯度的方差较小,如果学习率过大,可能会导致参数更新过度,使模型无法收敛甚至发散。
  • 随机梯度下降(SGD):学习率通常需要设置得较大,因为每次更新的梯度具有较大的方差,较小的学习率可能导致算法收敛过慢。为了避免算法在训练后期出现震荡或无法收敛的情况,通常需要采用学习率衰减策略,随着训练的进行逐渐降低学习率。
  • 小批量梯度下降(Mini - Batch GD):学习率的选择相对灵活,可以根据数据集的特点和模型的复杂度进行调整。一般来说,其学习率介于BGD和SGD之间。小批量大小也是一个重要的超参数,需要通过实验来选择合适的值。较小的小批量大小可以增加算法的随机性,有助于避免局部最优,但可能会导致收敛速度变慢;较大的小批量大小可以提高计算效率,但可能会使算法更容易陷入局部最优。

适用场景

  • 批量梯度下降(BGD):适用于数据量较小的数据集,或者对于精度要求较高、需要找到全局最优解的问题。在一些理论分析和小规模实验中比较常用。
  • 随机梯度下降(SGD):适用于大规模数据集,能够快速处理数据并在较短时间内得到一个较好的模型。对于在线学习和实时性要求较高的场景,如推荐系统中的实时更新,SGD是一个不错的选择。
  • 小批量梯度下降(Mini - Batch GD):在实际应用中最为广泛,尤其适用于大规模数据集的深度学习任务。它能够在保证收敛速度的同时,利用小批量样本的统计信息来稳定梯度估计,提高模型的训练效果。大多数深度学习框架都将Mini - Batch GD作为默认的优化算法之一。

全部评论: 0

    我有话说: