
機(jī)器學(xué)習(xí)中常見的幾種最優(yōu)化方法
我們每個(gè)人都會(huì)在我們的生活或者工作中遇到各種各樣的最優(yōu)化問題,比如每個(gè)企業(yè)和個(gè)人都要考慮的一個(gè)問題“在一定成本下,如何使利潤(rùn)最大化”等。最優(yōu)化方法是一種數(shù)學(xué)方法,它是研究在給定約束之下如何尋求某些因素(的量),以使某一(或某些)指標(biāo)達(dá)到最優(yōu)的一些學(xué)科的總稱。隨著學(xué)習(xí)的深入,博主越來(lái)越發(fā)現(xiàn)最優(yōu)化方法的重要性,學(xué)習(xí)和工作中遇到的大多問題都可以建模成一種最優(yōu)化模型進(jìn)行求解,比如我們現(xiàn)在學(xué)習(xí)的機(jī)器學(xué)習(xí)算法,大部分的機(jī)器學(xué)習(xí)算法的本質(zhì)都是建立優(yōu)化模型,通過(guò)最優(yōu)化方法對(duì)目標(biāo)函數(shù)(或損失函數(shù))進(jìn)行優(yōu)化,從而訓(xùn)練出最好的模型。常見的最優(yōu)化方法有梯度下降法、牛頓法和擬牛頓法、共軛梯度法等等。
1. 梯度下降法(Gradient Descent)
梯度下降法是最早最簡(jiǎn)單,也是最為常用的最優(yōu)化方法。梯度下降法實(shí)現(xiàn)簡(jiǎn)單,當(dāng)目標(biāo)函數(shù)是凸函數(shù)時(shí),梯度下降法的解是全局解。一般情況下,其解不保證是全局最優(yōu)解,梯度下降法的速度也未必是最快的。梯度下降法的優(yōu)化思想是用當(dāng)前位置負(fù)梯度方向作為搜索方向,因?yàn)樵摲较驗(yàn)楫?dāng)前位置的最快下降方向,所以也被稱為是”最速下降法“。最速下降法越接近目標(biāo)值,步長(zhǎng)越小,前進(jìn)越慢。梯度下降法的搜索迭代示意圖如下圖所示:
牛頓法的缺點(diǎn):
(1)靠近極小值時(shí)收斂速度減慢,如下圖所示;
(2)直線搜索時(shí)可能會(huì)產(chǎn)生一些問題;
(3)可能會(huì)“之字形”地下降。
從上圖可以看出,梯度下降法在接近最優(yōu)解的區(qū)域收斂速度明顯變慢,利用梯度下降法求解需要很多次的迭代。
在機(jī)器學(xué)習(xí)中,基于基本的梯度下降法發(fā)展了兩種梯度下降方法,分別為隨機(jī)梯度下降法和批量梯度下降法。
比如對(duì)一個(gè)線性回歸(Linear Logistics)模型,假設(shè)下面的h(x)是要擬合的函數(shù),J(theta)為損失函數(shù),theta是參數(shù),要迭代求解的值,theta求解出來(lái)了那最終要擬合的函數(shù)h(theta)就出來(lái)了。其中m是訓(xùn)練集的樣本個(gè)數(shù),n是特征的個(gè)數(shù)。
1)批量梯度下降法(Batch Gradient Descent,BGD)
(1)將J(theta)對(duì)theta求偏導(dǎo),得到每個(gè)theta對(duì)應(yīng)的的梯度:
(2)由于是要最小化風(fēng)險(xiǎn)函數(shù),所以按每個(gè)參數(shù)theta的梯度負(fù)方向,來(lái)更新每個(gè)theta:
(3)從上面公式可以注意到,它得到的是一個(gè)全局最優(yōu)解,但是每迭代一步,都要用到訓(xùn)練集所有的數(shù)據(jù),如果m很大,那么可想而知這種方法的迭代速度會(huì)相當(dāng)?shù)穆?。所以,這就引入了另外一種方法——隨機(jī)梯度下降。
對(duì)于批量梯度下降法,樣本個(gè)數(shù)m,x為n維向量,一次迭代需要把m個(gè)樣本全部帶入計(jì)算,迭代一次計(jì)算量為m*n2。
2)隨機(jī)梯度下降(Random Gradient Descent,RGD)
(1)上面的風(fēng)險(xiǎn)函數(shù)可以寫成如下這種形式,損失函數(shù)對(duì)應(yīng)的是訓(xùn)練集中每個(gè)樣本的粒度,而上面批量梯度下降對(duì)應(yīng)的是所有的訓(xùn)練樣本:
(2)每個(gè)樣本的損失函數(shù),對(duì)theta求偏導(dǎo)得到對(duì)應(yīng)梯度,來(lái)更新theta:
(3)隨機(jī)梯度下降是通過(guò)每個(gè)樣本來(lái)迭代更新一次,如果樣本量很大的情況(例如幾十萬(wàn)),那么可能只用其中幾萬(wàn)條或者幾千條的樣本,就已經(jīng)將theta迭代到最優(yōu)解了,對(duì)比上面的批量梯度下降,迭代一次需要用到十幾萬(wàn)訓(xùn)練樣本,一次迭代不可能最優(yōu),如果迭代10次的話就需要遍歷訓(xùn)練樣本10次。但是,SGD伴隨的一個(gè)問題是噪音較BGD要多,使得SGD并不是每次迭代都向著整體最優(yōu)化方向。
隨機(jī)梯度下降每次迭代只使用一個(gè)樣本,迭代一次計(jì)算量為n2,當(dāng)樣本個(gè)數(shù)m很大的時(shí)候,隨機(jī)梯度下降迭代一次的速度要遠(yuǎn)高于批量梯度下降方法。兩者的關(guān)系可以這樣理解:隨機(jī)梯度下降方法以損失很小的一部分精確度和增加一定數(shù)量的迭代次數(shù)為代價(jià),換取了總體的優(yōu)化效率的提升。增加的迭代次數(shù)遠(yuǎn)遠(yuǎn)小于樣本的數(shù)量。
對(duì)批量梯度下降法和隨機(jī)梯度下降法的總結(jié):
批量梯度下降---最小化所有訓(xùn)練樣本的損失函數(shù),使得最終求解的是全局的最優(yōu)解,即求解的參數(shù)是使得風(fēng)險(xiǎn)函數(shù)最小,但是對(duì)于大規(guī)模樣本問題效率低下。
隨機(jī)梯度下降---最小化每條樣本的損失函數(shù),雖然不是每次迭代得到的損失函數(shù)都向著全局最優(yōu)方向, 但是大的整體的方向是向全局最優(yōu)解的,最終的結(jié)果往往是在全局最優(yōu)解附近,適用于大規(guī)模訓(xùn)練樣本情況。
2. 牛頓法和擬牛頓法(Newton's method & Quasi-Newton Methods)
1)牛頓法(Newton's method)
牛頓法是一種在實(shí)數(shù)域和復(fù)數(shù)域上近似求解方程的方法。方法使用函數(shù)f (x)的泰勒級(jí)數(shù)的前面幾項(xiàng)來(lái)尋找方程f (x) = 0的根。牛頓法最大的特點(diǎn)就在于它的收斂速度很快。
具體步驟:
首先,選擇一個(gè)接近函數(shù) f (x)零點(diǎn)的 x0,計(jì)算相應(yīng)的 f (x0) 和切線斜率f ' (x0)(這里f ' 表示函數(shù) f 的導(dǎo)數(shù))。然后我們計(jì)算穿過(guò)點(diǎn)(x0, f (x0)) 并且斜率為f '(x0)的直線和 x 軸的交點(diǎn)的x坐標(biāo),也就是求如下方程的解:
我們將新求得的點(diǎn)的 x 坐標(biāo)命名為x1,通常x1會(huì)比x0更接近方程f (x) = 0的解。因此我們現(xiàn)在可以利用x1開始下一輪迭代。迭代公式可化簡(jiǎn)為如下所示:
已經(jīng)證明,如果f ' 是連續(xù)的,并且待求的零點(diǎn)x是孤立的,那么在零點(diǎn)x周圍存在一個(gè)區(qū)域,只要初始值x0位于這個(gè)鄰近區(qū)域內(nèi),那么牛頓法必定收斂。 并且,如果f ' (x)不為0, 那么牛頓法將具有平方收斂的性能. 粗略的說(shuō),這意味著每迭代一次,牛頓法結(jié)果的有效數(shù)字將增加一倍。下圖為一個(gè)牛頓法執(zhí)行過(guò)程的例子。
由于牛頓法是基于當(dāng)前位置的切線來(lái)確定下一次的位置,所以牛頓法又被很形象地稱為是"切線法"。牛頓法的搜索路徑(二維情況)如下圖所示:
牛頓法搜索動(dòng)態(tài)示例圖:
關(guān)于牛頓法和梯度下降法的效率對(duì)比:
從本質(zhì)上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說(shuō)的話,比如你想找一條最短的路徑走到一個(gè)盆地的最底部,梯度下降法每次只從你當(dāng)前所處位置選一個(gè)坡度最大的方向走一步,牛頓法在選擇方向時(shí),不僅會(huì)考慮坡度是否夠大,還會(huì)考慮你走了一步之后,坡度是否會(huì)變得更大。所以,可以說(shuō)牛頓法比梯度下降法看得更遠(yuǎn)一點(diǎn),能更快地走到最底部。(牛頓法目光更加長(zhǎng)遠(yuǎn),所以少走彎路;相對(duì)而言,梯度下降法只考慮了局部的最優(yōu),沒有全局思想。)
根據(jù)wiki上的解釋,從幾何上說(shuō),牛頓法就是用一個(gè)二次曲面去擬合你當(dāng)前所處位置的局部曲面,而梯度下降法是用一個(gè)平面去擬合當(dāng)前的局部曲面,通常情況下,二次曲面的擬合會(huì)比平面更好,所以牛頓法選擇的下降路徑會(huì)更符合真實(shí)的最優(yōu)下降路徑。
注:紅色的牛頓法的迭代路徑,綠色的是梯度下降法的迭代路徑。
牛頓法的優(yōu)缺點(diǎn)總結(jié):
優(yōu)點(diǎn):二階收斂,收斂速度快;
缺點(diǎn):牛頓法是一種迭代算法,每一步都需要求解目標(biāo)函數(shù)的Hessian矩陣的逆矩陣,計(jì)算比較復(fù)雜。
2)擬牛頓法(Quasi-Newton Methods)
擬牛頓法是求解非線性優(yōu)化問題最有效的方法之一,于20世紀(jì)50年代由美國(guó)Argonne國(guó)家實(shí)驗(yàn)室的物理學(xué)家W.C.Davidon所提出來(lái)。Davidon設(shè)計(jì)的這種算法在當(dāng)時(shí)看來(lái)是非線性優(yōu)化領(lǐng)域最具創(chuàng)造性的發(fā)明之一。不久R. Fletcher和M. J. D. Powell證實(shí)了這種新的算法遠(yuǎn)比其他方法快速和可靠,使得非線性優(yōu)化這門學(xué)科在一夜之間突飛猛進(jìn)。
擬牛頓法的本質(zhì)思想是改善牛頓法每次需要求解復(fù)雜的Hessian矩陣的逆矩陣的缺陷,它使用正定矩陣來(lái)近似Hessian矩陣的逆,從而簡(jiǎn)化了運(yùn)算的復(fù)雜度。擬牛頓法和最速下降法一樣只要求每一步迭代時(shí)知道目標(biāo)函數(shù)的梯度。通過(guò)測(cè)量梯度的變化,構(gòu)造一個(gè)目標(biāo)函數(shù)的模型使之足以產(chǎn)生超線性收斂性。這類方法大大優(yōu)于最速下降法,尤其對(duì)于困難的問題。另外,因?yàn)閿M牛頓法不需要二階導(dǎo)數(shù)的信息,所以有時(shí)比牛頓法更為有效。如今,優(yōu)化軟件中包含了大量的擬牛頓算法用來(lái)解決無(wú)約束,約束,和大規(guī)模的優(yōu)化問題。
具體步驟:
擬牛頓法的基本思想如下。首先構(gòu)造目標(biāo)函數(shù)在當(dāng)前迭代xk的二次模型:
這個(gè)公式被稱為割線方程。常用的擬牛頓法有DFP算法和BFGS算法。
3. 共軛梯度法(Conjugate Gradient)
4. 啟發(fā)式優(yōu)化方法
啟發(fā)式方法指人在解決問題時(shí)所采取的一種根據(jù)經(jīng)驗(yàn)規(guī)則進(jìn)行發(fā)現(xiàn)的方法。其特點(diǎn)是在解決問題時(shí),利用過(guò)去的經(jīng)驗(yàn),選擇已經(jīng)行之有效的方法,而不是系統(tǒng)地、以確定的步驟去尋求答案。啟發(fā)式優(yōu)化方法種類繁多,包括經(jīng)典的模擬退火方法、遺傳算法、蟻群算法以及粒子群算法等等。
還有一種特殊的優(yōu)化算法被稱之多目標(biāo)優(yōu)化算法,它主要針對(duì)同時(shí)優(yōu)化多個(gè)目標(biāo)(兩個(gè)及兩個(gè)以上)的優(yōu)化問題,這方面比較經(jīng)典的算法有NSGAII算法、MOEA/D算法以及人工免疫算法等。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無(wú)論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10