(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/