梯度下降新方法簡介
在之前的兩篇文章裡,我們介紹了梯度下降方法的歷史和演變,從批量梯度下降、隨機梯度下降方法到後續的新方法如動量加速法、adagrad、rmsprop、adadelta方法等,本文再介紹幾種比較新的梯度下降方法,即adam方法、以及在這個基礎上的adamax、amsgrad等優化方法。主要是介紹adam方法,其他的幾種方法是在adam方法上的一種再優化,可能適應特定的問題,某種程度有可能不如adam方法更好。
adam方法是最近這10年被提出的新方法,該方法在非凸優化問題的處理上效果較好,比普通的一階梯度下降方法、如sgd、rmsprop、adadelta要更快更好地收斂到區域性最優點;相比於二階梯度下降方法,該方法計算速度較快並且所需的資源較少,因為二階梯度下降方法需要計算海塞矩陣較為耗時。同時,該方法由於不需要設定學習率,是一種自適應的梯度下降方法,並且對於含有部分異常值資料的問題也能穩定收斂到平坦區域性最優點。
該方法的核心思路其實是吸收了之前兩篇文章介紹過的動量法momentum和rmsprop方法的思考,即不僅在學習率調整上是自適應的,而且使用了動量方法進行了加速。在引數的迭代過程中,也是使用了指數加權平均,但是該方法是同時對梯度平方和梯度的指數平均計算,為什麼會對梯度和梯度的平方去做指數平均計算呢,目的就是用來當作梯度的一階矩和二階矩,從而近似達到了二階梯度下降方法的效果。具體公式如下圖:
根據公式我們發現,m(t)和v(t)分別是梯度和梯度平方的指數加權平均求得的,即最近的梯度影響較大,較早的梯度影響較小。但是在後面的兩個步驟裡是對m(t)和v(t)做了修正,因為不修正這兩個引數可能會使得引數與真實值相差較大。最終的引數迭代是hat(m(t))除以sqrt(hat(v(t))+e)的後乘以乙個很小的常數學習速度α,一般是0.001,該方法從最後乙個公式就可以看出梯度和學習率都是自適應的,所以adam在常見的梯度下降方法裡是效果比較好的。
在adam方法的基礎上,又有了幾種變種的方法,比如adamax方法,該方法在梯度迭代還是使用指數加權的方法,但對於學習率使用了max函式,函式內部是梯度和β*u(t-1) 的最大值,其實就是規範了學習率的上確界,公式如下所示:
與此同時,其實還有其他變種的adam方法,比如nadam方法、amsgrad方法,這些方法都是比較新的方法,但沒有明確例子可以說明它們在實際問題上收斂的比adam方法更快或者更好。在後續文章還會介紹步長衰減的技巧以及二階梯度下降方法,但實際上adam方法或者說nadam方法基本就是目前梯度下降方法中下降最快、收斂較好的梯度下降方法了。
總的來說,梯度下降方法的優化是還在繼續的,一階的梯度下降方法的計算效率是較高的,同時收斂的也較好,受異常值的影響較小。二階梯度下降方法由於需要計算海塞矩陣,受異常值的影響較大,不太穩定。初學者在使用不同的梯度下降方法時需要注意使用場景,盡量使用不同的梯度下降方法進行比較,從而達到更穩定的效果。
泛統計理論初探 初探XGBoost方法
初探xgboost方法 在本文中將會繼續介紹整合學習裡的boosting思路,並且會選用xgboost方法來介紹。xgboost是一種優化過的提公升學習方法,該方法在一些競賽或者專案中經常被使用,它的 正確率是比較高的,總體來說效能不錯。其實從該方法的名字我們可以發現,這是一種在gbdt方法的基礎上...
泛統計理論初探 均值漂移演算法初探
均值漂移聚類演算法簡介 本文主要是介紹均值漂移聚類演算法,又稱為mean shift cluster,該演算法屬於無監督學習的聚類方法。主要從演算法的使用場景 步驟 核心思路等角度去介紹演算法。之前其實也介紹過一些聚類的演算法,比如kmeans dbscan等方法,本次介紹的均值漂移聚類演算法是一種...
泛統計理論初探 初探遺傳演算法
遺傳演算法理解與思路 本文將會簡要的介紹遺傳演算法,該方法也是一種啟發式搜尋的演算法,它是 於生物學進化規律的經典概念,就是適者生存 優勝劣汰的思路。該演算法是上個世紀70年代被提出的,它不需要像神經網路之類的方法需要對函式的連續性有要求,而是可以使用基於概率的思路去進行搜尋,結合遺傳 變異 選擇的...