【轉(zhuǎn)載】機(jī)器學(xué)習(xí)常見的最優(yōu)化算法

https://www.cnblogs.com/hlongch/p/5734105.html

https://blog.csdn.net/wyisfish/article/details/79828789


1. 梯度下降法(Gradient Descent)

梯度下降法是最早最簡單绊袋,也是最為常用的最優(yōu)化方法藐守。梯度下降法實(shí)現(xiàn)簡單糖驴,當(dāng)目標(biāo)函數(shù)是凸函數(shù)時,梯度下降法的解是全局解年局。一般情況下级及,其解不保證是全局最優(yōu)解拼卵,梯度下降法的速度也未必是最快的。梯度下降法的優(yōu)化思想是用當(dāng)前位置負(fù)梯度方向作為搜索方向虏杰,因?yàn)樵摲较驗(yàn)楫?dāng)前位置的最快下降方向讥蟆,所以也被稱為是”最速下降法“。最速下降法越接近目標(biāo)值纺阔,步長越小瘸彤,前進(jìn)越慢。

  在機(jī)器學(xué)習(xí)中笛钝,基于基本的梯度下降法發(fā)展了兩種梯度下降方法质况,分別為隨機(jī)梯度下降法和批量梯度下降法。

  比如對一個線性回歸(Linear Logistics)模型玻靡,假設(shè)下面的h(x)是要擬合的函數(shù)拯杠,J(theta)為損失函數(shù),theta是參數(shù)啃奴,要迭代求解的值潭陪,theta求解出來了那最終要擬合的函數(shù)h(theta)就出來了。其中m是訓(xùn)練集的樣本個數(shù)最蕾,n是特征的個數(shù)依溯。

  批梯度下降 BGD(Batch Gradient Descent)

    或者把1/m ?用步長a代替

  (3)從上面公式可以注意到瘟则,它得到的是一個全局最優(yōu)解黎炉,但是每迭代一步,都要用到訓(xùn)練集所有的數(shù)據(jù)醋拧,如果m很大慷嗜,那么可想而知這種方法的迭代速度會相當(dāng)?shù)穆淼K裕@就引入了另外一種方法庆械。

  隨機(jī)梯度下降(stochastic gradient descent) or 增量梯度下降(incremental gradient descent)

 ∞崩!(3)隨機(jī)梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況(例如幾十萬)缭乘,那么可能只用其中幾萬條或者幾千條的樣本沐序,就已經(jīng)將theta迭代到最優(yōu)解了,對比上面的批量梯度下降堕绩,迭代一次需要用到十幾萬訓(xùn)練樣本策幼,一次迭代不可能最優(yōu),如果迭代10次的話就需要遍歷訓(xùn)練樣本10次奴紧。但是特姐,SGD伴隨的一個問題是噪音較BGD要多,使得SGD并不是每次迭代都向著整體最優(yōu)化方向黍氮。

隨機(jī)梯度下降每次迭代只使用一個樣本唐含,迭代一次計(jì)算量為n2,當(dāng)樣本個數(shù)m很大的時候滤钱,隨機(jī)梯度下降迭代一次的速度要遠(yuǎn)高于批量梯度下降方法觉壶。兩者的關(guān)系可以這樣理解:隨機(jī)梯度下降方法以損失很小的一部分精確度和增加一定數(shù)量的迭代次數(shù)為代價,換取了總體的優(yōu)化效率的提升件缸。增加的迭代次數(shù)遠(yuǎn)遠(yuǎn)小于樣本的數(shù)量铜靶。

  對批量梯度下降法和隨機(jī)梯度下降法的總結(jié):

批量梯度下降---最小化所有訓(xùn)練樣本的損失函數(shù),使得最終求解的是全局的最優(yōu)解他炊,即求解的參數(shù)是使得風(fēng)險(xiǎn)函數(shù)最小争剿,但是對于大規(guī)模樣本問題效率低下。

隨機(jī)梯度下降---最小化每條樣本的損失函數(shù)痊末,雖然不是每次迭代得到的損失函數(shù)都向著全局最優(yōu)方向蚕苇, 但是大的整體的方向是向全局最優(yōu)解的,最終的結(jié)果往往是在全局最優(yōu)解附近凿叠,適用于大規(guī)模訓(xùn)練樣本情況涩笤。


2 牛頓法和擬牛頓法(Newton's method &?Quasi-Newton Methods)

從本質(zhì)上去看,牛頓法是二階收斂盒件,梯度下降是一階收斂蹬碧,所以牛頓法就更快。如果更通俗地說的話炒刁,比如你想找一條最短的路徑走到一個盆地的最底部恩沽,梯度下降法每次只從你當(dāng)前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時翔始,不僅會考慮坡度是否夠大罗心,還會考慮你走了一步之后里伯,坡度是否會變得更大。所以渤闷,可以說牛頓法比梯度下降法看得更遠(yuǎn)一點(diǎn)疾瓮,能更快地走到最底部。


推廣為向量的情況


其中表達(dá)式中

表示的?(θ)對\theta_{i} 的偏導(dǎo)數(shù)肤晓;H是一個n*n的矩陣爷贫,稱為Hessian矩陣认然。Hessian矩陣的表達(dá)式為:

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

  優(yōu)點(diǎn):二階收斂补憾,收斂速度快;

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

?  擬牛頓法(Quasi-Newton Methods)

擬牛頓法的本質(zhì)思想是改善牛頓法每次需要求解復(fù)雜的Hessian矩陣的逆矩陣的缺陷毕骡,它使用正定矩陣來近似Hessian矩陣的逆削饵,從而簡化了運(yùn)算的復(fù)雜度。擬牛頓法和最速下降法一樣只要求每一步迭代時知道目標(biāo)函數(shù)的梯度未巫。通過測量梯度的變化窿撬,構(gòu)造一個目標(biāo)函數(shù)的模型使之足以產(chǎn)生超線性收斂性。這類方法大大優(yōu)于最速下降法叙凡,尤其對于困難的問題劈伴。另外,因?yàn)閿M牛頓法不需要二階導(dǎo)數(shù)的信息握爷,所以有時比牛頓法更為有效跛璧。如今,優(yōu)化軟件中包含了大量的擬牛頓算法用來解決無約束新啼,約束追城,和大規(guī)模的優(yōu)化問題。

常用的擬牛頓法有DFP算法和BFGS算法(http://blog.csdn.net/qq_27231343/article/details/51791138)


3. 共軛梯度法(Conjugate Gradient)

  共軛梯度法是介于最速下降法與牛頓法之間的一個方法燥撞,它僅需利用一階導(dǎo)數(shù)信息座柱,但克服了最速下降法收斂慢的缺點(diǎn),又避免了牛頓法需要存儲和計(jì)算Hesse矩陣并求逆的缺點(diǎn)物舒,共軛梯度法不僅是解決大型線性方程組最有用的方法之一色洞,也是解大型非線性最優(yōu)化最有效的算法之一。?在各種優(yōu)化算法中茶鉴,共軛梯度法是非常重要的一種锋玲。其優(yōu)點(diǎn)是所需存儲量小,具有步收斂性涵叮,穩(wěn)定性高惭蹂,而且不需要任何外來參數(shù)伞插。

(https://en.wikipedia.org/wiki/Conjugate_gradient_method#Example_code_in_MATLAB)

4. 啟發(fā)式優(yōu)化方法

  啟發(fā)式方法指人在解決問題時所采取的一種根據(jù)經(jīng)驗(yàn)規(guī)則進(jìn)行發(fā)現(xiàn)的方法。其特點(diǎn)是在解決問題時,利用過去的經(jīng)驗(yàn),選擇已經(jīng)行之有效的方法盾碗,而不是系統(tǒng)地媚污、以確定的步驟去尋求答案。啟發(fā)式優(yōu)化方法種類繁多廷雅,包括經(jīng)典的模擬退火方法耗美、遺傳算法、蟻群算法以及粒子群算法等等航缀。

  還有一種特殊的優(yōu)化算法被稱之多目標(biāo)優(yōu)化算法商架,它主要針對同時優(yōu)化多個目標(biāo)(兩個及兩個以上)的優(yōu)化問題,這方面比較經(jīng)典的算法有NSGAII算法芥玉、MOEA/D算法以及人工免疫算法等蛇摸。


我們已經(jīng)知道梯度下降法,需要沿著整個訓(xùn)練集的梯度反向下降灿巧。使用隨機(jī)梯度下降方法赶袄,選取小批量數(shù)據(jù)的梯度下降方向,可以在很大程度上進(jìn)行加速抠藕。SGD及其變種可能是機(jī)器學(xué)習(xí)中應(yīng)用最多的優(yōu)化算法饿肺。我們按照下面的順序一一理解一下這些算法。

SGD->SGDM->NAG->AdaGrad->RMSProp->Adam->Nadam

1盾似、隨機(jī)梯度下降(SGD)

核心是按照數(shù)據(jù)生成分布抽取m個小批量樣本敬辣,通過計(jì)算它們的梯度均值,來得到整體梯度的無偏估計(jì)颜说。

SGD最大的缺點(diǎn)是下降速度慢购岗,而且可能在溝壑的兩邊持續(xù)震蕩,停留在一個局部最優(yōu)點(diǎn)门粪。

2喊积、使用動量的隨機(jī)梯度下降(SGDM)

動量方法旨在加速學(xué)習(xí),特別是處理高曲率玄妈、小但一致的梯度乾吻,或帶噪音的梯度。動量積累了之前梯度指數(shù)級衰減的移動平均拟蜻,并且繼續(xù)沿該方向移動绎签。可以這么理解:為了避免SGD震蕩酝锅,SGDM認(rèn)為梯度下降過程可以加入慣性诡必,下坡的時候如果發(fā)現(xiàn)是陡坡,就利用慣性跑的遠(yuǎn)一點(diǎn)。也就是說梯度下降的方法不僅由當(dāng)前的梯度方向決定爸舒,還由此前積累的下降方向決定蟋字。

這里用速度變量 vv 來表示負(fù)梯度的指數(shù)衰減平均,超參數(shù) α∈[0,1)α∈[0,1) 決定了之前梯度的貢獻(xiàn)衰減得有多快扭勉。更新規(guī)則如下:

3鹊奖、使用Nesterov動量的隨機(jī)梯度下降(NAG)

這是SGD-M的一種變體,用于解決SGD容易陷入局部最優(yōu)的問題涂炎。通俗的理解是:但陷入局部最優(yōu)時忠聚,我們不妨向前多走一步,看更遠(yuǎn)一些唱捣。我們知道動量方法中梯度方向由積累的動量和當(dāng)前梯度方法共同決定两蟀,與其看當(dāng)前梯度方向,不妨先看看跟著積累的動量走一步是什么情況爷光,再決定怎么走垫竞。更新規(guī)則如下:

4澎粟、AdaGrad

我們知道SGD算法中的一個重要參數(shù)是學(xué)習(xí)率蛀序,它對模型的性能有著顯著的影響。那么在整個學(xué)習(xí)過程中自動適應(yīng)這個學(xué)習(xí)率才是正確的做法活烙。

AdaGrad算法的做法是:縮放每個參數(shù)反比于其所有梯度歷史平方值總和的平方根徐裸。具有損失最大偏導(dǎo)的參數(shù)相應(yīng)的有個快速下降的學(xué)習(xí)率,小偏導(dǎo)的參數(shù)具有較小的學(xué)習(xí)率啸盏。效果是在參數(shù)空間中更為平緩的傾斜方向會取得更大的進(jìn)步重贺。

通俗的理解是:對于經(jīng)常更新的參數(shù),我們已經(jīng)積累的大量關(guān)于它的知識回懦,不希望被單個樣本影響太大气笙,所以學(xué)習(xí)率慢一點(diǎn);對于偶爾更新的參數(shù)了解信息少怯晕,希望從樣本中多學(xué)習(xí)點(diǎn)潜圃,即學(xué)習(xí)率大一點(diǎn)。我們用積累的所有梯度值的平方和來度量歷史更新頻率舟茶。

5谭期、AdaDelta/RMSProp

AdaGrad單調(diào)遞減的學(xué)習(xí)率邊化過于激進(jìn)撵割,RMSProp通過:不積累全部歷史梯度结胀,而引入指數(shù)衰減平均來只關(guān)注過去一段時間的下降梯度,丟棄遙遠(yuǎn)過去的歷史梯度丽猬。

6阀捅、Adam

我們總結(jié)上面的算法可以發(fā)現(xiàn):SGD作為最初的算法胀瞪,SGDM在其基礎(chǔ)上加入了一階動量(歷史梯度的累計(jì)),AdaGrad和RMSProp在其基礎(chǔ)上加入了二階動量(歷史梯度的平方累計(jì))饲鄙,那么Adam就是自適應(yīng)?動量了凄诞,其在SGD基礎(chǔ)上加入了一涵紊、二階動量。

7幔摸、最后Nadam就是Adam基礎(chǔ)上按照NAG計(jì)算梯度的變體摸柄。

---------------------

作者:喂魚W_y

來源:CSDN

原文:https://blog.csdn.net/wyisfish/article/details/79828789

版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接既忆!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驱负,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子患雇,更是在濱河造成了極大的恐慌跃脊,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苛吱,死亡現(xiàn)場離奇詭異酪术,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)翠储,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門绘雁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人援所,你說我怎么就攤上這事庐舟。” “怎么了住拭?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵挪略,是天一觀的道長。 經(jīng)常有香客問我滔岳,道長杠娱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任谱煤,我火速辦了婚禮摊求,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘趴俘。我一直安慰自己睹簇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布寥闪。 她就那樣靜靜地躺著太惠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疲憋。 梳的紋絲不亂的頭發(fā)上凿渊,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼埃脏。 笑死搪锣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彩掐。 我是一名探鬼主播构舟,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼堵幽!你這毒婦竟也來了狗超?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤朴下,失蹤者是張志新(化名)和其女友劉穎努咐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體殴胧,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渗稍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了团滥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竿屹。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惫撰,靈堂內(nèi)的尸體忽然破棺而出羔沙,到底是詐尸還是另有隱情,我是刑警寧澤厨钻,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站坚嗜,受9級特大地震影響夯膀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苍蔬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一诱建、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碟绑,春花似錦俺猿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凯肋,卻和暖如春谊惭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工圈盔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豹芯,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓驱敲,卻偏偏與公主長得像铁蹈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子众眨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容