机器学习之梯度下降法(GD)和坐标轴下降法(CD)
梯度下降法
梯度下降法(Gradient Descent, GD)常用于求解無約束情況下凸函數(shù)(Convex Function)的極小值,是一種迭代類型的算法,因為凸函數(shù)只有一個極值點,故求解出來的極小值點就是函數(shù)的最小值點
梯度下降法的優(yōu)化思想是用當前位置負梯度方向作為搜索方向,因為該方向為當前位置的最快下降方向,所以梯度下降法也被稱為“最速下降法”。梯度下降法中越接近目標值,變量變化越小。計算公式如下
梯度下降法(數(shù)值解)過程
- Step1:初始化θ(隨機初始化)
- Step2:沿著負梯度方向迭代,新的θ 能夠使得J(θ) 更小?α:學習率、步長
- Step3:如果J(θ) 能夠繼續(xù)減小,返回Step2,直到迭代完成。
收斂條件:當目標函數(shù)的函數(shù)值變化非常小的時候或者達到最大迭代次數(shù)的時候,就結束循環(huán)。
注:僅考慮單個樣本的單個 θ 參數(shù)的梯度值
4.2批量梯度下降法(BGD)
使用所有樣本的梯度值作為當前模型參數(shù)θ 的更新
4.3隨機梯度下降法(SGD)
使用單個樣本的梯度值作為當前模型參數(shù)θ的更新
for i= 1 to m,{
}
BGD和SDB的區(qū)別
- SGD速度比BGD快(整個數(shù)據(jù)集從頭到尾執(zhí)行的迭代次數(shù)少)
- SGD在某些情況下(全局存在多個相對最優(yōu)解,J(θ)不是一個二次函數(shù)),SGD有可能會跳出某些小的局部最優(yōu)解,所以一般情況下不會比BGD差;SGD在收斂的位置會存在J(θ)函數(shù)波動的情況,抗噪聲很差。
- BGD一定能夠得到一個局部最優(yōu)解(在線性回歸模型中一定是得到一個全局最優(yōu)解),SGD由于隨機性的存在可能導致最終結果比BGD差
- 注意:優(yōu)先選擇SGD
小批量梯度下降法(MBGD)
- 如果要滿足算法訓練過程較快,又需要保證最終參數(shù)訓練的準確率較高,提出小批量梯度下降法(Mini-batch Gradient Descent,簡稱MBGD)。
- MBGD中是把樣本劃分為b個樣本(b一般為10),然后以這b個樣本的平均梯度為更新方向:
for i = 1 to m/10,{
}
學習率選擇和參數(shù)初始化
由于梯度下降法中負梯度方向作為變量的變化方向,所以有可能導致最終求解的值是局部最優(yōu)解,所以在使用梯度下降的時候,一般需要進行一些調(diào)優(yōu)策略
- 學習率的選擇:學習率過大,表示每次迭代更新的時候變化比較大,有可能會跳過最優(yōu)解;學習率過小,表示每次迭代更新的時候變化比較小,就會導致迭代速度過慢,很長時間都不能結束;
- 算法初始參數(shù)數(shù)值的選擇:初始值不同,最終獲得的最小值也有可能不同,因為梯度下降法求解的是局部最優(yōu)解,所以一般情況下,選擇多次不同初始值運行算法,并最終返回損失函數(shù)最小情況下的結果值;
- 標準化:由于樣本不同特征值的取值范圍不同,可能會導致在各個不同參數(shù)上迭代速度不同,為了減少特征取值的影響,可以將特征進行標準化操作。
BGD、SGD、MBGD的區(qū)別
當樣本量為m的時候,每次迭代BGD算法中對于參數(shù)值更新一次,SGD算法中對于參數(shù)值更新m次,MBGD算法中對參數(shù)值更新m/n次,相對來講SGD的更新速度最快;
SGD算法中對于每個樣本都需要更新參數(shù)值,當樣本值不太正常的時候,就有可能會導致本次的參數(shù)更新會產(chǎn)生相反的影響,也就是說SGD算法的結果并不完全收斂,而是在收斂結果處波動;
SGD算法是每個樣本都更新一次參數(shù)值,所以SGD算法特別適合樣本數(shù)據(jù)量特別大的情況以及在線機器學習(Online ML)
梯度下降法案例代碼
坐標軸下降法
坐標軸下降法(Coordinate Descent,CD)是一種迭代法,通過啟發(fā)式的方法一步步的迭代求解函數(shù)的最小值,和梯度下降法(GD)不同的時候,坐標軸下降法是沿著坐標軸的方向去下降,而不是采用梯度的負方向下降。
坐標軸下降法利用EM算法的思想,在參數(shù)更新過程中,每次均先固定m-1個參數(shù)值,求解剩下的一個參數(shù)的局部最優(yōu)解;然后進行迭代式的更新操作。
坐標軸下降法的核心思想是多變量函數(shù)F(X)可以通過每次沿著一個方向優(yōu)化來獲取最小值。
其數(shù)學依據(jù)是:對于一個可微凸函數(shù)f(θ),其中θ 為?n*1 的向量,如果對于一個解??,使得f(θ) 在某個坐標軸??上都能達到最小值,則? 就是 f(θ) 的全局的最小值點。
在坐標軸下降法中,優(yōu)化方向從算法的一開始就固定了,即沿著坐標的方向進行變化。在算法中,循環(huán)最小化各個坐標方向的目標函數(shù)。即:如果???給定,那么??的第i維度為:
因此,從一個初始的? 求得函數(shù)F(x)的局部最優(yōu)解,可以迭代獲取??的序列,從而可以得到:
坐標軸下降法算法過程:
- 給θ 向量隨機選取一個初值,記做?
- ?對于第k輪的迭代,從?? 開始計算,? 到為止,計算公式如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????
- 檢查???和??向量在各個維度上的變化情況,如果所有維度的變化情況都比較小的話,那么認為結束迭代,否則繼續(xù)k+1輪的迭代
- 在求解每個參數(shù)局部最優(yōu)解的時候可以求導的方式來求解
?
總結
以上是生活随笔為你收集整理的机器学习之梯度下降法(GD)和坐标轴下降法(CD)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ffmpeg系列之编译安卓版ffmpeg
- 下一篇: 多车道交通流理论与应用研究综述思维导图