SGD(Stochastic Gradient Descent,随机梯度下降)
计算效率高
在深度学习中,数据集通常非常庞大,如果使用传统的梯度下降算法,每次迭代都需要计算整个数据集的梯度,计算量会非常大。而SGD则每次迭代只使用数据集中的一个批次(batch)数据进行更新,大大减少了计算量,从而提高了计算效率。
避免局部最小值
SGD由于每次迭代只使用部分数据计算梯度,引入了一些噪声,这使得参数更新时有一定的随机性和扰动,有助于避免陷入局部最小值,最终收敛到全局最优解。
online learning
SGD可以实现在线学习,即在新数据到来时,无需重新训练整个模型,只需根据新数据微调模型参数即可,这在大规模数据流和增量学习中非常有用。
并行化
SGD的计算过程可以很容易地并行化,不同的线程或GPU可以分别计算不同batch的梯度,然后汇总更新参数,这对于大规模深度模型和大数据集的训练带来了极大的加速。
正则化效果
SGD由于每次更新只使用部分数据,等价于给损失函数增加了一个噪声项,这种随机扰动具有正则化的效果,有助于防止过拟合。
综上所述,SGD在计算效率、优化性能、可扩展性和泛化能力等方面都有显著优势,因此在深度学习领域广为使用和研究。当然也存在一些缺点,比如收敛速度较慢、结果质量受初始化和超参数影响较大等,后续又发展出了各种变体算法如Momentum、AdaGrad、Adam等来加以改进。