通俗易懂讲解梯度下降法,随机梯度下降法

【通俗易懂讲解梯度下降法,随机梯度下降法】随机梯度下降算法是什么?

通俗易懂讲解梯度下降法,随机梯度下降法


随机梯度下降算法是基于梯度下降法中最原始的方法——批量梯度下降法(BGD)的缺点而演变出的改良 。在训练过程中常见的损失函数为:批量梯度下降法(Batch Gradient Descent,简称BGD)的方法是先求偏导,再用每个θ各自的梯度负方向依次更新每个θ:它的效果如图:可以看出是一种思路简单、易于实现的算法,并且在较少迭代次数的情况下就可以得到全局最优解,但是每次迭代都要调用全部数据,如果样本数量(上面式子中的m)较大,将会导致计算极其慢 。
基于这一缺点,随机梯度下降法(Stochastic Gradient Descent,简称SGD)被提出 。它不再每次迭代都用上所有样本,而是每次迭代仅仅对一个样本进行更新,从而达到对于数量庞大的样本只需使用其中的相对少量就把θ最优化的目的 。它的方法是在改写损失函数之后,θ的更新是基于每个样本对theta求偏导后所得梯度:相比BGD算法SGD算法速度大幅提升,几十万条样本基本只需要用上万或者只要上千条样本就饿可以得到结果 。
但是SGD伴随更多噪音、最优化方向准确度下降的问题 。效果如下图,可以看出相比于BGD,SGD迭代次数显著增加,并且并不是每一次迭代都是向着最优化方向 。同时,SGD算法在实现难度上不如BGD算法简单 。虽然理论上BGD比SGD得到全局最优,但是在生产场景中,并不是每一个最优化问题中的目标函数都是单峰的,反而是sgd更容易跳出局部最优 。

    推荐阅读