詳解Python中4種超參自動優(yōu)化算法的實(shí)現(xiàn)_第1頁
詳解Python中4種超參自動優(yōu)化算法的實(shí)現(xiàn)_第2頁
詳解Python中4種超參自動優(yōu)化算法的實(shí)現(xiàn)_第3頁
詳解Python中4種超參自動優(yōu)化算法的實(shí)現(xiàn)_第4頁
詳解Python中4種超參自動優(yōu)化算法的實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第詳解Python中4種超參自動優(yōu)化算法的實(shí)現(xiàn)print('詳細(xì)結(jié)果:\n',pd.DataFrame.from_dict(clf.cv_results_))

print('最佳分類器:\n',clf.best_estimator_)

print('最佳分?jǐn)?shù):\n',clf.best_score_)

print('最佳參數(shù):\n',clf.best_params_)

詳細(xì)結(jié)果:

mean_fit_timestd_fit_timemean_score_timestd_score_timeparam_C...split3_test_scoresplit4_test_scoremean_test_scorestd_test_scorerank_test_score

00.0005980.0004890.0002000.0004006.4538...0.9666671.00.9866670.0163301

10.0009970.0000020.0000000.0000004.99782...0.9666671.00.9800000.0266673

20.0007980.0003990.0003990.0004883.81406...0.9666671.00.9800000.0163303

30.0005980.0004880.0002000.0003995.36286...0.9666671.00.9866670.0163301

[4rowsx15columns]

最佳分類器:

SVC(C=6.453804509266643)

最佳分?jǐn)?shù):

0.9866666666666667

最佳參數(shù):

{'C':6.453804509266643,'kernel':'rbf'}

相比于網(wǎng)格搜索,sklearn隨機(jī)搜索中主要改變的參數(shù)是param_distributions,負(fù)責(zé)提供超參值分布范圍。

三、貝葉斯優(yōu)化(BayesianOptimization)

我寫本文的目的主要是沖著貝葉斯優(yōu)化來的,一直有所耳聞卻未深入了解,所以我就來查漏補(bǔ)缺了。以下內(nèi)容主要基于DuaneRich在《HowdoesBayesianoptimizationwork》的回答。

調(diào)優(yōu)的目的是要找到一組最優(yōu)的超參組合,能使目標(biāo)函數(shù)f達(dá)到全局最小值。

舉個例子,若學(xué)習(xí)率設(shè)置過大,模型可能會在代價函數(shù)的全局最優(yōu)點(diǎn)附近不斷來回震蕩,甚至跳出全局最優(yōu)點(diǎn),而設(shè)置過小,又可能會陷入局部最優(yōu),因此調(diào)學(xué)習(xí)率這一參數(shù),是為了讓模型能收斂到代價函數(shù)的全局最小值??墒窃跈C(jī)器學(xué)習(xí)中,目標(biāo)函數(shù)常是被稱作expensiveblackboxfunction,計(jì)算開銷大且不一定為凸函數(shù)。為此,貝葉斯優(yōu)化出現(xiàn)了,它特別適合針對expensiveblackboxfunction找到全局最優(yōu)。

假設(shè)我們的真實(shí)的目標(biāo)函數(shù)長下圖這樣:

圖2:目標(biāo)函數(shù)f(x)

注意:目標(biāo)函數(shù)的是指超參數(shù),我們希望找到最優(yōu)的超參去得到最小的。為什么用虛線表示呢?因?yàn)樗呛谙浜瘮?shù)(blackboxfunction)。

現(xiàn)在,我們怎么找到全局最小值點(diǎn)呢?我們能不能先在上隨機(jī)采樣10個點(diǎn),然后取它們的最小值呢?

圖3:隨機(jī)采樣10個點(diǎn)的目標(biāo)函數(shù)f(x)

圖3里確實(shí)有個點(diǎn)挺靠近全局最優(yōu)點(diǎn)的,那是不是在它附近再采樣幾個點(diǎn),不斷重復(fù)就行了?沒那么簡單,萬一起始采樣點(diǎn)在局部最小值附近,那這種方法會很容易陷入局部最優(yōu)。關(guān)于如何找到下一個合適的點(diǎn)這個問題,我們先放一放,因?yàn)槲覀兟┑粢粋€重點(diǎn):每次嘗試一種超參值,計(jì)算的代價是昂貴的,為了減輕開銷,貝葉斯優(yōu)化采用了代理模型(surrogatemodel),代理模型可以被看作是一個簡單模型去擬合原本復(fù)雜且不好理解的模型,簡單來說,就是計(jì)算太昂貴了,我們就用代理模型去代替它。

貝葉斯優(yōu)化使用了**高斯過程(gasussianprocesses,GP)**去構(gòu)建代理模型,高斯過程的細(xì)節(jié)這里暫時不講,有興趣的小伙伴可以自行查閱資料了解?;诮o定的輸入和輸出,GP會推斷出一個模型(這里為代理模型)。假設(shè)我們從昂貴的采樣了4個點(diǎn),然后我們把這4個點(diǎn)交給GP,它會返回一個代理模型,如下圖所示:

圖4:目標(biāo)函數(shù)f(x)和代理模型

綠色實(shí)線就是GP猜的代理模型,綠色條帶是輸出分布的標(biāo)準(zhǔn)差(即為Uncertainty)。我們有了代理模型,后續(xù)我們?nèi)フ蚁乱粋€合適的超參值,就能帶入到計(jì)算開銷相對較小的代理模型中,評估給定超參值的情況。

現(xiàn)在,我們來思考回之前提到的問題:如何找到下一個合適的點(diǎn),這個問題本質(zhì)是在問:哪里有全局最小的點(diǎn)?,為了解決這個問題,我們要關(guān)注兩個地方:

(1)已開發(fā)區(qū)域:在綠色實(shí)線上最低的超參點(diǎn)。因?yàn)楹芸赡芩浇嬖谌肿顑?yōu)點(diǎn)。

(2)未探索區(qū)域:綠色實(shí)線上還未被探索的區(qū)域。比如圖4,相比于0.15-0.25區(qū)間,0.65-0.75區(qū)間更具有探索價值(即該區(qū)間Uncertainty更大)。探索該區(qū)域有利于減少我們猜測的方差。

為了實(shí)現(xiàn)以上探索和開發(fā)的平衡(exploration-exploitationtrade-off),貝葉斯優(yōu)化使用了采集函數(shù)(acquisitionfunction),它能平衡好全局最小值的探索和開發(fā)。采集函數(shù)有很多選擇,其中最常見的是expectatedofimprovement(EI),我們先看一個utilityfunction:

是目前觀察到的最小值,是超參值,我們希望上述utilityfunction輸出越大越好(即找到的能獲得比當(dāng)前最小值還小),基于,EI采集函數(shù)如下所示:

具有最高的EI的超參值會被選擇。EI有兩部分:

(1)減少均值函數(shù),提高EI。

(2)增加方差,提高EI。

所以EI的提高是建立在均值和方差的trade-off,也是exploration和exploitation的trade-off。

圖5:采集函數(shù)A(x)

圖5我們可以看到,時EI最大,所以我們下一個超參值應(yīng)該選1。

講到這里,我們來看下完整的貝葉斯優(yōu)化步驟是怎樣的:

圖6:貝葉斯優(yōu)化-SMBO

SMBO是簡潔版的貝葉斯優(yōu)化,偽代碼如圖6所示,具體如下:

(1)準(zhǔn)備輸入:expensiveblackboxfunction,超參搜索空間,采樣數(shù)據(jù)集(超參組合,對應(yīng)輸出值),采集函數(shù)和用數(shù)據(jù)集擬合的代理模型M。

(2)基于和,采樣得到數(shù)據(jù)集。

(3)循環(huán)選次參數(shù):

用當(dāng)前數(shù)據(jù)集擬合代理模型,實(shí)現(xiàn)模型更新。

選擇使采集函數(shù)最大的超參組合。

將帶入中,得到輸出值。(注意這里的計(jì)算開銷大)

將新的加入到現(xiàn)有數(shù)據(jù)集中。

目前,Hyperopt開源代碼庫已實(shí)現(xiàn)基于**TPE(Tree-structuredParzenEstimatorApproach)**的貝葉斯優(yōu)化,圖6我們能看到GP構(gòu)建的概率模型是,而TPE是和,關(guān)于TPE和GP的對比討論,建議閱讀論文。TPE樣例代碼如下:

fromsklearnimportsvm,datasets

fromsklearn.model_selectionimportcross_val_score

fromhyperoptimporthp,fmin,tpe,space_eval

importpandasaspd

#導(dǎo)入數(shù)據(jù)

iris=datasets.load_iris()

#step1:定義目標(biāo)函數(shù)

defobjective(params):

#初始化模型并交叉驗(yàn)證

svc=svm.SVC(**params)

cv_scores=cross_val_score(svc,iris.data,iris.target,cv=5)

#返回loss=1-accuracy(loss必須被最小化)

loss=1-cv_scores.mean()

returnloss

#step2:定義超參搜索空間

space={'kernel':hp.choice('kernel',['linear','rbf']),

'C':hp.uniform('C',1,10)}

#step3:在給定超參搜索空間下,最小化目標(biāo)函數(shù)

best=fmin(objective,space,algo=tpe.suggest,max_evals=100)

返回:best_loss:0.013333333333333308(即accuracy為0.9866666666666667)

#step4:打印結(jié)果

print(best)

返回:{'C':6.136181888987526,'kernel':1}(PS:kernel為0-basedindex,這里1指rbf)

四、Hyperband

除了格子搜索、隨機(jī)搜索和貝葉斯優(yōu)化,還有其它自動調(diào)參方式。例如Hyperbandoptimization,Hyperband本質(zhì)上是隨機(jī)搜索的一種變種,它使用早停策略和SccessiveHalving算法去分配資源,結(jié)果是Hyperband能評估更多的超參組合,同時在給定的資源預(yù)算下,比貝葉斯方法收斂更快,下圖展示了Hyperband的早停和資源分配:

圖7:Hyperband的超參選擇和評估

在Hyperband之后,還出現(xiàn)了BOHB,它混合了貝葉斯優(yōu)化和Hyperband。Hyperband和BOHB的開源代碼可參考HpBandSter庫,這里不展開細(xì)講。

總結(jié)

上面我們用Iris鳶尾花數(shù)據(jù)集試了不同的超參自動調(diào)優(yōu)方法,發(fā)現(xiàn)貝葉斯優(yōu)化和隨機(jī)搜索都比格子搜索好。從一些論文反映,貝葉斯優(yōu)化是更香的,但是貝葉斯優(yōu)化好像在實(shí)踐中用的不是那么多,網(wǎng)上也有很多分享者,像NageshSinghChauhan,說的那樣:

Asageneralruleofthumb,anytimeyouwanttooptimizetuninghyperparameters,thinkGridSearchandRandomizedSearch![10]

HyperparameterOptimizationforMachineLearningModels-NageshSinghChauhan

為什么呢?我想原因是貝葉斯的開銷太大了,前面有提到,在每次循環(huán)選超參值的時候,貝葉斯優(yōu)化都需要將帶入昂貴的目標(biāo)函數(shù)中,去得到輸出值y,當(dāng)目標(biāo)函數(shù)特別復(fù)雜時,這種情況的評估開銷是很大的,更何況隨著搜索空間和搜索次數(shù)的變大

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論