梯度下降法和随机梯度下降法

(1)梯度下降法

在迭代问题中,每一次更新w的值,更新的增量为ηv,其中η表示的是步长,v表示的是方向

要寻找目标函数曲线的波谷,采用贪心法:想象一个小人站在半山腰,他朝哪个方向跨一步,可以使他距离谷底更近(位置更低),就朝这个方向前进。这个方向可以通过微分得到。选择足够小的一段曲线,可以将这段看做直线段,那么有:

 

其中η表示的是步长,v表示的是方向,而梯度下降的精髓是:

通过上边的例子可以看出,只要找到了后边这项的最小值即可,因此当vT与Δ的方向相反时,该值最小,因此,最优的V的值的求法如下:

显然上边解决了方向问题,但是还存在步长问题,步子太小的话,速度太慢;过大的话,容易发生抖动,可能到不了谷底。

解决方案:距离谷底较远(位置较高)时,步幅大些比较好;接近谷底时,步幅小些比较好(以免跨过界)。距离谷底的远近可以通过梯度(斜率)的数值大小间接反映,接近谷底时,坡度会减小。设置步幅与梯度数值大小正相关。

 

根据上边优化完成的梯度下降算法,可以得到完整的Logistic Regression Algorithm:

 

值得注意的是,梯度下降法,需要同时更新θ1,θ2,...,θn,的值

(2)随机梯度下降法

传统的随机梯度下降更新方法:

问题:每次更新都需要遍历所有data,当数据量太大或者一次无法获取全部数据时,这种方法并不可行。
解决这个问题基本思路是:只通过一个随机选取的数据(xn,yn) 来获取“梯度”,以此对w 进行更新。这种优化方法叫做随机梯度下降。

 


 关于梯度下降法的几点说明:

对于n》=1的梯度下降规则,n表示的是特征的数目

参考自:http://studyai.site/2016/07/29/%E6%96%AF%E5%9D%A6%E7%A6%8F%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E7%A8%8B%20%E7%AC%AC%E4%BA%8C%E5%91%A8%20(2)%E5%A4%9A%E5%85%83%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92%E5%88%86%E6%9E%90/

原文地址:https://www.cnblogs.com/nolonely/p/6184196.html