累积梯度下降,随机梯度下降,基于mini-batch 的随机梯度下降

1、批量梯度下降的求解思路如下:

(1)将J( θ)对theta求偏导,得到每个 θ对应的的梯度

   累积梯度下降,随机梯度下降,基于mini-batch 的随机梯度下降_第1张图片

(2)由于是要最小化风险函数,所以按每个参数theta的梯度负方向,来更新每个theta

累积梯度下降,随机梯度下降,基于mini-batch 的随机梯度下降_第2张图片

(3)从上面公式可以注意到,它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据,如果m很大,那么可想而知这种方法的迭代速度!!所以,这就引入了另外一种方法,随机梯度下降。

2、随机梯度下降的求解思路如下:

(1)上面的风险函数可以写成如下这种形式,损失函数对应的是训练集中每个样本的粒度,而上面批量梯度下降对应的是所有的训练样本:

累积梯度下降,随机梯度下降,基于mini-batch 的随机梯度下降_第3张图片

(2)每个样本的损失函数,对theta求偏导得到对应梯度,来更新theta

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

3、Mini-batch Gradient Descent

 此算法是将批量梯度下降法中m替换成mini-batch,在此将mini-bach的size远小于m的大小

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

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


4、带Mini-batch的SGD

(1)选择n个训练样本(n

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

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

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


内容截取自博客:http://blog.csdn.net/losteng/article/details/50848407


你可能感兴趣的:(机器学习)