機(jī)器學(xué)習(xí)中的共軛梯度法

1、梯度下降法

梯度下降法實現(xiàn)簡單,當(dāng)目標(biāo)函數(shù)是凸函數(shù)時,梯度下降法的解是全局解。一般情況下,其解不保證是全局最優(yōu)解,梯度下降法的速度也未必是最快的。

梯度下降法的優(yōu)化思想:用當(dāng)前位置負(fù)梯度方向作為搜索方向,因為該方向為當(dāng)前位置的最快下降方向,所以也被稱為是”最速下降法“。最速下降法越接近目標(biāo)值,步長越小,前進(jìn)越慢。

缺點:

靠近極小值時收斂速度減慢,求解需要很多次的迭代;

直線搜索時可能會產(chǎn)生一些問題;

可能會“之字形”地下降。


?梯度下降的算法調(diào)優(yōu):

在使用梯度下降時,需要進(jìn)行調(diào)優(yōu)。哪些地方需要調(diào)優(yōu)呢?

  1. 算法的步長選擇。在前面的算法描述中,我提到取步長為1,但是實際上取值取決于數(shù)據(jù)樣本,可以多取一些值,從大到小,分別運(yùn)行算法,看看迭代效果,如果損失函數(shù)在變小,說明取值有效,否則要增大步長。前面說了。步長太大,會導(dǎo)致迭代過快,甚至有可能錯過最優(yōu)解。步長太小,迭代速度太慢,很長時間算法都不能結(jié)束。所以算法的步長需要多次運(yùn)行后才能得到一個較為優(yōu)的值。

  2. 算法參數(shù)的初始值選擇。?初始值不同,獲得的最小值也有可能不同,因此梯度下降求得的只是局部最小值;當(dāng)然如果損失函數(shù)是凸函數(shù)則一定是最優(yōu)解。由于有局部最優(yōu)解的風(fēng)險,需要多次用不同初始值運(yùn)行算法,關(guān)鍵損失函數(shù)的最小值,選擇損失函數(shù)最小化的初值。

3.歸一化。由于樣本不同特征的取值范圍不一樣,可能導(dǎo)致迭代很慢,為了減少特征取值的影響,可以對特征數(shù)據(jù)歸一化,也就是對于每個特征x,求出它的期望xˉˉˉ和標(biāo)準(zhǔn)差std(x),然后轉(zhuǎn)化為:

這樣特征的新期望為0,新方差為1,迭代次數(shù)可以大大加快。

2、牛頓法

牛頓法最大的特點就在于它的收斂速度很快。

優(yōu)點:二階收斂,收斂速度快;

缺點:

牛頓法是一種迭代算法,每一步都需要求解目標(biāo)函數(shù)的Hessian矩陣的逆矩陣,計算比較復(fù)雜。

牛頓法收斂速度為二階,對于正定二次函數(shù)一步迭代即達(dá)最優(yōu)解。

牛頓法是局部收斂的,當(dāng)初始點選擇不當(dāng)時,往往導(dǎo)致不收斂;

二階海塞矩陣必須可逆,否則算法進(jìn)行困難。

關(guān)于牛頓法和梯度下降法的效率對比:

從本質(zhì)上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到一個盆地的最底部,梯度下降法每次只從你當(dāng)前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之后,坡度是否會變得更大。所以,可以說牛頓法比梯度下降法看得更遠(yuǎn)一點,能更快地走到最底部。(牛頓法目光更加長遠(yuǎn),所以少走彎路;相對而言,梯度下降法只考慮了局部的最優(yōu),沒有全局思想。)

根據(jù)wiki上的解釋,從幾何上說,牛頓法就是用一個二次曲面去擬合你當(dāng)前所處位置的局部曲面,而梯度下降法是用一個平面去擬合當(dāng)前的局部曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優(yōu)下降路徑。

牛頓法

首先得明確,牛頓法是為了求解函數(shù)值為零的時候變量的取值問題的,具體地,當(dāng)要求解 f(θ)=0時,如果 f可導(dǎo),那么可以通過迭代公式

來迭代求得最小值。通過一組圖來說明這個過程。

當(dāng)應(yīng)用于求解最大似然估計的值時,變成?′(θ)=0的問題。這個與梯度下降不同,梯度下降的目的是直接求解目標(biāo)函數(shù)極小值,而牛頓法則變相地通過求解目標(biāo)函數(shù)一階導(dǎo)為零的參數(shù)值,進(jìn)而求得目標(biāo)函數(shù)最小值。那么迭代公式寫作:

當(dāng)θ是向量時,牛頓法可以使用下面式子表示:

其中H叫做海森矩陣,其實就是目標(biāo)函數(shù)對參數(shù)θ的二階導(dǎo)數(shù)。

通過比較牛頓法和梯度下降法的迭代公式,可以發(fā)現(xiàn)兩者及其相似。海森矩陣的逆就好比梯度下降法的學(xué)習(xí)率參數(shù)alpha。牛頓法收斂速度相比梯度下降法很快,而且由于海森矩陣的的逆在迭代中不斷減小,起到逐漸縮小步長的效果。

牛頓法的優(yōu)缺點總結(jié):

優(yōu)點:二階收斂,收斂速度快;

缺點:牛頓法是一種迭代算法,每一步都需要求解目標(biāo)函數(shù)的Hessian矩陣的逆矩陣,計算比較復(fù)雜。

3、擬牛頓法

擬牛頓法的本質(zhì)思想是改善牛頓法每次需要求解復(fù)雜的Hessian矩陣的逆矩陣的缺陷,它使用正定矩陣來近似Hessian矩陣的逆,從而簡化了運(yùn)算的復(fù)雜度。

擬牛頓法和最速下降法一樣只要求每一步迭代時知道目標(biāo)函數(shù)的梯度。通過測量梯度的變化,構(gòu)造一個目標(biāo)函數(shù)的模型使之足以產(chǎn)生超線性收斂性。這類方法大大優(yōu)于最速下降法,尤其對于困難的問題。另外,因為擬牛頓法不需要二階導(dǎo)數(shù)的信息,所以有時比牛頓法更為有效。如今,優(yōu)化軟件中包含了大量的擬牛頓算法用來解決無約束,約束,和大規(guī)模的優(yōu)化問題。

4、小結(jié)

在機(jī)器學(xué)習(xí)中的無約束優(yōu)化算法,除了梯度下降以外,還有前面提到的最小二乘法,此外還有牛頓法和擬牛頓法。

梯度下降法和最小二乘法相比,梯度下降法需要選擇步長,而最小二乘法不需要。梯度下降法是迭代求解,最小二乘法是計算解析解。如果樣本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有優(yōu)勢,計算速度很快。但是如果樣本量很大,用最小二乘法由于需要求一個超級大的逆矩陣,這時就很難或者很慢才能求解解析解了,使用迭代的梯度下降法比較有優(yōu)勢。

梯度下降法和牛頓法/擬牛頓法相比,兩者都是迭代求解,不過梯度下降法是梯度求解,而牛頓法/擬牛頓法是用二階的海森矩陣的逆矩陣或偽逆矩陣求解。相對而言,使用牛頓法/擬牛頓法收斂更快。但是每次迭代的時間比梯度下降法長。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容