2.6 动量梯度下降法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
| 2.5 指數(shù)加權(quán)平均的偏差修正 | 回到目錄 | 2.7 RMSprop |
動(dòng)量梯度下降法 (Gradient Descent with Momentum)
還有一種算法叫做Momentum,或者叫做動(dòng)量梯度下降法,運(yùn)行速度幾乎總是快于標(biāo)準(zhǔn)的梯度下降算法,簡(jiǎn)而言之,基本的想法就是計(jì)算梯度的指數(shù)加權(quán)平均數(shù),并利用該梯度更新你的權(quán)重,在本視頻中,我們呢要一起拆解單句描述,看看你到底如何計(jì)算。
例如,如果你要優(yōu)化成本函數(shù),函數(shù)形狀如圖,紅點(diǎn)代表最小值的位置,假設(shè)你從這里(藍(lán)色點(diǎn))開(kāi)始梯度下降法,如果進(jìn)行梯度下降法的一次迭代,無(wú)論是batch或mini-batch下降法,也許會(huì)指向這里,現(xiàn)在在橢圓的另一邊,計(jì)算下一步梯度下降,結(jié)果或許如此,然后再計(jì)算一步,再一步,計(jì)算下去,你會(huì)發(fā)現(xiàn)梯度下降法要很多計(jì)算步驟對(duì)吧?
慢慢擺動(dòng)到最小值,這種上下波動(dòng)減慢了梯度下降法的速度,你就無(wú)法使用更大的學(xué)習(xí)率,如果你要用較大的學(xué)習(xí)率(紫色箭頭),結(jié)果可能會(huì)偏離函數(shù)的范圍,為了避免擺動(dòng)過(guò)大,你要用一個(gè)較小的學(xué)習(xí)率。
另一個(gè)看待問(wèn)題的角度是,在縱軸上,你希望學(xué)習(xí)慢一點(diǎn),因?yàn)槟悴幌胍@些擺動(dòng),但是在橫軸上,你希望加快學(xué)習(xí),你希望快速?gòu)淖笙蛴乙?#xff0c;移向最小值,移向紅點(diǎn)。所以使用動(dòng)量梯度下降法,你需要做的是,在每次迭代中,確切來(lái)說(shuō)在第 ttt 次迭代的過(guò)程中,你會(huì)計(jì)算微分 dWdWdW , dbdbdb ,我會(huì)省略上標(biāo) [l][l][l] ,你用現(xiàn)有的mini-batch計(jì)算 dW,dbdW,dbdW,db 。如果你用batch梯度下降法,現(xiàn)在的mini-batch就是全部的batch,對(duì)于batch梯度下降法的效果是一樣的。如果現(xiàn)有的mini-batch就是整個(gè)訓(xùn)練集,效果也不錯(cuò),你要做的是計(jì)算 vdW=βvdW+(1?β)dWv_{dW}=\beta v_{dW}+(1-\beta)dWvdW?=βvdW?+(1?β)dW ,這跟我們之前的計(jì)算相似,也就是 v=βv+(1?β)θtv=\beta v+(1-\beta)\theta_tv=βv+(1?β)θt? , dWdWdW 的移動(dòng)平均數(shù),接著同樣地計(jì)算 vdbv_{db}vdb? , vdb=βvdb+(1?β)dbv_{db}=\beta v_{db}+(1-\beta)dbvdb?=βvdb?+(1?β)db ,然后重新賦值權(quán)重, W:=W?αvdWW:=W-\alpha v_{dW}W:=W?αvdW? ,同樣 b:=b?αvdbb:=b-\alpha v_{db}b:=b?αvdb? ,這樣就可以減緩梯度下降的幅度。
例如,在上幾個(gè)導(dǎo)數(shù)中,你會(huì)發(fā)現(xiàn)這些縱軸上的擺動(dòng)平均值接近于零,所以在縱軸方向,你希望放慢一點(diǎn),平均過(guò)程中,正負(fù)數(shù)相互抵消,所以平均值接近于零。但在橫軸方向,所有的微分都指向橫軸方向,因此橫軸方向的平均值仍然較大,因此用算法幾次迭代后,你發(fā)現(xiàn)動(dòng)量梯度下降法,最終縱軸方向的擺動(dòng)變小了,橫軸方向運(yùn)動(dòng)更快,因此你的算法走了一條更加直接的路徑,在抵達(dá)最小值的路上減少了擺動(dòng)。
動(dòng)量梯度下降法的一個(gè)本質(zhì),這對(duì)有些人而不是所有人有效,就是如果你要最小化碗狀函數(shù),這是碗的形狀,我畫(huà)的不太好。
它們能夠最小化碗狀函數(shù),這些微分項(xiàng),想象它們?yōu)槟銖纳缴贤聺L的一個(gè)球,提供了加速度,Momentum項(xiàng)相當(dāng)于速度。
想象你有一個(gè)碗,你拿一個(gè)球,微分項(xiàng)給了這個(gè)球一個(gè)加速度,此時(shí)球正向山下滾,球因?yàn)榧铀俣仍綕L越快,而因?yàn)?β\betaβ 稍小于1,表現(xiàn)出一些摩擦力,所以球不會(huì)無(wú)限加速下去,所以不像梯度下降法,每一步都獨(dú)立于之前的步驟,你的球可以向下滾,獲得動(dòng)量,可以從碗向下加速獲得動(dòng)量。我發(fā)現(xiàn)這個(gè)球從碗滾下的比喻,物理能力強(qiáng)的人接受得比較好,但不是所有人都能接受,如果球從碗中滾下這個(gè)比喻,你理解不了,別擔(dān)心。
最后我們來(lái)看具體如何計(jì)算,算法在此。
所以你有兩個(gè)超參數(shù),學(xué)習(xí)率 α\alphaα 以及參數(shù) β\betaβ , β\betaβ 控制著指數(shù)加權(quán)平均數(shù)。 β\betaβ 最常用的值是0.9,我們之前平均了過(guò)去十天的溫度,所以現(xiàn)在平均了前十次迭代的梯度。實(shí)際上 β\betaβ 為0.9時(shí),效果不錯(cuò),你可以嘗試不同的值,可以做一些超參數(shù)的研究,不過(guò)0.9是很棒的魯棒數(shù)。那么關(guān)于偏差修正,所以你要拿 vdWv_{dW}vdW? 和 vdbv_{db}vdb? 除以 1?βt1-\beta^t1?βt ,實(shí)際上人們不這么做,因?yàn)?0次迭代之后,因?yàn)槟愕囊苿?dòng)平均已經(jīng)過(guò)了初始階段。實(shí)際中,在使用梯度下降法或動(dòng)量梯度下降法時(shí),人們不會(huì)受到偏差修正的困擾。當(dāng)然 vdWv_{dW}vdW? 初始值是0,要注意到這是和 dWdWdW 擁有相同維數(shù)的零矩陣,也就是跟 WWW 擁有相同的維數(shù), vdbv_{db}vdb? 的初始值也是向量零,所以和 dbdbdb 擁有相同的維數(shù),也就是和 bbb 是同一維數(shù)。
最后要說(shuō)一點(diǎn),如果你查閱了動(dòng)量梯度下降法相關(guān)資料,你經(jīng)常會(huì)看到一個(gè)被刪除了的專(zhuān)業(yè)詞匯, 1?β1-\beta1?β 被刪除了,最后得到的是 vdW=βvdW+dWv_{dW}=\beta v_{dW}+dWvdW?=βvdW?+dW 。用紫色版本的結(jié)果就是,所以 vdWv_{dW}vdW? 縮小了 1?β1-\beta1?β 倍,相當(dāng)于乘以 11?β\frac 1 {1-\beta}1?β1? ,所以你要用梯度下降最新值的話(huà), α\alphaα 要根據(jù) 11?β\frac 1 {1-\beta}1?β1? 相應(yīng)變化。實(shí)際上,二者效果都不錯(cuò),只會(huì)影響到學(xué)習(xí)率 α\alphaα 的最佳值。我覺(jué)得這個(gè)公式用起來(lái)沒(méi)有那么自然,因?yàn)橛幸粋€(gè)影響,如果你最后要調(diào)整超參數(shù) β\betaβ ,就會(huì)影響到 vdWv_{dW}vdW? 和 vdbv_{db}vdb? ,你也許還要修改學(xué)習(xí)率 α\alphaα ,所以我更喜歡左邊的公式,而不是刪去了 1?β1-\beta1?β 的這個(gè)公式,所以我更傾向于使用左邊的公式,也就是有 1?β1-\beta1?β 的這個(gè)公式,但是兩個(gè)公式都將 β\betaβ 設(shè)置為0.9,是超參數(shù)的常見(jiàn)選擇,只是在這兩個(gè)公式中,學(xué)習(xí)率 α\alphaα 的調(diào)整會(huì)有所不同。
所以這就是動(dòng)量梯度下降法,這個(gè)算法肯定要好于沒(méi)有Momentum的梯度下降算法,我們還可以做別的事情來(lái)加快學(xué)習(xí)算法,我們將在接下來(lái)的視頻中探討這些問(wèn)題。
課程PPT
| 2.5 指數(shù)加權(quán)平均的偏差修正 | 回到目錄 | 2.7 RMSprop |
總結(jié)
以上是生活随笔為你收集整理的2.6 动量梯度下降法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2.5 指数加权平均的偏差修正-深度学习
- 下一篇: 2.7 RMSprop-深度学习第二课《