本文主要介紹了常用的一些機(jī)器學(xué)習(xí)中常用的優(yōu)化算法。
在機(jī)器學(xué)習(xí)的世界中,通常我們會發(fā)現(xiàn)有很多問題并沒有最優(yōu)的解,或是要計算出最優(yōu)的解要花費(fèi)很大的計算量,面對這類問題一般的做法是利用迭代的思想盡可能的逼近問題的最優(yōu)解。我們把解決此類優(yōu)化問題的方法叫做優(yōu)化算法,優(yōu)化算法本質(zhì)上是一種數(shù)學(xué)方法,常見的優(yōu)化算法包括梯度下降法、牛頓法、Momentum,Nesterov Momentum,Adagrad,Adam等。其實大部分機(jī)器學(xué)習(xí)算法的本質(zhì)都是建立優(yōu)化模型,通過優(yōu)化算法對損失函數(shù)(優(yōu)化的目標(biāo)函數(shù))進(jìn)行優(yōu)化,從而訓(xùn)練出最好的模型。
(1)梯度下降法
梯度下降法是最常用的一種優(yōu)化算法。其核心思想是:在當(dāng)前位置尋找梯度下降最快的方向,來逐漸逼近優(yōu)化的目標(biāo)函數(shù)。且離目標(biāo)函數(shù)越近,逼近的“步伐”也就越小。梯度下降法本質(zhì)是一種迭代方法,常用于機(jī)器學(xué)習(xí)算法的模型參數(shù)求解。其示意圖如下圖1所示:
圖1梯度下降法
梯度下降法的更新公式為:
其中α為梯度上每次逼近的步長,前邊的“-”表示搜索方向為負(fù)梯度的方向,L我損失函數(shù)。算法更新終止的條件是梯度向量接近于0即可。此外需要特別注意的是,梯度下降法不一定能夠找到全局的最優(yōu)解,很有可能找到的是一個局部最優(yōu)解。
(2)梯度下降法的變式
通常基于梯度的下降方法又有很多變式,我們主要為大家介紹:隨機(jī)梯度下降法(SGD), Momentum, Nesterov Momentum, Adagrad, Adam。
隨機(jī)梯度下降法是每次使用一批數(shù)據(jù)進(jìn)行梯度的計算,而非計算全部數(shù)據(jù)的梯度,因為如果每次計算全部數(shù)據(jù)的梯度,會導(dǎo)致運(yùn)算量加大,運(yùn)算時間變長,容易陷入局部最優(yōu)解,而隨機(jī)梯度下降可能每次不是朝著真正最小的方向,這樣反而可以跳出局部的最優(yōu)解。
Momentum是在隨機(jī)梯度下降法的基礎(chǔ)上,增加了動量(Momentum)的技術(shù)。其核心是通過優(yōu)化相關(guān)方向的訓(xùn)練和弱化無關(guān)方向的振蕩,來加速SGD訓(xùn)練。Momentum的方法能夠在一定程度上緩解隨機(jī)梯度下降法收斂不穩(wěn)定的問題,并且有一定的擺脫陷入局部最優(yōu)解的能力。
Nesterov Momentum是基于Momentum的加速算法,相比于傳統(tǒng)的動量算法,最大的優(yōu)化是計算經(jīng)過動量更新之后的位置梯度。
Adagrad即adaptive gradient,是一種自適應(yīng)學(xué)習(xí)率的梯度法。它通過記錄并調(diào)整每次迭代過程中的前進(jìn)方向和距離,使得針對不同問題都有一套自適應(yīng)學(xué)習(xí)率的方法。Adagrad最大的優(yōu)勢是不需要手動來調(diào)整學(xué)習(xí)率,但與此同時會降低學(xué)習(xí)率。
Adam即Adaptive Moment Estimation,是能夠自適應(yīng)時刻的估計方法,能夠針對每個參數(shù),計算自適應(yīng)學(xué)習(xí)率。這是一種綜合性的優(yōu)化方法,在機(jī)器學(xué)習(xí)實際訓(xùn)練中,往往能夠取得不錯的效果。
(3)牛頓法和擬牛頓法
與上述梯度類型的優(yōu)化算法最大的不同是,牛頓法是一種二階收斂算法,所以它的收斂速度相較于一階算法會更快。牛頓法二階的意義在于它不僅會沿著梯度最大的方向下降,還會考慮走的下一步坡度是不是也很大,它能夠以較遠(yuǎn)的目光全局的逼近目標(biāo)函數(shù)。其算法的具體步驟為:
1)首先選擇接近于函數(shù)f(x)的零點x0,并計算f(x0)處的斜率f’(x0)。然后我們求解以下方程,得到比剛剛的x0更加準(zhǔn)確的解x1。
2)接下來我們利用x1進(jìn)行下一輪的迭代,迭代公式如下所示。這樣經(jīng)過反復(fù)的迭代過程,我們便能取得函數(shù)f(x)的最優(yōu)解。
牛頓法的迭代示意圖如下所示:
圖2 牛頓法
雖然牛頓法相較于梯度下降法等優(yōu)化算法收斂速度更快,但每一步都需要求解復(fù)雜的Hessian矩陣,計算非常不易。所以后來美國Argonne國家實驗室的物理學(xué)家W.C.Davidon又針對牛頓法計算復(fù)雜的缺陷提出了擬牛頓法。它的核心思想是使用正定矩陣來近似Hessian矩陣的逆,從而簡化了運(yùn)算的復(fù)雜。另外,因為擬牛頓法不需要二階導(dǎo)數(shù)的信息,所以現(xiàn)在擬牛頓法在機(jī)器學(xué)習(xí)實際問題中應(yīng)用更加的廣泛。
【總結(jié)】:除了以上幾類較為常見的優(yōu)化算法以外,還有共軛梯度法、啟發(fā)式優(yōu)化算法等。在實際的機(jī)器學(xué)習(xí)問題中,往往需要具體問題具體分析,根據(jù)每類優(yōu)化問題的特征,選擇合適的優(yōu)化算法。
-
算法
+關(guān)注
關(guān)注
23文章
4615瀏覽量
92984 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8422瀏覽量
132720
發(fā)布評論請先 登錄
相關(guān)推薦
評論