泛統計理論初探——再談梯度下降方法優化

數據挖掘-再談梯度下降優化方法

再談梯度下降優化方法
   在上一篇文章,我們簡單的介紹了梯度下降方法和一些簡單的優化方法,比如隨機梯度下降方法可以對原有的梯度下降方法進行優化和加速,在這個基礎上又有小批量梯度下降方法和動量加速梯度下降方法進行優化,防止最後下降的震盪現象,可以更加快速得到最終的穩定最優解。本文要在上次文章的基礎上,再介紹一些常見的梯度下降優化方法,也是最近十幾年提出的一些方法,因爲之前文章提出的動量加速隨機梯度下降方法是上世紀60年代提出的,時間比較早,經過這些年深度學習以及機器學習的發展,已經有一些效果更好的優化方法,比如AdaGrad、RMSprop、Adadelta方法,下面我們分別介紹這些方法。
   之前文章介紹過隨機梯度下降方法,實際上隨機梯度下降方法在具體的競賽和應用中是有缺陷的,因爲當參數維度較高的時候,不同的參數收斂程度不同,有些參數收斂的很快、有些的參數收斂的很慢,也就是說到某個階段的時候,某些參數已經收斂到比較優的狀態而另一些參數還沒有收斂,這種情況使用隨機梯度下降是不理想的,因爲隨機梯度下降方法是對所有的模型的參數使用相同的下降速度,所以需要使用AdaGrad方法進行優化。該方法的公式如下所示:
在這裏插入圖片描述
    我們先看公式的右邊,其實形式和隨機梯度下降方法有些類似,都是學習率乘以梯度g,但是AdaGrad在分母放了sqrt®+δ ,δ是一個很小的非零數,用以避免分母爲0的情況,上面這種形式就是AdaGrad方法的特點,因爲這個r就是累計歷史梯度的平方和得到的,通過這個累計的梯度平方和,可以使得各個參數的下降速度得以調整,下降的比較快的、收斂的比較穩定的參數就會略微下降,因爲這個時候通過分母可以將下降的速率降低到非常小的一個值,而對於下降不多的參數,則會大幅下降。所以從AdaGrad方法就可以發現,該算法的核心思路就是隨着不斷迭代,整體的學習速度就會變慢,即開始大幅下降、後續小幅下降;下降的快的參數讓它慢慢下降、下降的慢的參數讓它加速下降。
    在上面的AdaGrad梯度下降方法的基礎上,又提出了RMSprop方法,該方法和AdaGrad的思路是一樣的,但是在計算梯度累計的步驟是通過指數求和的形式來計算的,即最近的梯度權重較大,最開始一些梯度權重較小。它的公式如下所示:
在這裏插入圖片描述
   根據公式發現,左邊的式子也就是梯度下降的累計方法是指數加權的形式,因爲每一次p*r都是代表上一次的梯度累計結果,這種形式可以保證和當前梯度最近的幾步的重要性較大,之前的重要性較小。最終也是加上一個非常小的數值δ防止分母變爲0,該方法是AdaGrad方法的一種改進,同樣都是累計梯度的思想,RMSprop方法更看重最近的幾步梯度。
   然後還有一個Adadelta方法,該方法是一種自動適應並自動修改學習率的梯度下降方法,基本思路也和AdaGrad方法相同,但是不需要額外設置學習速率η的大小,而是根據當前梯度和當前參數變化之間的互相影響來決定學習速率的。該方法的公式如下所示:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
   其實公式的含義就是對梯度進行指數累計的加權,也就是第一個式子;然後計算當前參數的變化,就是第二個式子;然後對當前的參數的變化進行指數累計的加權處理,也就是第三個式子;最後得到的結果迭代到新的參數上即可。從公式可以看出,學習率是動態計算的,可以自適應並且調整的,可以在一定程度限制前兩種方法學習率跳動的問題。
   總的來說,這三種改進方法都是對隨機梯度下降方法的改進,但是在不同的使用場景下AdaDelta方法和RMSprop方法各有優勢,由於AdaGrad方法和RMSprop方法需要設定學習率這個超參數,即學習率設置的不好會影響下降的效果,而AdaDelta方法是動態計算學習速率的,所以效果會好一點,但是會稍慢一些,因爲動態計算學習速率稍微耗時間一些。初學者需要了解各個方法的原理和思路,對於不同的場景使用不同的梯度下降方法,從而更好更快的進行參數收斂找到最優值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章