精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
詳解梯度下降法的三種形式BGD,SGD以及MBGD

詳解梯度下降法的三種形式BGD,SGD以及MBGD

本篇文章目錄如下:


1.批量梯度下降法BGD原理講解

2.隨機(jī)梯度下降法SGD原理講解

3.小批量梯度詳解MBGD原理講解

4.具體實(shí)例以及三種實(shí)現(xiàn)方式代碼詳解

5.三種梯度下降法的總結(jié)



在應(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ù)減小直到滿足要求時(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)。


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


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


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


更新偽代碼如下:



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


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



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

我希望通過(guò)這些訓(xùn)練數(shù)據(jù)給我訓(xùn)練出一個(gè)線性模型,用于進(jìn)行下面數(shù)據(jù)的預(yù)測(cè),test集合如下:



比如我們給出(3.1,5.5)希望模型預(yù)測(cè)出來(lái)的值與我們給定的9.5的差別是多少?這不是重點(diǎn),重點(diǎn)是我們訓(xùn)練模型過(guò)程中的參數(shù)更新方法(這是我們這篇文章的重點(diǎn))批梯度下降以及隨機(jī)梯度下降代碼如何實(shí)現(xiàn)。


下面分別來(lái)講:

首先我們看批梯度下降法的代碼如下:



這里有可能還是比如抽象,為了讓大家更好的弄懂理解這倆個(gè)重要的方法,我下面結(jié)合例子,一行一行代碼解釋:



我們看隨機(jī)梯度下降法的代碼如下:



與批梯度下降最大的區(qū)別就在于,我們這里更新參數(shù)的時(shí)候并沒(méi)有將所有訓(xùn)練樣本考慮進(jìn)去然后求和除以總數(shù),而是我自己編程實(shí)現(xiàn)任取一個(gè)樣本點(diǎn)代碼中random函數(shù)就能清楚看到,然后利用這個(gè)樣本點(diǎn)進(jìn)行更新!這就是最大的區(qū)別!


那么到這個(gè)時(shí)候,我們也非常容易知道小批量隨機(jī)梯度下降法的實(shí)現(xiàn)就是在這個(gè)的基礎(chǔ)上,隨機(jī)取batch個(gè)樣本,而不是1個(gè)樣本即可,掌握了本質(zhì)就非常容易實(shí)現(xiàn)!


下面給出這個(gè)線性模型所有代碼,訓(xùn)練,預(yù)測(cè)以及結(jié)果供參考:由于公眾號(hào)對(duì)代碼排版很不友好,整個(gè)代碼我用貼圖片表示,如果需要源代碼文件,歡迎留言,私信yizhen20133868!

除去上面?zhèn)z個(gè)方法的代碼實(shí)現(xiàn),還有預(yù)測(cè),以及主邏輯代碼如下:


預(yù)測(cè)代碼:



主邏輯代碼:



最后運(yùn)行結(jié)果為:



說(shuō)明與我們給定的真實(shí)值是完全對(duì)應(yīng)的。


5三種梯度下降方法的總結(jié)


1.批梯度下降每次更新使用了所有的訓(xùn)練數(shù)據(jù),最小化損失函數(shù),如果只有一個(gè)極小值,那么批梯度下降是考慮了訓(xùn)練集所有數(shù)據(jù),是朝著最小值迭代運(yùn)動(dòng)的,但是缺點(diǎn)是如果樣本值很大的話,更新速度會(huì)很慢。


2.隨機(jī)梯度下降在每次更新的時(shí)候,只考慮了一個(gè)樣本點(diǎn),這樣會(huì)大大加快訓(xùn)練數(shù)據(jù),也恰好是批梯度下降的缺點(diǎn),但是有可能由于訓(xùn)練數(shù)據(jù)的噪聲點(diǎn)較多,那么每一次利用噪聲點(diǎn)進(jìn)行更新的過(guò)程中,就不一定是朝著極小值方向更新,但是由于更新多輪,整體方向還是大致朝著極小值方向更新,又提高了速度。


3.小批量梯度下降法是為了解決批梯度下降法的訓(xùn)練速度慢,以及隨機(jī)梯度下降法的準(zhǔn)確性綜合而來(lái),但是這里注意,不同問(wèn)題的batch是不一樣的聽(tīng)?zhēng)熜指艺f(shuō),我們nlp的parser訓(xùn)練部分batch一般就設(shè)置為10000,那么為什么是10000呢,我覺(jué)得這就和每一個(gè)問(wèn)題中神經(jīng)網(wǎng)絡(luò)需要設(shè)置多少層,沒(méi)有一個(gè)人能夠準(zhǔn)確答出,只能通過(guò)實(shí)驗(yàn)結(jié)果來(lái)進(jìn)行超參數(shù)的調(diào)整。


好了,本篇文章要講的已經(jīng)講完了,真心希望對(duì)大家理解有幫助,歡迎大家指錯(cuò)交流!


參考:

梯度下降算法以及其Python實(shí)現(xiàn)

[Machine Learning] 梯度下降法的三種形式BGD、SGD以及MBGD

致謝:郭江師兄,曉明師兄,德川


近期文章預(yù)告:

《詳解K近鄰算法》

《詳解貝葉斯分類以及代碼實(shí)現(xiàn)》

《詳解增強(qiáng)學(xué)習(xí)MDP過(guò)程》

版權(quán)所有,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)!


開(kāi)通了[自然語(yǔ)言處理與機(jī)器學(xué)習(xí)]公眾號(hào),記錄自己在cs,ml,nlp中的學(xué)習(xí)所得,不保證是很難得知識(shí),但一定是我理解的干貨,歡迎按住下面二維碼掃描關(guān)注!


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
梯度下降法的三種形式BGD、SGD以及MBGD
深度學(xué)習(xí)模型中的梯度下降算法優(yōu)化方法
機(jī)器學(xué)習(xí)最優(yōu)化算法總結(jié)!!
梯度下降算法綜述
機(jī)器學(xué)習(xí)(2)之回歸算法
深度學(xué)習(xí)框架TensorFlow系列之(五)優(yōu)化器1
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 临夏县| 吉安县| 常熟市| 芷江| 九龙县| 恩施市| 宕昌县| 伊宁县| 常宁市| 阿拉尔市| 清远市| 淮安市| 太仆寺旗| 邮箱| 卓尼县| 乐东| 镇平县| 安丘市| 铜陵市| 若尔盖县| 平泉县| 桐梓县| 友谊县| 安平县| 青浦区| 汉川市| 丰镇市| 年辖:市辖区| 双峰县| 吴旗县| 阿拉善左旗| 来宾市| 赣州市| 乌什县| 涡阳县| 桃园县| 阿瓦提县| 衡水市| 乐都县| 亳州市| 石柱|