梯度下降法是一种在机器学习和深度学习中广泛使用的优化算法。它用于最小化某个函数,通常是损失函数或成本函数,通过迭代调整参数来找到函数的最小值点。梯度下降法的基本思想是从一个初始参数出发,沿着损失函数梯度(导数)的反方向按照一定步长更新参数,直到收敛到一个最小值点。
梯度下降法根据计算梯度时使用的数据量不同,可以分为以下几种主要变体:
1. 批量梯度下降(Batch Gradient Descent):在每次迭代时使用整个训练集来计算梯度。这种方法每次更新都很准确,但计算成本较高,特别是当数据集很大时。
2. 随机梯度下降(Stochastic Gradient Descent,SGD):在每次迭代时仅使用一个训练样本来计算梯度。这种方法计算速度快,但噪声较多,可能导致收敛路径非常不规则。随机梯度下降的更新规则与批量梯度下降类似,区别在于仅用一个样本来计算梯度。
3. 小批量梯度下降(Mini-batch Gradient Descent):结合了批量梯度下降和随机梯度下降的优点。在每次迭代时使用一小部分训练样本来计算梯度。这种方法既能减少计算成本,又能相对减少噪声,是实际应用中常用的方法。小批量梯度下降的更新规则与前两者类似,只是计算梯度时使用了一小批样本。