BGD(Batch Gradient Descent)

批量梯度下降法是梯度下降法最原始的形式,它的具体思路是在更新每一参数时都使用所有的样本来进行更新它得到的是一个全局最优解,批量梯度下降法在更新每一个参数时,即每迭代一步,都要用到训练集所有的数据,训练过程会随着样本数量的加大而变得异常的缓慢。

优点:全局最优解;易于并行实现;

缺点:当样本数目很多时,训练过程会很慢。

从迭代的次数上来看,BGD迭代的次数相对较少。其迭代的收敛曲线示意图可以表示如下:

BGD/SGD/MBGD-梯度下降算法

SGD(Stochastic Gradient Descent

随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将参数迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

优点:训练速度快;

缺点:准确度下降,并不是全局最优;不易于并行实现。

从迭代的次数上来看,SGD迭代的次数较多,在解空间的搜索过程看起来很盲目。其迭代的收敛曲线示意图可以表示如下:

BGD/SGD/MBGD-梯度下降算法

MBGD(Mini-batch Gradient Descent)

小批量梯度下降法介于BGD和SGD之间的一种优化算法。每次选取一定量的训练样本进行迭代。速度比BGD快,比SGD慢,精度比BGD低,比SGD高,算法过程如下:

(1)选择n个训练样本(n<m,m为总训练样本数);

(2)在n个样本中进行n次迭代,每次使用一个样本;

(3)对n次迭代得出的n个gradient进行加权平均并在求和,作为这一次mini-batch下降梯度;

(4)不断在训练集中重复以上步骤,直到收敛。


参考博客

相关文章: