您的位置:首页 > 其它

关于梯度下降batch-GD,SGD,Mini-batch-GD,Stochastic GD,Online-GD的介绍

2018-01-22 20:12 381 查看
梯度下降:是求一个函数最小值的一阶迭代优化算法。 为了使用梯度下降找到函数的局部最小值,可以采取与当前点的函数的梯度(或近似梯度)的负值成比例的步骤。 如果取而代之的是与梯度正相关的步骤,则接近该函数的局部最大值; 该程序然后被称为梯度上升。

梯度下降也被称为最速下降。 但是,梯度下降不应该与用于近似积分的最陡下降的方法混淆。

batch、mini-batch、SGD、online的区别在于训练数据的选择上的不同:



1.batch GD

每次迭代的梯度方向由所有训练样本共同投票决定

batch GD的损失函数是:



训练算法为:


batch GD算法是计算损失函数在整个训练集上的梯度方向,沿着该方向搜寻下一个迭代点。“batch”的含义是训练集中所有样本参与每一轮迭代。

2.mini-batch SGD

mini-batch SGD每一轮迭代需要所有的样本参与,对于大规模的机器学习应用,经常有百万级的训练集,计算复杂度非常高。因此有学者提出,反正训练集只是数据分布的一个采样集合,我们能不能在每次迭代只利用部分训练集样本呢,这就是mini-batch算法。

假设训练集有m个样本,每个mini-batch(训练集的一个子集)有b个样本,那么,整个训练集可以分成m/b个mini-batch。我们用w表示一个mini-batch用俄米嘎j表示第j轮迭代中所有mini-batch集合,有:



mini-batch的算法流程如下:



(1)这是介于BSD和SGD之间的一种优化算法。每次选取一定量的训练样本进行迭代。

(2)从公式上似乎可以得出以下分析:速度比BSD快,比SGD慢;精度比BSD低,比SGD高。

3.Stochastic GD(SGD)

随机梯度下降算法(SGD)是mini-batch GD的一个特殊应用。SGD等价于b=1的mini-batch GD。即,每个mini-batch中只有一个训练样本。

使用最速梯度下降法,将进行N次迭代,直到目标函数收敛,或者到达某个既定的收敛界限。每次迭代都将对m个样本进行计算,计算量大。

(1)由于SGD每次迭代只使用一个训练样本,因此这种方法也可用作online learning。

(2)每次只使用一个样本迭代,若遇上噪声则容易陷入局部最优解。

4.Online GD

随着互联网的发展,数据变得越来越廉价。很多应用有实时的,不间断的训练数据产生。在线学习(Online Learning)算法就是充分利用实时数据的一个训练算法。

Online GD于mini-batch GD/SGD的区别在于,所有训练数据只用一次,然后丢弃。这样做的好处是可以最终模型的变化趋势。比如搜索广告的点击率(CTR)预估模型,网民的点击行为会随着时间改变。用batch算法(每天更新一次)一方面耗时较长(需要对所有历史数据重新训练);另一方面,无法及时反馈用户的点击行为迁移。而Online Leaning的算法可以实时的最终网民的点击行为迁移。

5.带Mini-batch的SGD

(1)选择n个训练样本

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

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

(4)不断在训练集中重复以上步骤,直到收敛。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐