原理

在深度学习中,批量梯度下降是一种优化算法,用于最小化损失函数,其中代表模型参数。其基本思想是利用整个训练集的梯度来更新模型参数。

参数更新

损失函数

在批量梯度下降时,损失函数为训练集上所有样本的损失值之和除以样本个数:

  • :数据集的总大小。

参数更新

为了最小化损失函数,我们需要根据它的梯度来调整参数 。在批量梯度下降算法中,使用该梯度更新规则迭代地调整参数 直到收敛:

  • :学习率。
  • :目标函数第个参数的梯度。

优点和缺点

优点

  • 全局最优解
    • 对于凸误差曲面或准凸函数,BGD能够收敛到全局最优解;
    • 对于非凸函数,则可能收敛到局部最优解。
  • 稳定收敛
    • 由于每次更新都基于整个数据集,因此每次更新都非常稳定,导致平滑的收敛过程。
  • 方向精确性
    • 使用所有训练样本计算梯度,能够更准确地估计损失函数的下降方向,减少噪声干扰,收敛路径更稳定。
  • 易于并行化
    • 由于需要处理所有样本,可以通过矩阵运算并行化计算梯度,提升计算效率。

缺点

  • 计算成本高
    • 需要计算整个训练集的梯度,这在大规模数据集上是非常昂贵的。
  • 计算效率低
    • 尤其是在大数据集上,因为每次迭代都需要遍历整个数据集,所以BGD的迭代速度相对较慢。
  • 无法在线学习
    • 无法实时更新模型参数,必须等待所有数据处理完毕才能进行一次迭代,不适用于动态数据或实时场景。
  • 内存占用高
    • 需要将整个训练数据集加载到内存中。
    • 也可以分批计算损失,累加后一次性进行梯度更新,但实现上很少使用。