
機器學習中常見的幾種最優(yōu)化方法
我們每個人都會在我們的生活或者工作中遇到各種各樣的最優(yōu)化問題,比如每個企業(yè)和個人都要考慮的一個問題“在一定成本下,如何使利潤最大化”等。最優(yōu)化方法是一種數(shù)學方法,它是研究在給定約束之下如何尋求某些因素(的量),以使某一(或某些)指標達到最優(yōu)的一些學科的總稱。隨著學習的深入,博主越來越發(fā)現(xiàn)最優(yōu)化方法的重要性,學習和工作中遇到的大多問題都可以建模成一種最優(yōu)化模型進行求解,比如我們現(xiàn)在學習的機器學習算法,大部分的機器學習算法的本質(zhì)都是建立優(yōu)化模型,通過最優(yōu)化方法對目標函數(shù)(或損失函數(shù))進行優(yōu)化,從而訓練出最好的模型。常見的最優(yōu)化方法有梯度下降法、牛頓法和擬牛頓法、共軛梯度法等等。
1. 梯度下降法(Gradient Descent)
梯度下降法是最早最簡單,也是最為常用的最優(yōu)化方法。梯度下降法實現(xiàn)簡單,當目標函數(shù)是凸函數(shù)時,梯度下降法的解是全局解。一般情況下,其解不保證是全局最優(yōu)解,梯度下降法的速度也未必是最快的。梯度下降法的優(yōu)化思想是用當前位置負梯度方向作為搜索方向,因為該方向為當前位置的最快下降方向,所以也被稱為是”最速下降法“。最速下降法越接近目標值,步長越小,前進越慢。梯度下降法的搜索迭代示意圖如下圖所示:
牛頓法的缺點:
(1)靠近極小值時收斂速度減慢,如下圖所示;
(2)直線搜索時可能會產(chǎn)生一些問題;
(3)可能會“之字形”地下降。
從上圖可以看出,梯度下降法在接近最優(yōu)解的區(qū)域收斂速度明顯變慢,利用梯度下降法求解需要很多次的迭代。
在機器學習中,基于基本的梯度下降法發(fā)展了兩種梯度下降方法,分別為隨機梯度下降法和批量梯度下降法。
比如對一個線性回歸(Linear Logistics)模型,假設下面的h(x)是要擬合的函數(shù),J(theta)為損失函數(shù),theta是參數(shù),要迭代求解的值,theta求解出來了那最終要擬合的函數(shù)h(theta)就出來了。其中m是訓練集的樣本個數(shù),n是特征的個數(shù)。
1)批量梯度下降法(Batch Gradient Descent,BGD)
(1)將J(theta)對theta求偏導,得到每個theta對應的的梯度:
(2)由于是要最小化風險函數(shù),所以按每個參數(shù)theta的梯度負方向,來更新每個theta:
(3)從上面公式可以注意到,它得到的是一個全局最優(yōu)解,但是每迭代一步,都要用到訓練集所有的數(shù)據(jù),如果m很大,那么可想而知這種方法的迭代速度會相當?shù)穆K?,這就引入了另外一種方法——隨機梯度下降。
對于批量梯度下降法,樣本個數(shù)m,x為n維向量,一次迭代需要把m個樣本全部帶入計算,迭代一次計算量為m*n2。
2)隨機梯度下降(Random Gradient Descent,RGD)
(1)上面的風險函數(shù)可以寫成如下這種形式,損失函數(shù)對應的是訓練集中每個樣本的粒度,而上面批量梯度下降對應的是所有的訓練樣本:
(2)每個樣本的損失函數(shù),對theta求偏導得到對應梯度,來更新theta:
(3)隨機梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況(例如幾十萬),那么可能只用其中幾萬條或者幾千條的樣本,就已經(jīng)將theta迭代到最優(yōu)解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓練樣本,一次迭代不可能最優(yōu),如果迭代10次的話就需要遍歷訓練樣本10次。但是,SGD伴隨的一個問題是噪音較BGD要多,使得SGD并不是每次迭代都向著整體最優(yōu)化方向。
隨機梯度下降每次迭代只使用一個樣本,迭代一次計算量為n2,當樣本個數(shù)m很大的時候,隨機梯度下降迭代一次的速度要遠高于批量梯度下降方法。兩者的關系可以這樣理解:隨機梯度下降方法以損失很小的一部分精確度和增加一定數(shù)量的迭代次數(shù)為代價,換取了總體的優(yōu)化效率的提升。增加的迭代次數(shù)遠遠小于樣本的數(shù)量。
對批量梯度下降法和隨機梯度下降法的總結:
批量梯度下降---最小化所有訓練樣本的損失函數(shù),使得最終求解的是全局的最優(yōu)解,即求解的參數(shù)是使得風險函數(shù)最小,但是對于大規(guī)模樣本問題效率低下。
隨機梯度下降---最小化每條樣本的損失函數(shù),雖然不是每次迭代得到的損失函數(shù)都向著全局最優(yōu)方向, 但是大的整體的方向是向全局最優(yōu)解的,最終的結果往往是在全局最優(yōu)解附近,適用于大規(guī)模訓練樣本情況。
2. 牛頓法和擬牛頓法(Newton's method & Quasi-Newton Methods)
1)牛頓法(Newton's method)
牛頓法是一種在實數(shù)域和復數(shù)域上近似求解方程的方法。方法使用函數(shù)f (x)的泰勒級數(shù)的前面幾項來尋找方程f (x) = 0的根。牛頓法最大的特點就在于它的收斂速度很快。
具體步驟:
首先,選擇一個接近函數(shù) f (x)零點的 x0,計算相應的 f (x0) 和切線斜率f ' (x0)(這里f ' 表示函數(shù) f 的導數(shù))。然后我們計算穿過點(x0, f (x0)) 并且斜率為f '(x0)的直線和 x 軸的交點的x坐標,也就是求如下方程的解:
我們將新求得的點的 x 坐標命名為x1,通常x1會比x0更接近方程f (x) = 0的解。因此我們現(xiàn)在可以利用x1開始下一輪迭代。迭代公式可化簡為如下所示:
已經(jīng)證明,如果f ' 是連續(xù)的,并且待求的零點x是孤立的,那么在零點x周圍存在一個區(qū)域,只要初始值x0位于這個鄰近區(qū)域內(nèi),那么牛頓法必定收斂。 并且,如果f ' (x)不為0, 那么牛頓法將具有平方收斂的性能. 粗略的說,這意味著每迭代一次,牛頓法結果的有效數(shù)字將增加一倍。下圖為一個牛頓法執(zhí)行過程的例子。
由于牛頓法是基于當前位置的切線來確定下一次的位置,所以牛頓法又被很形象地稱為是"切線法"。牛頓法的搜索路徑(二維情況)如下圖所示:
牛頓法搜索動態(tài)示例圖:
關于牛頓法和梯度下降法的效率對比:
從本質(zhì)上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到一個盆地的最底部,梯度下降法每次只從你當前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之后,坡度是否會變得更大。所以,可以說牛頓法比梯度下降法看得更遠一點,能更快地走到最底部。(牛頓法目光更加長遠,所以少走彎路;相對而言,梯度下降法只考慮了局部的最優(yōu),沒有全局思想。)
根據(jù)wiki上的解釋,從幾何上說,牛頓法就是用一個二次曲面去擬合你當前所處位置的局部曲面,而梯度下降法是用一個平面去擬合當前的局部曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優(yōu)下降路徑。
注:紅色的牛頓法的迭代路徑,綠色的是梯度下降法的迭代路徑。
牛頓法的優(yōu)缺點總結:
優(yōu)點:二階收斂,收斂速度快;
缺點:牛頓法是一種迭代算法,每一步都需要求解目標函數(shù)的Hessian矩陣的逆矩陣,計算比較復雜。
2)擬牛頓法(Quasi-Newton Methods)
擬牛頓法是求解非線性優(yōu)化問題最有效的方法之一,于20世紀50年代由美國Argonne國家實驗室的物理學家W.C.Davidon所提出來。Davidon設計的這種算法在當時看來是非線性優(yōu)化領域最具創(chuàng)造性的發(fā)明之一。不久R. Fletcher和M. J. D. Powell證實了這種新的算法遠比其他方法快速和可靠,使得非線性優(yōu)化這門學科在一夜之間突飛猛進。
擬牛頓法的本質(zhì)思想是改善牛頓法每次需要求解復雜的Hessian矩陣的逆矩陣的缺陷,它使用正定矩陣來近似Hessian矩陣的逆,從而簡化了運算的復雜度。擬牛頓法和最速下降法一樣只要求每一步迭代時知道目標函數(shù)的梯度。通過測量梯度的變化,構造一個目標函數(shù)的模型使之足以產(chǎn)生超線性收斂性。這類方法大大優(yōu)于最速下降法,尤其對于困難的問題。另外,因為擬牛頓法不需要二階導數(shù)的信息,所以有時比牛頓法更為有效。如今,優(yōu)化軟件中包含了大量的擬牛頓算法用來解決無約束,約束,和大規(guī)模的優(yōu)化問題。
具體步驟:
擬牛頓法的基本思想如下。首先構造目標函數(shù)在當前迭代xk的二次模型:
這個公式被稱為割線方程。常用的擬牛頓法有DFP算法和BFGS算法。
3. 共軛梯度法(Conjugate Gradient)
4. 啟發(fā)式優(yōu)化方法
啟發(fā)式方法指人在解決問題時所采取的一種根據(jù)經(jīng)驗規(guī)則進行發(fā)現(xiàn)的方法。其特點是在解決問題時,利用過去的經(jīng)驗,選擇已經(jīng)行之有效的方法,而不是系統(tǒng)地、以確定的步驟去尋求答案。啟發(fā)式優(yōu)化方法種類繁多,包括經(jīng)典的模擬退火方法、遺傳算法、蟻群算法以及粒子群算法等等。
還有一種特殊的優(yōu)化算法被稱之多目標優(yōu)化算法,它主要針對同時優(yōu)化多個目標(兩個及兩個以上)的優(yōu)化問題,這方面比較經(jīng)典的算法有NSGAII算法、MOEA/D算法以及人工免疫算法等。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03