农村嫖妓一区二区三区,成人H无码动漫超W网站,国产精精品级毛片老码老,成人WWW色情在线观看

談?wù)剝?yōu)化算法之一(動量法、Nesterov法、自然梯度法)
作者:翔天盛世
發(fā)布時間:2021-08-10 12:00
瀏覽數(shù):1261

是時候談?wù)剝?yōu)化算法了。不管是求解優(yōu)化目標(biāo)還是為了調(diào)參,只要問題從理論層面上升到實際操作層面,就離不開優(yōu)化算法。本節(jié)講主要圍繞梯度下降(Gradient Descent)算法展開。

動量法(Momentum)

普通的梯度下降法解決常規(guī)問題就足夠了,如線性回歸,但當(dāng)問題變復(fù)雜,普通的梯度下降法就會面臨很多局限。具體來說,對于普通的梯度下降法公式 , 表示學(xué)習(xí)率,含義是每一時間步上梯度調(diào)整的步長(step-size)。當(dāng)接近最優(yōu)值時梯度會比較小,由于學(xué)習(xí)率固定,普通的梯度下降法的收斂速度會變慢,有時甚至陷入局部最優(yōu)。這時如果考慮歷史梯度,將會引導(dǎo)參數(shù)朝著最優(yōu)值更快收斂,這就是動量算法的基本思想。

陷入局部最優(yōu)或在平原部分緩步前行

結(jié)合物理學(xué)上的動量思想,在梯度下降問題中引入動量項m和折扣因子 ,公式變?yōu)? , 。其中, 表示歷史梯度的影響力, 越大,歷史梯度對現(xiàn)在的影響也越大。直觀上來說,要是當(dāng)前時刻的梯度與歷史梯度方向趨近,這種趨勢會在當(dāng)前時刻加強,否則當(dāng)前時刻的梯度方向減弱。若用 表示第t輪迭代的動量, 表示第t輪迭代的更新量,當(dāng) , ,該式的含義是如果梯度保持不變,最終的更新速度會是梯度項乘以學(xué)習(xí)率的 倍。舉例來說, 時,動量算法最終的更新速度是普通梯度下降法的10倍,意味著在穿越“平原”和“平緩山谷”從而擺脫局部最小值時,動量法更有優(yōu)勢。

考慮一個二元函數(shù)的例子, ,利用動量法求最小值。

二元函數(shù)的三維可視化圖

時,在等高線圖上的曲線如下:

圖(a)

時,曲線如下:

圖(b)

觀察比較(a)(b)時可知,當(dāng)折扣率變大時,對歷史梯度的記憶更多,下一步梯度方向會沒這么容易改變過來(從圖上直觀理解,(b)扭轉(zhuǎn)程度不如(a),即(b)的震蕩更明顯)。

牛頓動量(Nesterov)算法

觀察上圖(b)可發(fā)現(xiàn),盡管算法最終找到了最優(yōu)值,但在過程中由于y方向的梯度比x方向大很多,所以軌跡在y方向存在強烈的震蕩抖動。于是Yurii Nesterov在1983年提出了牛頓動量法,改進(jìn)在于不是在 做梯度更新,而是前瞻一步,超前一個動量單位處: 。則梯度修正公式變?yōu)椋? , 。

Nesterov與普通動量更新的比較

在上圖中, 表示普通動量法的梯度更新向量, 表示Nesterov梯度更新向量。直觀分析可知, 會比 超前,即牛頓動量法更新會比動量法快。另一方面,當(dāng) 項越過最優(yōu)點(optimum)時, 指向另一側(cè)梯度上升方向,而 指向梯度下降方向,故牛頓動量法能減弱震蕩。

同樣以之前的二元函數(shù)做例子,使用Nesterov法參數(shù)設(shè)置 時效果如下:

Nesterov算法更新過程錄屏https://www.zhihu.com/video/1092523728449224704自然梯度法(Natural Gradient Descent)

當(dāng)優(yōu)化問題的兩個坐標(biāo)軸尺度差異較大時,動量法在更新過程中會出現(xiàn)震蕩問題,Nesterov算法給出了初步解決,但這兩種方法有一個共性,就是都是從參數(shù)的角度去優(yōu)化模型的,那有沒有可能從模型本身角度來考慮呢?——這就是自然梯度法。在強化學(xué)習(xí)的Natural Actor-Critic算法和TRPO算法中,自然梯度法是強有力的優(yōu)化工具。

自然梯度法用到Fisher信息矩陣(Fisher Information Matrix)對KL散度進(jìn)行近似表示,首先介紹一下Fisher信息矩陣。 表示以 概率計算得到的期望,F(xiàn)isher信息矩陣定義為 。以KL散度表示兩個模型之間的距離,有近似關(guān)系式 。以參數(shù)視角看待梯度下降時,可以把每一輪的優(yōu)化看作這樣一個子優(yōu)化問題:

使用自然梯度法以模型距離視角看待問題時,條件限制項變?yōu)榱?

以Fisher矩陣替代并采用拉格朗日乘子法解帶約束的優(yōu)化問題,原問題變?yōu)?/p>

對 求導(dǎo),得 ,故優(yōu)化方向可以看作 的反方向。

時隔一年,終于把代碼傳上來啦:

https://github.com/zhengsizuo/Deep-Learning-Note/blob/master/basic%20theory/optimization_algorithm.py

參考:《Hands-On Machine Learning with Scikit-Learn and TensorFlow》第11章

地址:北京珠江摩爾國際大廈
電話:18516882688
郵箱:xcni@qq.com
關(guān)注我們
Copyright @ 2010 - 2022 京ICP備11047770號-8 京公網(wǎng)安備11011402012373號