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