深度模型中的優(yōu)化(二)

3、 基本算法

3.1 隨機梯度下降
SGD

SGD算法中一個關(guān)鍵參數(shù)是學(xué)習(xí)率,一般學(xué)習(xí)率應(yīng)隨著時間的推移逐漸降低,學(xué)習(xí)率的最終值應(yīng)設(shè)為大約初始值的1%。

3.2 動量


含有動量的更新規(guī)則

動量的主要目的是解決兩個問題:Hessian矩陣的病態(tài)條件和隨機梯度的方差。一個病態(tài)條件的二次目標函數(shù)看起來像一個長而窄的山谷,動量能夠正確的縱向穿過峽谷。而普通的梯度步驟則會浪費時間在峽谷的窄軸上來回移動。
3.3 Nesterov動量
Nesterov動量

在凸批量梯度的情況下,Nesterov動量能降低額外誤差收斂率,可惜在隨機梯度的情況下并沒有明顯效果。

4、參數(shù)初始化策略
這部分書里寫的不多,找時間再把xavier、MSRA什么的詳細寫一篇吧
5、自適應(yīng)學(xué)習(xí)率方法
5.1 AdaGrad


AdaGrad

5.2 RMSProp


RMSProp

5.3 Adam
Adam

6、 二階近似方法


牛頓法

共軛梯度法

7、 優(yōu)化策略和元方法
7.1 批標準化

BN是一個自適應(yīng)的重參數(shù)化的方法,試圖解決訓(xùn)練非常深的模型的困難。非常深的模型會涉及多個函數(shù)或?qū)咏M合。在其他層不改變的假設(shè)下,梯度用于如何更新每一個參數(shù)。在實踐中,我們同時更新所有層。當我們進行更新時,可能會發(fā)生一些意想不到的結(jié)果,這是因為許多組合在一起的函數(shù)同事改變時,計算更新的假設(shè)是其他函數(shù)保持不變。(下面小公式忒多了,懶得打,只能粘圖了)
image.png

BN保證了采樣自單位高斯的x經(jīng)過w以后,仍然能保持單位高斯。對于線性的模型,低層的參數(shù)在大多數(shù)情況下并沒有什么影響,它們的輸出總是重新標準化為單位高斯,學(xué)習(xí)這個模型也變得非常簡單,而沒有BN,幾乎每個更新都會對層輸出的統(tǒng)計量有著極端的影響。在上面的線性實例中,容易學(xué)習(xí)的代價是使得底層網(wǎng)絡(luò)沒有用,較低層不再有任何有害的影響,但他們也不再有任何有益的影響。而在具有非線性激活函數(shù)的深度神經(jīng)網(wǎng)絡(luò)中,較低層可以進行數(shù)據(jù)的非線性變換,所以它們?nèi)匀皇怯杏玫摹?br> 標準化一個單元的均值和標準差會降低包含該單元的神經(jīng)網(wǎng)絡(luò)的表達能力。為了保持網(wǎng)絡(luò)的表現(xiàn)力,通常會將H替換為

這樣新的參數(shù)可以表示舊參數(shù)作為輸入的同一族函數(shù),但是新參數(shù)有不同的學(xué)習(xí)動態(tài)。其均值不再由H下層中參數(shù)的復(fù)雜關(guān)聯(lián)決定,而是由BN層的參數(shù)決定,這樣新的參數(shù)很容易通過梯度下降來學(xué)習(xí)。

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

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

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