批量梯度下降和随机梯度下降的区别
为了训练线性回归模型,我们必须学习一些模型参数,例如特征权重和偏差项。一种方法是梯度下降,它是一种迭代优化算法,能够通过最小化训练数据的成本函数来调整模型参数。这是一个完整的算法,即只要有足够的时间并且学习率不是很高,就可以保证找到全局最小值(最优解)。广泛用于线性回归和神经网络的梯度下降的两个重要变体是批量梯度下降和随机梯度下降(SGD)。
批量梯度下降: 批量梯度下降涉及在每一步对整个训练集进行计算,因此在非常大的训练数据上非常慢。因此,执行 Batch GD 的计算成本非常高。然而,这对于凸的或相对平滑的误差流形来说非常有用。此外,Batch GD 可以很好地随特征数量扩展。
随机梯度下降: SGD 试图解决批量梯度下降中的主要问题,即使用整个训练数据来计算每一步的梯度。SGD 本质上是随机的,即它在每一步中选取一个“随机”的训练数据实例,然后计算梯度,使其速度更快,因为一次操作的数据要少得多,这与 Batch GD 不同。
SGD 的随机特性有一个缺点,即一旦它接近最小值,它就不会稳定下来,而是会反弹,这为我们提供了一个很好的模型参数值,但不是最优的,这可以通过减少学习来解决每一步的速率可以减少反弹,SGD 可能会在一段时间后稳定在全局最小值。
批量梯度下降和随机梯度下降的区别
编号 | 批量梯度下降 | 随机梯度下降 |
---|---|---|
1 | 使用整个训练样本计算梯度 | 使用单个训练样本计算梯度 |
2 | 速度慢且计算量大的算法 | 比 Batch GD 更快且计算量更低 |
3 | 不建议用于大量训练样本。 | 可用于大型训练样本。 |
4 | 本质上是确定性的。 | 本质上是随机的。 |
5 | 在有足够时间收敛的情况下给出最优解。 | 给出了很好的解决方案,但不是最优的。 |
6 | 无需随机洗牌。数据样本应该是随机顺序的, | 这就是为什么我们要为每个 epoch 打乱训练集的原因。 |
7 | 无法轻易摆脱浅局部最小值。 | SGD 可以更轻松地避开浅局部最小值。 |
8 | 收敛慢。 | 更快地达到收敛。 |