博客專欄

        EEPW首頁 > 博客 > 深度學習最全優化方法總結比較(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)

        深度學習最全優化方法總結比較(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)

        發布人:計算機視覺工坊 時間:2023-04-23 來源:工程師 發布文章
        00  前言

        本文僅對一些常見的優化方法進行直觀介紹和簡單的比較,各種優化方法的詳細內容及公式只好去認真啃論文了,在此我就不贅述了。

        01  SGD

        此處的SGD指mini-batch gradient descentm,關于batch gradient descent、 stochastic gradient descent 以及 mini-batch gradient descent的具體區別就不細說了。現在的SGD一般都指mini-batch gradient descent。SGD就是每一次迭代計算mini-batch的梯度,然后對參數進行更新,是最常見的優化方法了。即:圖片其中,圖片是學習率,圖片是梯度SGD完全依賴于當前batch的梯度,所以圖片可以理解為允許當前的batch的梯度多大程度影響參數更新。圖片缺點(正因為有這些缺點才讓這么多大神發展出了后續的各種算法)· 選擇合適的learning rate比較困難 - 對所有的參數更新使用同樣的learning rate。對于稀疏數據或者特征,有時我們可能想更新快一些對于不經常出現的特征,對于常出現的特征更新慢一些,這時候SGD就不太能滿足要求了。· SGD容易收斂到局部最優,并且在某些情況下可能被困在鞍點。

        02  Momentum

        momentum是模擬物理里動量的概念,積累之前的動量來替代真正的梯度。公式如下:圖片其中,圖片是動量因子。特點:· 下降初期時,使用上一次參數更新,下降方向一致,乘上較大的圖片能夠進行很好的加速。· 下降中后期時,在局部最小值來回震蕩的時候,圖片圖片使得更新幅度增大,跳出陷阱。· 在梯度改變方向的時候,圖片能夠減少更新,總而言之,momentum項能夠在相關方向加速SGD,抑制振蕩,從而加快收斂。

        03  Nesterov

        nesterov項在梯度更新時做一個校正,避免前進太快,同時提高靈敏度。將上一節中的公式展開可得:圖片可以看出,圖片并沒有直接改變當前梯度圖片,所以Nesterov的改進就是讓之前的動量直接影響當前的動量。即:圖片所以,加上nesterov項后,梯度在大的跳躍后,進行計算對當前梯度進行校正。如下圖:
        圖片momentum首先計算一個梯度(短的藍色向量),然后在加速更新梯度的方向進行一個大的跳躍(長的藍色向量),nesterov項首先在之前加速的梯度方向進行一個大的跳躍(棕色向量),計算梯度然后進行校正(綠色梯向量)。其實,momentum項和nesterov項都是為了使梯度更新更加靈活,對不同情況有針對性。但是,人工設置一些學習率總還是有些生硬,接下來介紹幾種自適應學習率的方法。

        04  Adagrad

        Adagrad其實是對學習率進行了一個約束。即:圖片

        此處,對圖片從1到圖片進行一個遞推形成一個約束項regularizer,圖片圖片用來保證分母非0。

        特點:· 前期圖片較小的時候,regularizer較大,能夠放大梯度。· 后期圖片較大的時候,regularizer較小,能夠約束梯度。· 適合處理稀疏梯度。缺點:· 由公式可以看出,仍依賴于人工設置一個全局學習率。· 圖片設置過大的話,會使regularizer過于敏感,對梯度的調節太大。· 中后期,分母上梯度平方的累加將會越來越大,使圖片,使得訓練提前結束。05  AdadeltaAdadelta是對Adagrad的擴展,最初方案依然是對學習率進行自適應約束,但是進行了計算上的簡化。Adagrad會累加之前所有的梯度平方,而Adadelta只累加固定大小的項,并且也不直接存儲這些項,僅僅是近似計算對應的平均值。即:圖片在此處Adadelta其實還是依賴于全局學習率的,但是作者做了一定處理,經過近似牛頓迭代法之后:

        圖片

        其中,圖片代表求期望。
        此時,可以看出Adadelta已經不用依賴于全局學習率了。
        特點:· 訓練初中期,加速效果不錯,很快· 訓練后期,反復在局部最小值附近抖動

        06  RMSprop

        RMSprop可以算作Adadelta的一個特例,圖片=0.5時:圖片就變為了求梯度平方和的平均數。如果再求根的話,就變成了RMS(均方根):圖片此時,這個RMS就可以作為學習率圖片的一個約束:
        圖片特點:· 其實RMSprop依然依賴于全局學習率。· RMSprop算是Adagrad的一種發展,和Adadelta的變體,效果趨于二者之間。· 適合處理非平穩目標 - 對于RNN效果很好。

        07  Adam

        Adam(Adaptive Moment Estimation)本質上是帶有動量項的RMSprop,它利用梯度的一階矩估計和二階矩估計動態調整每個參數的學習率。Adam的優點主要在于經過偏置校正后,每一次迭代學習率都有個確定范圍,使得參數比較平穩。公式如下:圖片其中,圖片圖片分別是對梯度的一階矩估計和二階矩估計,可以看作對期望圖片圖片的估計;圖片圖片是對圖片圖片的校正,這樣可以近似為對期望的無偏估計。可以看出,直接對梯度的矩估計對內存沒有額外的要求,而且可以根據梯度進行動態調整,而 圖片對學習率形成一個動態約束,而且有明確的范圍。特點:· 結合了Adagrad善于處理稀疏梯度和RMSprop善于處理非平穩目標的優點。· 對內存需求較小。· 為不同的參數計算不同的自適應學習率。· 也適用于大多非凸優化 - 適用于大數據集和高維空間。

        08  Adamax

        Adamax是Adam的一種變體,此方法對學習率的上限提供了一個更簡單的范圍。公式上的變化如下:圖片可以看出,Adamax學習率的邊界范圍更簡單。

        09  Nadam

        Nadam類似于帶有Nesterov動量項的Adam。公式如下:圖片可以看出,Nadam對學習率有了更強的約束,同時對梯度的更新也有更直接的影響。一般而言,在想使用帶動量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果。

        10  經驗之談

        · 對于稀疏數據,盡量使用學習率可自適應的優化方法,不用手動調節,而且最好采用默認值。· SGD通常訓練時間更長,但是在好的初始化和學習率調度方案的情況下,結果更可靠。· 如果在意更快的收斂,并且需要訓練較深較復雜的網絡時,推薦使用學習率自適應的優化方法。· Adadelta,RMSprop,Adam是比較相近的算法,在相似的情況下表現差不多。· 在想使用帶動量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果。
        最后展示兩張比較厲害的圖,一切盡在圖中......圖片損失平面等高線圖片在鞍點處的比較

        本文僅做學術分享,如有侵權,請聯系刪文。


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 延津县| 五指山市| 曲靖市| 休宁县| 阿鲁科尔沁旗| 施甸县| 公安县| 延边| 遂川县| 桂东县| 尼勒克县| 池州市| 黄石市| 金门县| 宜良县| 名山县| 罗江县| 西林县| 邵武市| 怀远县| 鹤岗市| 榆林市| 怀化市| 泉州市| 丰城市| 临洮县| 陆川县| 富川| 武冈市| 西华县| 罗甸县| 桦川县| 上饶市| 康保县| 缙云县| 甘洛县| 县级市| 饶阳县| 高阳县| 久治县| 仁布县|