(1)梯度降低法算法
在迭代问题中,每一次更新w的值,更新的增量为ηv,其中η表示的是步长,v表示的是方向函数
要寻找目标函数曲线的波谷,采用贪心法:想象一个小人站在半山腰,他朝哪一个方向跨一步,可使他距离谷底更近(位置更低),就朝这个方向前进。这个方向能够经过微分获得。选择足够小的一段曲线,能够将这段看作直线段,那么有:优化
其中η表示的是步长,v表示的是方向,而梯度降低的精髓是:spa
经过上边的例子能够看出,只要找到了后边这项的最小值便可,所以当vT与Δ的方向相反时,该值最小,所以,最优的V的值的求法以下:3d
显然上边解决了方向问题,可是还存在步长问题,步子过小的话,速度太慢;过大的话,容易发生抖动,可能到不了谷底。xml
解决方案:距离谷底较远(位置较高)时,步幅大些比较好;接近谷底时,步幅小些比较好(以避免跨过界)。距离谷底的远近能够经过梯度(斜率)的数值大小间接反映,接近谷底时,坡度会减少。设置步幅与梯度数值大小正相关。blog
根据上边优化完成的梯度降低算法,能够获得完整的Logistic Regression Algorithm:it
值得注意的是,梯度降低法,须要同时更新θ1,θ2,...,θn,的值io
(2)随机梯度降低法class
传统的随机梯度降低更新方法:
问题:每次更新都须要遍历全部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/