文末給出算法的具體實(shí)現(xiàn),心急的話可以直接跳到最后看
寫完了才發(fā)現(xiàn)有大神寫過了,理論也更完備一些
優(yōu)勢(shì)
- 該方法不需要手動(dòng)調(diào)整學(xué)習(xí)速率
- 對(duì)超參數(shù)不敏感
- 將對(duì)每個(gè)維度的學(xué)習(xí)率單獨(dú)分離出來
- 最小化梯度下降時(shí)的計(jì)算量
- 對(duì)大梯度,噪聲,不同架構(gòu)具有很好的健壯性
- 對(duì)本地或分布式環(huán)境都可很好的應(yīng)用
以下介紹一下該算法的一些背景知識(shí)
學(xué)習(xí)率退火
- 在驗(yàn)證準(zhǔn)確率趨于平穩(wěn)的時(shí)候降低學(xué)習(xí)率
- 或者依據(jù)迭代了多少周期來控制學(xué)習(xí)率
- 然而依然需要添加額外的參數(shù)控制學(xué)習(xí)率衰減的速度
Per-Dimension First Order Methods(將對(duì)每個(gè)維度的學(xué)習(xí)率單獨(dú)分離出來?)
由于參數(shù)矢量的每個(gè)維度都可以以完全不同的方式與全局cost相關(guān),所以可以補(bǔ)償這些差異的每維度學(xué)習(xí)速率通常是很有用的。
動(dòng)量法
- 當(dāng)梯度指向同一個(gè)方向時(shí),加速
-
當(dāng)梯度的符號(hào)一直在改變時(shí)(震蕩),減速
迭代公式 - ρ用于減速之前的學(xué)習(xí)率
- 對(duì)于長(zhǎng)峽谷狀的cost表面而言有了不錯(cuò)的改進(jìn)(相對(duì)于SGD)
- 動(dòng)量法可以將全局學(xué)習(xí)率依據(jù)維度區(qū)分出來
ADAGRAD
2012年之前的一個(gè)新的方法
-
僅僅使用一階信息但是有一些二階的性質(zhì)和思路在里面(??)
ADAGRAD η:所有維度共享的學(xué)習(xí)率
分母是對(duì)之前學(xué)習(xí)率在每個(gè)維度的平方的累和(每個(gè)維度的梯度是最前所有的梯度在這個(gè)維度上的累和,所以是一直增加的)由于這種動(dòng)態(tài)速率隨著梯度幅度的倒數(shù)而增長(zhǎng),所以較大的梯度具有較小的學(xué)習(xí)率,而小梯度具有較大的學(xué)習(xí)率。
因?yàn)樯窠?jīng)網(wǎng)絡(luò)中不同層之間的梯度的差距通常達(dá)到幾個(gè)數(shù)量級(jí),所以這種方法可以被考慮在內(nèi)
分母中梯度的積累與退火有這類似的效果,降低了學(xué)習(xí)的速率。由于梯度在分母中的積累,學(xué)習(xí)率將逐漸下降最終至0(這個(gè)不好)
因?yàn)闊o視了梯度的大小,這種方法對(duì)于參數(shù)的初始條件和對(duì)應(yīng)的梯度大小可能是敏感的,初始梯度大的話,之后的學(xué)習(xí)速率會(huì)下降。但是可以通過增加全局學(xué)習(xí)率來緩解這種情況。
使用Second Order Information
- 上述方法僅利用梯度和函數(shù)評(píng)估來優(yōu)化目標(biāo),二階方法(如牛頓法或準(zhǔn)牛頓法)可以使用黑塞矩陣或近似值。當(dāng)然計(jì)算可能會(huì)因此變得更加昂貴。
-
計(jì)算黑塞矩陣(多元函數(shù)二階導(dǎo)數(shù)打那個(gè)矩陣)的逆矩陣開銷太大,可以通過對(duì)它做對(duì)角矩陣的倒數(shù)近似(?diagonal approximation)黑塞矩陣的逆矩陣來減少計(jì)算量(僅需再多一次額外的forward and back-propagation)
update - μ是改善小曲率區(qū)域的黑塞矩陣調(diào)節(jié)的小常數(shù)。
-
引入黑塞矩陣和類ADAGRAD項(xiàng)可以減輕對(duì)指定學(xué)習(xí)率的需要( Schaul發(fā)現(xiàn))
ADADELTA METHOD
對(duì)ADAGRAD以下缺點(diǎn)的改進(jìn):
- 學(xué)習(xí)率的持續(xù)退火(或shrink)
- 需要人工選擇學(xué)習(xí)率
改進(jìn)方法1:Accumulate Over Window
- 在一個(gè)window
w內(nèi)對(duì)梯度累和,而不是所有的梯度。 -
因?yàn)榇娣?w 之前的梯度是低效的,所以可以用對(duì)先前所有梯度均值(使用RMS即均方根值實(shí)現(xiàn))的一個(gè)指數(shù)衰減作為代替的實(shí)現(xiàn)方法。
改進(jìn)方法2:Correct Units with Hessian Approximation
- 改進(jìn)希望
?x和x之間的units一致(?量綱一致,不是很清楚),而SGD,Momentum,ADAGRAD中的units并不一致,所以他們的參數(shù)更新都是unitsless的
SGD/Momentum/ADAGRAD:unitsless -
但是使用黑塞矩陣的話可以保證units一致(因?yàn)槎A)
Hessian Approximation: correct units -
基于[Becker&LeCun 1988]的近似方法
-
進(jìn)而
-
最后得出近似黑塞矩陣的逆矩陣的表達(dá)式
- 其中假設(shè)x附近的曲率是平滑的,而
Xt-1可以近似xt -
最后的x更新表達(dá)式
- 由于RMS始終大于0,確保了X更新的方向始終與負(fù)梯度同向。
- 分子作為一個(gè)加速項(xiàng),作為動(dòng)量在時(shí)間窗口
w上積累先前的梯度。 - 分母與ADAGRAD相關(guān),因?yàn)槊烤S度的平方梯度信息有助于平衡每個(gè)維度的進(jìn)度,而是在一個(gè)窗口
w上計(jì)算,以確保后期的訓(xùn)練。
最終算法的具體實(shí)現(xiàn)











