机器学习之数学原理笔记(四)
最優(yōu)化
隨著大數(shù)據(jù)的到來,并行計算的流行,實際上機(jī)器學(xué)習(xí)領(lǐng)域的很多研究者會把重點(diǎn)放在最優(yōu)化方法的研究上,如large scale computation。那么為什么要研究最優(yōu)化呢?我們先從機(jī)器學(xué)習(xí)研究的目的說起。機(jī)器學(xué)習(xí)理論主要是設(shè)計和分析一些讓計算機(jī)可以自動“學(xué)習(xí)”的算法,這些算法可以從數(shù)據(jù)中自動分析獲得規(guī)律,并利用規(guī)律對未知數(shù)據(jù)進(jìn)行預(yù)測,并可用于發(fā)現(xiàn)數(shù)據(jù)之間隱藏的關(guān)系,解釋某些現(xiàn)象的發(fā)生。至于為什么要讓機(jī)器去做這些事情,原因很簡單,數(shù)據(jù)量和維度過于龐大,無法通過人腦簡單的處理或分析這些數(shù)據(jù)。比如,我們無法通過百萬級的DNA序列分析各序列和疾病發(fā)生的關(guān)系,也無法在一定有限的時間內(nèi)標(biāo)定出1萬張圖像上人臉的位置。所以 研究者傾向于建立一些機(jī)器學(xué)習(xí)模型,通過輸入一個樣本(一個人的DNA序列或者是一副圖片),輸出樣本的標(biāo)簽(是否患病、頭像的位置)。這些學(xué)習(xí)模型里有大量可以調(diào)整的參數(shù),它們通過調(diào)整參數(shù)組合,擬合高維空間訓(xùn)練樣本數(shù)據(jù)的分布,識別出數(shù)據(jù)和標(biāo)簽之間復(fù)雜的關(guān)系。目前已有的神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)、AdaBoost、卷積神經(jīng)網(wǎng)絡(luò)等算法,它們的共同特點(diǎn)是通過調(diào)整參數(shù)讓模型的目標(biāo)函數(shù)盡可能大或者小(如logistic回歸是使得分類錯誤率盡量小)。為了達(dá)到該目的,不同的機(jī)器學(xué)習(xí)算法首先會設(shè)定不同的目標(biāo)函數(shù),然后給參數(shù)賦上隨機(jī)初值,最后用各種下降法更快更好地尋找能讓分類錯誤率更小的參數(shù)組合。
所以,從廣義上講,機(jī)器學(xué)習(xí)算法的本質(zhì)上是優(yōu)化問題求解,例如,梯度下降、牛頓法、共軛梯度法都是常見的機(jī)器學(xué)習(xí)算法優(yōu)化方法。那么有人肯定會有疑問,這不還是調(diào)參數(shù)、選擇參數(shù)么?這個參數(shù)優(yōu)化與之前的調(diào)參的概念是不同的,之前說的調(diào)參是針對算法中的自由參數(shù)(即通過經(jīng)驗指定的參數(shù),用過weka或者R的人應(yīng)該知道,如SVM中的gamma或者logistic回歸中的懲罰因子lamda),這些參數(shù)主要是控制學(xué)習(xí)模型的泛化能力,防止過擬合。而這里通過優(yōu)化算法迭代出的參數(shù)則是目標(biāo)函數(shù)中待求解的參數(shù),例如,神經(jīng)網(wǎng)絡(luò)中各隱含層節(jié)點(diǎn)的權(quán)值、logistic回歸中各自變量的系數(shù)。對于不同目標(biāo)函數(shù)和不同優(yōu)化算法,產(chǎn)生的問題也各不相同,比如某些目標(biāo)函數(shù)不是凸函數(shù)也不是無約束的優(yōu)化問題,無法直接利用梯度下降算法求解,又例如梯度下降法往往只能保證找到目標(biāo)函數(shù)的局部最小值,找不到全局最小值,那么該怎么解決這些問題呢?答案是不一味的強(qiáng)行采用梯度下降,而是引入其他變量(拉格朗日乘子)將有約束問題轉(zhuǎn)化為無約束問題,也可以適當(dāng)爬爬山,說不定能跳出小水溝(局部極小值)找到真正的深井(全局極小值),這種算法叫模擬退火。也可以增大搜索范圍,讓一群螞蟻(蟻群算法)或者鳥兒(粒子群算法)一齊搜索,或者讓參數(shù)巧妙地隨機(jī)改變(遺傳算法)。所以,如何更快的找到目標(biāo)函數(shù)的全局最小值或者全局最大值,如何避免陷入局部最優(yōu)解是優(yōu)化算法研究的重點(diǎn)。
講了這么多,主要是為了說明機(jī)器學(xué)習(xí)與最優(yōu)化問題的聯(lián)系,也為大家更好的理解后續(xù)機(jī)器學(xué)習(xí)算法提供基礎(chǔ)。接下來,我們會把講解重點(diǎn)放在放在最優(yōu)化及凸優(yōu)化理論上。
1. 最優(yōu)化問題
數(shù)值優(yōu)化問題或者簡稱為優(yōu)化問題主要是求問題的解,優(yōu)化問題具有以下一般形式:
minimize?f0(x)subject?to?fi(x)<bi,?i=1,…,m(1.1)minimize?f0(x)subject?to?fi(x)<bi,?i=1,…,m(1.1)
其中,函數(shù)f0f0為目標(biāo)函數(shù),函數(shù)fi:Rn→Rfi:Rn→R為不等式,或約束函數(shù)。x=(x1,…,xn)x=(x1,…,xn)為向量,是目標(biāo)函數(shù)的待優(yōu)化參數(shù)(optimization variables),也稱為優(yōu)化問題的可行解,常量b1,…,bmb1,…,bm稱為邊界或約束。當(dāng)存在向量x?x?,使得滿足上式約束的任意向量zz,存在f0(x?)<f0(z)f0(x?)<f0(z),則向量x?x?稱為上式(1.1)的最優(yōu)解。當(dāng)不存在約束時,優(yōu)化問題稱為無約束的優(yōu)化問題,反之,稱為有約束的優(yōu)化問題。對于有約束的優(yōu)化問題,當(dāng)目標(biāo)函數(shù)以及約束函數(shù)fi(x),?i=0,…,mfi(x),?i=0,…,m滿為線性函數(shù),則稱該優(yōu)化問題為線性規(guī)劃(linear programming)。例如,fi(x)fi(x)滿足fi(αx+βy)=αfi(x)+βfi(y)fi(αx+βy)=αfi(x)+βfi(y);如果目標(biāo)函數(shù)或者約束函數(shù)不滿足線性關(guān)系,則稱優(yōu)化問題為非線性規(guī)劃(nonlinear programming)。如果目標(biāo)函數(shù)和約束函數(shù)都滿足凸函數(shù)不等式的性質(zhì),即:fi(αx+βy)≦αfi(x)+βfi(y)fi(αx+βy)≦αfi(x)+βfi(y),其中α+β=1,?α≧0,β≧0α+β=1,?α≧0,β≧0則該優(yōu)化問題可稱為凸優(yōu)化問題。很明顯, 線性規(guī)劃問題也服從凸優(yōu)化問題的條件,只有αα和ββ具有一定的特殊取值時,不等式才能變成等式成立,因此,凸優(yōu)化問題是線性規(guī)劃問題的一般形式。
對于機(jī)器學(xué)習(xí)而言,其一般表現(xiàn)為從一系列潛在的模型集合中尋找一個模型能最好的滿足先驗知識以及擬合觀測數(shù)據(jù)。模型訓(xùn)練的目的在于找到分類錯誤或者預(yù)測誤差最小的模型參數(shù)值。相對于優(yōu)化問題,這里所說的先驗知識可以對應(yīng)成優(yōu)化問題的約束函數(shù),而目標(biāo)函數(shù)則是一個評價觀測值和估計值差別的函數(shù)(均方誤差函數(shù)),或者是評價觀測數(shù)據(jù)服從某模型下某組參數(shù)值的可能性的函數(shù)(似然函數(shù))。因此,還是像之前所說過的,機(jī)器學(xué)習(xí)其實就是一個優(yōu)化問題,優(yōu)化問題的相關(guān)研究進(jìn)展會極大影響機(jī)器學(xué)習(xí)領(lǐng)域的發(fā)展。
最優(yōu)化算法即用于求解優(yōu)化問題的方法,啊,簡直是廢話。。。最優(yōu)化算法的計算效率(時間復(fù)雜度和空間復(fù)雜度)會嚴(yán)重限制算法的應(yīng)用,例如,對于非光滑函數(shù),傳統(tǒng)的優(yōu)化算法一般不會有較好的效果;優(yōu)化參數(shù)維度較高時,有些優(yōu)化算法也不適用。優(yōu)化問題中,最常見的是最小二乘問題和線性規(guī)劃,接下來會對這兩個基本的優(yōu)化問題做簡要介紹。
a. 最小二乘問題
最小二乘問題(Least-Square problems)是無約束優(yōu)化問題,同時,目標(biāo)函數(shù)是具有aTix?biaiTx?bi形式的線性表達(dá)式的平方和,其一般形式可記為:
minimize?f0(x)=∥Ax?b∥2=k∑i=1(aTix?bi)2(1.2)minimize?f0(x)=∥Ax?b∥2=∑i=1k(aiTx?bi)2(1.2)
其中,A?Rk×n,?k≧nA?Rk×n,?k≧n為觀測樣本集合,向量xx為待優(yōu)化參數(shù)。
最小二乘問題是回歸分析的根本,最小二乘問題很容易辨認(rèn),當(dāng)目標(biāo)函數(shù)為二次函數(shù)時,即可認(rèn)為該優(yōu)化問題為最小二乘問題。我們學(xué)過的解決該問題的最簡單的方法是最小二乘法,我們可以將式(1.2)簡化為求解線性等式,(ATA)x=ATb(ATA)x=ATb。因此,我們可以獲得求解該問題的解析式x=(ATA)?1ATbx=(ATA)?1ATb。該方法的時間復(fù)雜度為n2kn2k,當(dāng)樣本數(shù)量以及特征維度較低時(百維、千維),一般計算機(jī)會在幾秒內(nèi)求的最優(yōu)解,當(dāng)使用更好的計算資源時,對于同樣的樣本量計算時間會呈指數(shù)衰減(摩爾定律)。但是,對于需要滿足實時計算要求時,如果樣本特征維度高于百萬級別,采用最小二乘法求解就會變的不可行。所以,我們一般會采用梯度下降等迭代優(yōu)化方法求解上述目標(biāo)函數(shù)的可行解,當(dāng)然為了防止過擬合,可選擇懲罰(regularization)或者偏最小二乘(weighted least-squares)解決該問題。
b. 線性規(guī)劃
線性規(guī)劃是優(yōu)化問題的另一個重要分支,其一般形式為:
miniminze?cTxsubject?to?aTix≦bi,?i=1,…,m(1.3)miniminze?cTxsubject?to?aiTx≦bi,?i=1,…,m(1.3)
對于線性規(guī)劃問題,不存在類似最小二乘問題的一步求解方法,即最小二乘法,但是可用于解決線性規(guī)劃問題的方法很多,如simplex方法,內(nèi)插點(diǎn)法。雖然無法直接一步求解,但是我們可以通過控制迭代次數(shù)或設(shè)置停止迭代條件來減少運(yùn)算的時間復(fù)雜度,例如,內(nèi)插點(diǎn)法的時間復(fù)雜度為n2mn2m,其中m≧nm≧n。另外,采用迭代法求解優(yōu)化問題不一定能像最小二乘法一樣求得全局最優(yōu)解,但目前的迭代算法大多場合下可以達(dá)到最小二乘法一樣的準(zhǔn)確度,而且,可滿足實時計算的需求。
同時,很多優(yōu)化問題都可以轉(zhuǎn)換成線性規(guī)劃問題,如Chebyshev approximation problem:
minimize?maxi=1,…,k∣aTix?bi∣(1.4)minimize?maxi=1,…,k∣aiTx?bi∣(1.4)
其中,x為待優(yōu)化參數(shù)。Chebyshev優(yōu)化問題與最小二乘問題類似,但最小二乘問題可微(矩陣半正定),而Chebyshev目標(biāo)函數(shù)不可微,所以無法采用最小二乘法求解。我們需要將目標(biāo)函數(shù)進(jìn)行轉(zhuǎn)化,即可轉(zhuǎn)化成線性規(guī)劃:
minimize?tsubject?to?aTix?t≦bi,??aTix?t≦?bi,?wherei=1,…,k(1.5)minimize?tsubject?to?aiTx?t≦bi,??aiTx?t≦?bi,?wherei=1,…,k(1.5)
這樣,我們就可采用simplex等方法求解該對偶線性規(guī)劃問題。
c. 凸優(yōu)化
凸函數(shù)的定義在上面已經(jīng)介紹過了,即:
minimize?f0(x)subject?to?fi(x)<bi,?i=1,…,m(1.6)minimize?f0(x)subject?to?fi(x)<bi,?i=1,…,m(1.6)
其中,函數(shù)f0,…,fm:Rn→Rf0,…,fm:Rn→R為凸函數(shù)。
凸函數(shù)定義為:
fi(tx+(1?t)y)≦tfi(x)+(1?t)fi(y)fi(tx+(1?t)y)≦tfi(x)+(1?t)fi(y),其中t≧0(1.7)t≧0(1.7)
也就是說,凸函數(shù)其函數(shù)圖像上方的點(diǎn)集是凸集,函數(shù)圖像上的任意兩點(diǎn)確定的弦在其圖像上方,這里需要點(diǎn)明的是國內(nèi)某些教材上關(guān)于凸函數(shù)和凹函數(shù)的定義與這里寫的正好相反,這里的凸函數(shù)是直觀視覺上的凹函數(shù),即碗形函數(shù)。凸函數(shù)的定義在定義域C上的凸函數(shù)可表現(xiàn)為
?
凸函數(shù)的判定方法一般是求解其二階導(dǎo)數(shù)(如果存在),如果其二階導(dǎo)數(shù)在區(qū)間上非負(fù),則該函數(shù)為凸函數(shù)。當(dāng)且僅當(dāng),二階導(dǎo)數(shù)在區(qū)間上恒大于0,則函數(shù)稱為嚴(yán)格凸函數(shù)。凸函數(shù)具有如下性質(zhì):
(1) 凸函數(shù)的一階導(dǎo)數(shù)在區(qū)間內(nèi)單調(diào)不減;
(2) 凸函數(shù)具有仿射不變性,即f(x)f(x)是凸函數(shù),則g(y)=f(Ax+b)g(y)=f(Ax+b)也是凸函數(shù);
(3) 凸函數(shù)的任何 極小值都是最小值,嚴(yán)格凸函數(shù)最多有一個最小值;
(4) 凸函數(shù)在區(qū)間內(nèi)(凸集內(nèi)部)是正定的。最小二乘問題和線性規(guī)劃問題都屬于凸優(yōu)化問題。
因為凸函數(shù)具有局部最優(yōu)解就是全局最優(yōu)解的優(yōu)良性質(zhì),我們可以在求解過程不用過多考慮局部最優(yōu)解和全局最優(yōu)解的問題,因此,現(xiàn)有優(yōu)化問題研究更多放在將一般形式的目標(biāo)函數(shù)轉(zhuǎn)化為凸函數(shù)后求解。而對于凸優(yōu)化問題,我們可以采用熟知的內(nèi)插法、梯度下降法、牛頓拉斐遜算法以及BFGS算法等。這些算法以及如何將優(yōu)化目標(biāo)函數(shù)轉(zhuǎn)換為凸函數(shù)是本系列博客的主要闡述的問題。
數(shù)學(xué)優(yōu)化入門:梯度下降法、牛頓法、共軛梯度法
2016-10-15
數(shù)學(xué)優(yōu)化入門:梯度下降法、牛頓法、共軛梯度法。前面講的都是從n維空間到一維空間的映射函數(shù),對于從n維歐式空間變換到m維歐式空間的函數(shù)f,也可以表示成由m個實函數(shù)組成y=f(x)=[y1(x1,…xn),…ym(x1,…,xn)]T。
1、基本概念
1.1 方向?qū)?shù)
?
1.2 梯度的概念
?
如果考慮z=f(x,y)描繪的是一座在點(diǎn)(x,y)的高度為f(x,y)的山。那么,某一點(diǎn)的梯度方向是在該點(diǎn)坡度最陡的方向,而梯度的大小告訴我們坡度到底有多陡。
對于含有n個變量的標(biāo)量函數(shù),其梯度表示為
?
1.3 梯度與方向?qū)?shù)
函數(shù)在某點(diǎn)的梯度是這樣一個向量,它的方向與取得最大方向?qū)?shù)的方向一致,而它的模為方向?qū)?shù)的最大值。
1.4 梯度與等高線
函數(shù)z=f(x)在點(diǎn)P(x,y)的梯度的方向與過點(diǎn)的等高線f(x,y)=c在這點(diǎn)的法線的一個方向相同,且從數(shù)值較低的等高線指向數(shù)值較高的等高線,而梯度的模等于函數(shù)在這個法線方向的方向?qū)?shù)。這個法線方向就是方向?qū)?shù)取得最大值的方向。
即負(fù)梯度方向為最速下降方向。
1.5 等高面
對于二次函數(shù)
?
其中A為n*n的對稱正定矩陣,x-為一定點(diǎn),則函數(shù)f(x)的等值面f(x,y)=c是一個以x-為中心的橢球面。
此橢球面的形狀受 Hesse 矩陣的條件數(shù)影響,長軸與短軸對應(yīng)矩陣的最小特征值和最大特征值的方向,其大小與特征值的平方根成反比,最大特征值與最小特征值相差越大,橢球面越扁。
矩陣的條件數(shù):矩陣A的條件數(shù)等于A的范數(shù)與A的逆的范數(shù)的乘積,即cond(A)=‖A‖·‖A^(-1)‖,是用來判斷矩陣病態(tài)與否的一種度量,條件數(shù)越大矩陣越病態(tài)。
1.6 Hesse 矩陣
在牛頓法中應(yīng)用廣泛,定義為
?
1.7 Jacobi矩陣
前面講的都是從n維空間到一維空間的映射函數(shù),對于從n維歐式空間變換到m維歐式空間的函數(shù)f,也可以表示成由m個實函數(shù)組成y=f(x)=[y1(x1,…xn),…ym(x1,…,xn)]T。對于函數(shù)f,如果其偏導(dǎo)數(shù)都存在,可以組成一個m行n列的矩陣,即所謂的Jacobi矩陣:
?
?
顯然, 當(dāng)f(x) 是一個標(biāo)量函數(shù)時,Jacobi矩陣是一個向量,即f(x)的梯度,此時Hesse 矩陣是一個二維矩陣;當(dāng)f(x)是一個向量值函數(shù)時,Jacobi 矩陣是一個二維矩陣,Hesse 矩陣是一個三維矩陣。
1.8 共軛方向
先給出共軛方向的定義:
?
當(dāng)A為單位陣時,這兩個方向關(guān)于A共軛將等價于兩個方向正交,可見共軛是正交概念的推廣。
?
?
我們在來看共軛方向的幾何意義。
前面提到過二次函數(shù)
?
?
的等值面f(x,y)=c是一個以x-為中心的橢球面。設(shè)x^(1)為此橢球面邊緣的一點(diǎn),則x^(1)處的法向量為
?
將其中后面一項記作
?
即由x(1)指向橢圓面中心x-的向量。
下面,設(shè)d^(1)為此橢球面在x(1)處的切向量,由于切向量d^(1)與法向量delta f(x(1))正交,即
?
可見,等值面上一點(diǎn)處的切向量與由此點(diǎn)指向極小點(diǎn)的向量是關(guān)于A共軛的。
因此,極小化上述二次函數(shù),若依次沿著d^(1)和d^(2)進(jìn)行一維搜索,則經(jīng)過兩次迭代必達(dá)到極小點(diǎn)。
1.9 一維搜索
在許多迭代下降算法中,具有一個共同點(diǎn),就是得到x(k)后,按某種規(guī)則確定一個方向d(k),再從x(k)除法,沿方向d(k)在直線上求目標(biāo)函數(shù)f(x(k)+lambda*d(k))的的極小點(diǎn),從而得到x(k)的后繼點(diǎn)x(k+1),這里求目標(biāo)函數(shù)在直線上的極小點(diǎn),稱為一維搜索,或者線搜索,可以歸結(jié)為單變量lambda的極小化問題。確定的lambda可以成為步長。
一維搜索方法很多,大致可以分為試探法和函數(shù)逼近法(插值法)。當(dāng)然,這兩種方法都是求得即小的的近似值。
試探法包括0.618法、Fibonacci法、進(jìn)退法、平分法等。
函數(shù)逼近法包括牛頓法、割線法、拋物線法、三次插值法、有理插值法等。
2、梯度下降法(最速下降法)
即利用一階的梯度信息找到函數(shù)局部最優(yōu)解的一種方法。核心迭代公式為
?
其中,pk是第k次迭代時選取的移動方向,在梯度下降法中,移動的方向設(shè)定為梯度的負(fù)方向。
ak是第k次迭代是移動的步長,每次移動的步長可以固定也可以改變。在數(shù)學(xué)上,步長可以通過line search令導(dǎo)數(shù)為零找到該方向上的最小值,但是在實際編程時,這樣計算的代價太大,我們一般可以將它設(shè)定位一個常量。
因此,梯度下降法計算步驟可以概括為
?
如果目標(biāo)函數(shù)是一個凸優(yōu)化問題,那么梯度下降法獲得的局部最優(yōu)解就是全局最優(yōu)解,理想的優(yōu)化效果如下圖,值得注意一點(diǎn)的是,每一次迭代的移動方向都與出發(fā)點(diǎn)的等高線垂直:
?
?
實際上,梯度還可以提供不在最快變化方向的其他方向上坡度的變化速度,即在二維情況下,按照梯度方向傾斜的圓在平面上投影成一個橢圓。橢球面的形狀受 Hesse 矩陣的條件數(shù)影響,橢球面越扁,那么優(yōu)化路徑需要走很大的彎路,計算效率很低。這就是常說的鋸齒現(xiàn)象( zig-zagging),將會導(dǎo)致收算法斂速度變慢。
3、牛頓法
前面提到的梯度下降法,主要利用的是目標(biāo)函數(shù)的局部性質(zhì),具有一定的“盲目性”。
牛頓法則是利用局部的一階和二階偏導(dǎo)信息,去推測整個目標(biāo)函數(shù)的形狀,進(jìn)而可以求得近似函數(shù)的全局最小值,然后將當(dāng)前的最小值設(shè)定為近似函數(shù)的最小值。也就是說,牛頓法在二階導(dǎo)數(shù)的作用下,從函數(shù)的凸性出發(fā),直接搜索怎樣到達(dá)極值點(diǎn),即在選擇方向時,不僅考慮當(dāng)前坡度是否夠大,還會考慮走了一步之后,坡度是否會變得更大。
相比最速下降法,牛頓法帶有一定對全局的預(yù)測性,收斂性質(zhì)也更優(yōu)良。當(dāng)然由于牛頓法是二階收斂的,比梯度下降法收斂的更快。
假設(shè)我們要求f(x)的最小值,首先用泰勒級數(shù)求得其二階近似
?
顯然這里x是自變量,x^(k)是常量,求解近似函數(shù)phi(x)的極值,即令其倒數(shù)為0,很容易得到
?
從而得到牛頓法的迭代公式
?
顯然除了f(x)二次可微外,還要求f(x)的Hesse矩陣可逆。此外,由于矩陣取逆的計算復(fù)雜為 n 的立方,當(dāng)問題規(guī)模比較大時,計算量很大,解決的辦法是采用擬牛頓法,如 BFGS, L-BFGS, DFP, Broyden’s Algorithm 進(jìn)行近似。
此外,如果初始值離局部極小值太遠(yuǎn),泰勒展開并不能對原函數(shù)進(jìn)行良好的近似,導(dǎo)致牛頓法可能不收斂。
我們給出阻尼牛頓法的計算步驟,其實阻尼牛頓法相較原始牛頓法只是增加了沿牛頓方向的一維搜索:
?
4、共軛梯度法
共軛梯度法是介于最速下降法與牛頓法之間的一個方法,它僅需一階導(dǎo)數(shù)信息,但克服了最速下降法收斂慢的缺點(diǎn),又避免了牛頓法需要存儲和計算Hesse矩陣并求逆的缺點(diǎn)。
共軛梯度法的基本思想是把共軛性與最速下降法相結(jié)合,利用已知點(diǎn)處的梯度構(gòu)造一組共軛方向,并沿這組方向進(jìn)行搜索,求出目標(biāo)函數(shù)的極小點(diǎn)。根據(jù)共軛方向的基本性質(zhì),這種方法具有二次終止性。
共軛梯度法中的核心迭代過程可以采取不同的方案,一種是直接延續(xù),即總是用d^(k+1)=-g(k+1)+beta_k*d^(k)構(gòu)造搜索方向;一種是把n步作為一輪,每搜索一輪之后,取一次最速下降方向,開始下一輪,此種策略稱為“重置”。
下面我們介紹一種傳統(tǒng)的共軛梯度法
?
? ? ? ??
?
?
注意,上述算法中均假設(shè)采用的精確一維搜索,但實際計算中,精確一維搜索會帶來一定困難,代價較大,通常還是采用不精確的一維搜索。但此時(4)中構(gòu)造的搜索方向可能就不是下降方向了,解決這個問題有兩個方法。
其一,當(dāng)d^(k+1)不是下降方向時,以最速下降方向重新開始。事實上,這也存在問題,但一維搜索比較粗糙時,這樣重新開始可能是大量的,會降低計算效率。
其二,在計算過程中增加附加的檢驗,具體細(xì)節(jié)可以參考陳寶林老師的“最優(yōu)化理論與方法”的P301。
轉(zhuǎn)載于:https://www.cnblogs.com/no-tears-girl/p/6033838.html
總結(jié)
以上是生活随笔為你收集整理的机器学习之数学原理笔记(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中image与tif图片的互转
- 下一篇: 安卓嵌入式开发教程!渣本毕业两年经验,满