機(jī)器學(xué)習(xí)中的三種梯度下降法

姓名:尤學(xué)強(qiáng)? 學(xué)號(hào):17101223374

轉(zhuǎn)載自:http://mp.weixin.qq.com/s/DbAagAvzwy8iNYzeA1A8RA

【嵌牛導(dǎo)讀】:采用梯度下降法來(lái)對(duì)采用的算法進(jìn)行訓(xùn)練

【嵌牛鼻子】:函數(shù),算法

【嵌牛提問(wèn)】:怎樣才是最優(yōu)算法?

【嵌牛正文】:

在應(yīng)用機(jī)器學(xué)習(xí)算法時(shí),我們通常采用梯度下降法來(lái)對(duì)采用的算法進(jìn)行訓(xùn)練。其實(shí),常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優(yōu)缺點(diǎn)。

下面我們以線性回歸算法來(lái)對(duì)三種梯度下降法進(jìn)行比較。

一般線性回歸函數(shù)的假設(shè)函數(shù)為:

對(duì)應(yīng)的損失函數(shù)為:

(這里的1/2是為了后面求導(dǎo)計(jì)算方便)

下圖作為一個(gè)二維參數(shù)(theta0,theta1)組對(duì)應(yīng)能量函數(shù)的可視化圖:

下面我們來(lái)分別講解三種梯度下降法

1

批量梯度下降法BGD

我們的目的是要誤差函數(shù)盡可能的小,即求解weights使誤差函數(shù)盡可能小。首先,我們隨機(jī)初始化weigths,然后不斷反復(fù)的更新weights使得誤差函數(shù)減小,直到滿(mǎn)足要求時(shí)停止。這里更新算法我們選擇梯度下降算法,利用初始化的weights并且反復(fù)更新weights:

這里代表學(xué)習(xí)率,表示每次向著J最陡峭的方向邁步的大小。為了更新weights,我們需要求出函數(shù)J的偏導(dǎo)數(shù)。首先當(dāng)我們只有一個(gè)數(shù)據(jù)點(diǎn)(x,y)的時(shí)候,J的偏導(dǎo)數(shù)是:

則對(duì)所有數(shù)據(jù)點(diǎn),上述損失函數(shù)的偏導(dǎo)(累和)為:

再最小化損失函數(shù)的過(guò)程中,需要不斷反復(fù)的更新weights使得誤差函數(shù)減小,更新過(guò)程如下:

那么好了,每次參數(shù)更新的偽代碼如下:

由上圖更新公式我們就可以看到,我們每一次的參數(shù)更新都用到了所有的訓(xùn)練數(shù)據(jù)(比如有m個(gè),就用到了m個(gè)),如果訓(xùn)練數(shù)據(jù)非常多的話,是非常耗時(shí)的。

下面給出批梯度下降的收斂圖:

從圖中,我們可以得到BGD迭代的次數(shù)相對(duì)較少。

2

隨機(jī)梯度下降法SGD

由于批梯度下降每跟新一個(gè)參數(shù)的時(shí)候,要用到所有的樣本數(shù),所以訓(xùn)練速度會(huì)隨著樣本數(shù)量的增加而變得非常緩慢。隨機(jī)梯度下降正是為了解決這個(gè)辦法而提出的。它是利用每個(gè)樣本的損失函數(shù)對(duì)θ求偏導(dǎo)得到對(duì)應(yīng)的梯度,來(lái)更新θ:

更新過(guò)程如下:

隨機(jī)梯度下降是通過(guò)每個(gè)樣本來(lái)迭代更新一次,對(duì)比上面的批量梯度下降,迭代一次需要用到所有訓(xùn)練樣本(往往如今真實(shí)問(wèn)題訓(xùn)練數(shù)據(jù)都是非常巨大),一次迭代不可能最優(yōu),如果迭代10次的話就需要遍歷訓(xùn)練樣本10次。

但是,SGD伴隨的一個(gè)問(wèn)題是噪音較BGD要多,使得SGD并不是每次迭代都向著整體最優(yōu)化方向。

隨機(jī)梯度下降收斂圖如下:

我們可以從圖中看出SGD迭代的次數(shù)較多,在解空間的搜索過(guò)程看起來(lái)很盲目。但是大體上是往著最優(yōu)值方向移動(dòng)。

3

min-batch 小批量梯度下降法MBGD

我們從上面兩種梯度下降法可以看出,其各自均有優(yōu)缺點(diǎn),那么能不能在兩種方法的性能之間取得一個(gè)折衷呢?算法的訓(xùn)練過(guò)程比較快,而且也要保證最終參數(shù)訓(xùn)練的準(zhǔn)確率,而這正是小批量梯度下降法(Mini-batch Gradient Descent,簡(jiǎn)稱(chēng)MBGD)的初衷。

我們假設(shè)每次更新參數(shù)的時(shí)候用到的樣本數(shù)為10個(gè)(不同的任務(wù)完全不同,這里舉一個(gè)例子而已

更新偽代碼如下:

4

實(shí)例以及代碼詳解

這里參考他人博客,創(chuàng)建了一個(gè)數(shù)據(jù),如下圖所示:

待訓(xùn)練數(shù)據(jù)A、B為自變量,C為因變量。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容