Momentum提岔、RMSprop是兩種對梯度下降法的改進方法仙蛉,他們能夠使梯度下降運行得更快,而Adam算法又是Momentum和RMSprop的結(jié)合碱蒙,下面我們具體來看捅儒。
指數(shù)加權(quán)移動平均(EWMA)
要理解Momentum梯度下降,必須要理解指數(shù)加權(quán)移動平均振亮,那么首先我們來看什么是移動平均。移動平均的本質(zhì)是一種低通濾波鞭莽,他的目的是過濾掉時間序列中的高頻擾動坊秸,只保留低頻趨勢。假設(shè)我們有一個時間序列和某個過濾函數(shù)
澎怒,在任意時刻
低通濾波可以表示為時間序列
和過濾函數(shù)
在整個時域上的卷積
在實際中用不到無窮多的數(shù)據(jù)褒搔,那么我們考慮一個滑動的長為的窗口
但是由于我們沒有辦法得到時間序列的未來數(shù)據(jù)(從到
段),所以我們將這個窗口向前移動
喷面,于是
這樣做就造成了這個濾波有滯后性(由于我們沒有未來數(shù)據(jù))星瘾,即對于當(dāng)前的數(shù)據(jù)不敏感,所以我們有了加權(quán)移動平均惧辈,即我們希望通過賦予當(dāng)前數(shù)據(jù)更大的權(quán)重來使得該移動平均對當(dāng)前數(shù)據(jù)變化更加敏感琳状,如果我們用簡單線性函數(shù)來進行加權(quán),設(shè)加權(quán)函數(shù)
那么我們得到的移動加權(quán)平均為
如果僅采用線性權(quán)重盒齿,所得移動加權(quán)平均仍然可能出現(xiàn)滯后性念逞,這是因為之前的項衰減的不夠快,所以我們引出指數(shù)加權(quán)平均边翁,即加權(quán)函數(shù)
指數(shù)衰減翎承,設(shè)衰減因子為
,有
如果寫成遞推的形式就是
這就是指數(shù)加權(quán)移動平均符匾。
Momentum梯度下降(GD with Momentum)
Momentum梯度下降相較于梯度下降不同的地方在于:不再使用梯度作為學(xué)習(xí)步長叨咖,而是使用梯度的指數(shù)加權(quán)移動平均。即
很自然的一個問題是,這樣做的好處是什么甸各?接下來我們做一些定性的解釋垛贤。假設(shè)我們要最小化的目標(biāo)函數(shù)在初始化到極值點的范圍內(nèi)是凹的(convex),那么我們在模型上運行梯度下降的過程可能是
為什么會是這個樣子痴晦?由于學(xué)習(xí)率不可能做到無窮小南吮,而目標(biāo)函數(shù)
的導(dǎo)數(shù)是不斷變化的,所以在每一步梯度下降時誊酌,僅僅開始的那一點是朝著梯度的方向優(yōu)化部凑,而除了那一點后的其他點,優(yōu)化的方向都不再是梯度的方向碧浊,而會有一個夾角涂邀。就如同在碗沿上放一個小球,給它一個橫向初速度箱锐,那么由于速度的影響比勉,小球運動的方向不會總是梯度的方向。
如上圖驹止,如果能夠平均掉一些“縱向”的移動浩聋,那么學(xué)習(xí)率就能“貢獻”更多給“橫向”移動,那么梯度下降就會運行得更快臊恋。我們之前假設(shè)目標(biāo)函數(shù)在我們優(yōu)化域內(nèi)是凹的(不是凹的也會近似成立)衣洁,幾次相鄰的梯度下降時,圖中“縱向”移動的部分很可能是相反的抖仅,我們采用指數(shù)加權(quán)移動平均把這些“縱向”部分平均掉一些坊夫,從而能加速算法,這就是定性地理解Momentum為什么有用撤卢。
在學(xué)習(xí)RMSprop之前环凿,我們先看一下另外兩個算法Rprop和AdaGrad,因為RMSprop是通過這兩個算法改進的放吩,了解這兩個算法對于理解RMSprop很有幫助智听。
Rprop梯度下降
在運行學(xué)習(xí)算法的過程中,我們可能會陷入局部極惺郝(local optimal)和鞍點(saddle point)瞭稼,事實上,由于參數(shù)空間維度通常較高腻惠,陷入局部極小的情況很少环肘,而陷入鞍點幾乎是一個普遍情況(特別在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中),這樣的壞處是集灌,目標(biāo)函數(shù)在一個(或幾個)方向上梯度為0悔雹,而其余方向上不為0(甚至很大)复哆,那么參數(shù)就會在那些不為0的方向上擺動,導(dǎo)致優(yōu)化效率很低腌零,所以Rprop算法引入了梯度上下界梯找,也就是說讓梯度的大小至多(或至少)應(yīng)該是多少,設(shè)為最終采用的梯度大小益涧,
和
分別是該步和上一步的梯度锈锤,
和
分別是梯度上下限,那么Rprop可以表示為
直觀理解就是闲询,當(dāng)梯度朝著一個方向前進時久免,將它約束在某個內(nèi),避免由于梯度過大產(chǎn)生的偏差太大扭弧;當(dāng)梯度在某個點附近擺動時阎姥,將它約束在某個
以上,給予它足夠大的能量鸽捻,讓它能夠擺脫局部最優(yōu)呼巴。
AdaGrad梯度下降
AdaGrad也是為了解決鞍點和局部最優(yōu)而出現(xiàn)的,是Rprop的一種改進御蒲。Rprop的缺點很明顯衣赶,梯度容錯率過低,如果存在一系列同號的梯度和突然的變號梯度厚满,在所有同號梯度中屑埋,梯度會被削弱,而最后的變號梯度會被加強痰滋,如果變號梯度是由于計算錯誤導(dǎo)致的,那么這個錯誤將會被無限放大(特別是如果算出來的梯度本身就是很大的值的時候)续崖。所以AdaGrad采用了累計平方梯度的思想敲街,也就是用梯度自身的大小來約束梯度。
其中是一個為了保證分母不過小的量严望。直觀理解就是多艇,對梯度的平方進行累計,將其方根作為一個正則化因子像吻,這樣峻黍,當(dāng)
過大的時候,它也較大拨匆,
較小的時候姆涩,它也較小,對梯度做了正則化惭每,讓它保持在某個范圍內(nèi)骨饿。
AdaGrad的缺點也是很明顯的,隨著訓(xùn)練的進行,會越來越大宏赘,這樣梯度會逐漸減小绒北,訓(xùn)練提前結(jié)束。
RMSprop梯度下降
RMSprop對AdaGrad做了一點改進察署,不再使用單純的和累計闷游,而是用了指數(shù)移動加權(quán)平均。
這樣做的好處就是贴汪,首先脐往,可以通過調(diào)整來決定
對當(dāng)前數(shù)據(jù)的敏感程度,其次由于指數(shù)移動平均加權(quán)就自帶了正則化嘶是,所以
不會一直增大钙勃,而是會由加權(quán)窗口的數(shù)據(jù)平均決定,這樣就很好地解決了問題聂喇。
Adam梯度下降
了解了Momentum辖源,RMSprop,我們只要把他們結(jié)合起來就是著名的Adam算法希太。也就是
對梯度項做了指數(shù)加權(quán)平均和正則化克饶,這樣這個算法就很健壯(robust)了。
至此誊辉,我們已經(jīng)了解了Adam算法矾湃。迄今為止,由于它的健壯性堕澄,Adam算法還在廣泛用于深度神經(jīng)網(wǎng)絡(luò)中邀跃,是一種很有效的算法。