机器学习中的梯度下降法

  机器学习里面,梯度下降法可以说是随处可见,虽然它不是什么高大上的机器学习算法,但是它却是用来解决机器学习算法的良药。我们经常会用到梯度下降法来对机器学习算法进行训练。

   在很多介绍梯度下降的书籍里,我们看到这样的几个英文单词缩写,BGD,SGD,MBGD。也就是批量梯度下降法BGD,随机梯度下降法SGD,小批量梯度下降法MBGD。

   哦儿啦,举例说明,一般一个线性回归函数的假设函数可以写成:hθ=nj=0θjxj

   则损失函数为:

(1)批量梯度下降法

          批量梯度下降法的思路是更新每一个参数都会使用到所有的样本 ,更新的theta为

这种方法可以看出每次迭代都需要所有的样本,样本m很大会影响速度,该方法可以得到全局最优解。

(2)随机梯度下降法

          随机梯度下降法更新theta的公式是:

随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况,那么可能只用其中部分的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。缺点是SGD的噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。所以虽然训练速度快,但是准确度下降,并不是全局最优。

(3) 小批量梯度下降法

     小批量梯度下降法考虑以上两种方法的优缺点,做出改进。也就是在每次更新参数时候,使用固定a个样本。如总样本1000,取a=10

     

大致情况就是这样,说白了,第一种方法缺点就是每次更新参数都需要全部样本,即使迭代次数少,但是样本很大的情况下,速度也是很慢的,第二种情况就是虽然每次更新参数我不需要全部样本,我只需要一个样本,但是迭代次数会很多,而且往往求得不是最优解,所以第三种方法采用部分小样本进行,每次更新使用固定个样本量,从而达到好的效果。这三种方法没有谁最好最差,具体问题具体分析。

猜你喜欢

转载自www.cnblogs.com/Peijialun/p/9662663.html
今日推荐