譯者 | 朱先忠?
審校 | 孫淑娟?
簡(jiǎn)介?
通常,在嘗試改進(jìn)機(jī)器學(xué)習(xí)模型時(shí),人們首先想到的解決方案是添加更多的訓(xùn)練數(shù)據(jù)。額外的數(shù)據(jù)通常是有幫助(在某些情況下除外)的,但生成高質(zhì)量的數(shù)據(jù)可能非常昂貴。通過(guò)使用現(xiàn)有數(shù)據(jù)獲得最佳模型性能,超參數(shù)優(yōu)化可以節(jié)省我們的時(shí)間和資源。?
顧名思義,超參數(shù)優(yōu)化是為機(jī)器學(xué)習(xí)模型確定最佳超參數(shù)組合以滿(mǎn)足優(yōu)化函數(shù)(即,給定研究中的數(shù)據(jù)集,最大化模型的性能)的過(guò)程。換句話(huà)說(shuō),每個(gè)模型都會(huì)提供多個(gè)有關(guān)選項(xiàng)的調(diào)整“按鈕”,我們可以改變它們,直到我們模型的超參數(shù)達(dá)到最佳組合。在超參數(shù)優(yōu)化過(guò)程中,我們可以更改的參數(shù)的一些示例可以是學(xué)習(xí)率、神經(jīng)網(wǎng)絡(luò)的架構(gòu)(例如,隱藏層的數(shù)量)、正則化等。?
在這篇文章中,我們將從概念上介紹三種最常見(jiàn)的超參數(shù)優(yōu)化方法,即網(wǎng)格搜索、隨機(jī)搜索和貝葉斯優(yōu)化,然后對(duì)它們進(jìn)行逐一實(shí)現(xiàn)。?
我將在文章一開(kāi)始提供一個(gè)高級(jí)別的比較表,以供讀者參考,然后將在本文的其余部分進(jìn)一步探討、解釋和實(shí)施比較表中的每一項(xiàng)。?
表1:超參數(shù)優(yōu)化方法比較?
1.網(wǎng)格搜索算法?
網(wǎng)格搜索可能是超參數(shù)優(yōu)化的最簡(jiǎn)單和最直觀的方法,它涉及在定義的搜索空間中徹底搜索超參數(shù)的最佳組合。在此上下文中的“搜索空間”是整個(gè)超參數(shù)以及在優(yōu)化過(guò)程中考慮的此類(lèi)超參數(shù)的值。讓我們通過(guò)一個(gè)示例來(lái)更好地理解網(wǎng)格搜索。?
假設(shè)我們有一個(gè)只有三個(gè)參數(shù)的機(jī)器學(xué)習(xí)模型,每個(gè)參數(shù)都可以取下表中提供的值:?
我們不知道這些參數(shù)的哪個(gè)組合將優(yōu)化我們的模型的優(yōu)化功能(即為我們的機(jī)器學(xué)習(xí)模型提供最佳輸出)。在網(wǎng)格搜索中,我們只需嘗試這些參數(shù)的每一個(gè)組合,測(cè)量每個(gè)參數(shù)的模型性能,然后簡(jiǎn)單地選擇產(chǎn)生最佳性能的組合!在此示例中,參數(shù)1可以取3個(gè)值(即1、2或3),參數(shù)2可以取3種值(即a、b和c),參數(shù)3可以取3種值(即x、y和z)。換句話(huà)說(shuō),總共有3*3*3=27個(gè)組合。本例中的網(wǎng)格搜索將涉及27輪評(píng)估機(jī)器學(xué)習(xí)模型的性能,以找到性能最佳的組合。?
如您所見(jiàn),這種方法非常簡(jiǎn)單(類(lèi)似于試錯(cuò)任務(wù)),但也有一些局限性。讓我們一起總結(jié)一下此方法的優(yōu)點(diǎn)和缺點(diǎn)。?
其中,優(yōu)勢(shì)包括:?
- 易于理解和實(shí)施?
- 易于并行化?
- 適用于離散和連續(xù)空間?缺點(diǎn)主要有:?
- 在具有大量超參數(shù)的大型和/或復(fù)雜模型中成本高昂(因?yàn)楸仨殗L試和評(píng)估所有組合)?
- 無(wú)記憶——不從過(guò)去的觀察中學(xué)習(xí)?
- 如果搜索空間太大,可能無(wú)法找到最佳組合我的建議是,如果您有一個(gè)搜索空間較小的簡(jiǎn)單模型,請(qǐng)使用網(wǎng)格搜索;否則,建議繼續(xù)往下閱讀以找到更適合更大搜索空間的解決方案。
現(xiàn)在,讓我們用一個(gè)真實(shí)的例子來(lái)實(shí)現(xiàn)網(wǎng)格搜索。
1.1.網(wǎng)格搜索算法實(shí)現(xiàn)?
為了實(shí)現(xiàn)網(wǎng)格搜索,我們將使用scikit-learn中的Iris數(shù)據(jù)集創(chuàng)建一個(gè)隨機(jī)森林分類(lèi)模型。該數(shù)據(jù)集包括3種不同的鳶尾花瓣和萼片長(zhǎng)度,將用于本次分類(lèi)練習(xí)。在本文中,模型開(kāi)發(fā)是次要的,因?yàn)槟繕?biāo)是比較各種超參數(shù)優(yōu)化策略的性能。我鼓勵(lì)您關(guān)注模型評(píng)估結(jié)果,以及每種超參數(shù)優(yōu)化方法達(dá)到所選超參數(shù)集所需的時(shí)間。我將描述運(yùn)行結(jié)果,然后為本文中使用的三種方法提供一個(gè)匯總比較表。?
包括所有超參數(shù)值的搜索空間,定義如下:?
上述搜索空間由4*5*3*3=180個(gè)超參數(shù)的總組合組成。我們將使用網(wǎng)格搜索來(lái)找到優(yōu)化目標(biāo)函數(shù)的組合,如下所示:?
上面代碼的輸出結(jié)果如下:?
這里我們可以看到使用網(wǎng)格搜索選擇的超參數(shù)值。其中,best_score描述了使用所選超參數(shù)集的評(píng)估結(jié)果,而elapsed_time描述了我的本地筆記本電腦執(zhí)行此超參數(shù)優(yōu)化策略所花費(fèi)的時(shí)間。在進(jìn)行下一種方法時(shí),請(qǐng)記住評(píng)估結(jié)果和經(jīng)過(guò)的時(shí)間,以便進(jìn)行比較?,F(xiàn)在,讓我們進(jìn)入隨機(jī)搜索的討論。?
2.隨機(jī)搜索算法?
顧名思義,隨機(jī)搜索是從定義的搜索空間中隨機(jī)采樣超參數(shù)的過(guò)程。與網(wǎng)格搜索不同,隨機(jī)搜索只會(huì)在預(yù)定義的迭代次數(shù)(取決于可用資源,如時(shí)間、預(yù)算、目標(biāo)等)中選擇超參數(shù)值的隨機(jī)子集,并計(jì)算每個(gè)超參數(shù)的機(jī)器學(xué)習(xí)模型的性能,然后選擇最佳的超參數(shù)值。?
根據(jù)上述方法,您可以想象,與完整的網(wǎng)格搜索相比,隨機(jī)搜索成本更低,但仍有其自身的優(yōu)勢(shì)和劣勢(shì),如下所示:?
優(yōu)勢(shì):?
- 易于理解和實(shí)施?
- 易于并行化?
- 適用于離散和連續(xù)空間?
- 比網(wǎng)格搜索便宜?
- 與具有相同嘗試次數(shù)的網(wǎng)格搜索相比,更可能收斂到最優(yōu)?缺點(diǎn):?
- 無(wú)記憶——不從過(guò)去的觀察中學(xué)習(xí)?
- 考慮到隨機(jī)選擇,可能會(huì)錯(cuò)過(guò)重要的超參數(shù)值?
在下一個(gè)方法中,我們將通過(guò)貝葉斯優(yōu)化解決網(wǎng)格和隨機(jī)搜索的“無(wú)記憶”缺點(diǎn)。但在討論此方法之前,讓我們先來(lái)實(shí)現(xiàn)隨機(jī)搜索。?
2.1.隨機(jī)搜索算法實(shí)現(xiàn)
使用下面的代碼片段,我們將針對(duì)網(wǎng)格搜索實(shí)現(xiàn)中描述的相同問(wèn)題實(shí)現(xiàn)隨機(jī)搜索超參數(shù)優(yōu)化。?
上面代碼的輸出結(jié)果如下:?
隨機(jī)搜索結(jié)果?
與網(wǎng)格搜索的結(jié)果相比,這些結(jié)果非常有趣。best_score保持不變,但elapsed_time從352.0秒減少到75.5秒!真是令人印象深刻!換句話(huà)說(shuō),隨機(jī)搜索算法設(shè)法找到了一組超參數(shù),在網(wǎng)格搜索所需時(shí)間的21%左右,其性能與網(wǎng)格搜索相同!但是,這里的效率高得多。?
接下來(lái),讓我們繼續(xù)我們的下一種方法,稱(chēng)為貝葉斯優(yōu)化,它從優(yōu)化過(guò)程中的每一次嘗試中學(xué)習(xí)。?
3.貝葉斯優(yōu)化
貝葉斯優(yōu)化是一種超參數(shù)優(yōu)化方法,它使用概率模型從以前的嘗試中“學(xué)習(xí)”,并將搜索引向搜索空間中超參數(shù)的最佳組合,從而優(yōu)化機(jī)器學(xué)習(xí)模型的目標(biāo)函數(shù)。?
貝葉斯優(yōu)化方法可以分為4個(gè)步驟,我將在下面描述。我鼓勵(lì)您通讀這些步驟,以便更好地理解流程,但使用這種方法并不需要什么前提知識(shí)。?
- 定義一個(gè)“先驗(yàn)”,這是一個(gè)關(guān)于我們?cè)谀硞€(gè)時(shí)間點(diǎn)對(duì)優(yōu)化目標(biāo)函數(shù)最可能的超參數(shù)組合的信念的概率模型?
- 評(píng)估超參數(shù)樣本的模型?
- 使用步驟2中獲得的知識(shí),更新步驟1中的概率模型(即我們所稱(chēng)的“先驗(yàn)”),了解我們認(rèn)為優(yōu)化目標(biāo)函數(shù)的超參數(shù)的最可能組合在哪里。我們更新的信念稱(chēng)為“后驗(yàn)”。換句話(huà)說(shuō),在步驟2中獲得的知識(shí)幫助我們更好地了解搜索空間,并將我們從先驗(yàn)帶到后驗(yàn),使后驗(yàn)成為我們關(guān)于搜索空間和目標(biāo)函數(shù)的“最新”知識(shí),由步驟2提供信息?
- 重復(fù)步驟2和3,直到模型性能收斂、資源耗盡或滿(mǎn)足其他預(yù)定義指標(biāo)?
如果您有興趣了解更多有關(guān)貝葉斯優(yōu)化的詳細(xì)信息,可以查看以下帖子:?
《機(jī)器學(xué)習(xí)中的貝葉斯優(yōu)化算法》,地址是:
??https://medium.com/@fmnobar/conceptual-overview-of-bayesian-optimization-for-parameter-tuning-in-machine-learning-a3b1b4b9339f。???
現(xiàn)在,既然我們已經(jīng)了解了貝葉斯優(yōu)化是如何工作的,那么讓我們來(lái)看看它的優(yōu)點(diǎn)和缺點(diǎn)。?
優(yōu)勢(shì):?
- 從過(guò)去的觀察中學(xué)習(xí),因此效率更高。換句話(huà)說(shuō),與無(wú)記憶方法相比,它有望在更少的迭代中找到一組更好的超參數(shù)?
- 在給定某些假設(shè)的情況下收斂到最優(yōu)?缺點(diǎn):?
- 難以并行化?
- 計(jì)算量大于網(wǎng)格和每次迭代的隨機(jī)搜索?
- 先驗(yàn)和貝葉斯優(yōu)化中使用的函數(shù)(例如,獲取函數(shù)等)的初始概率分布的選擇會(huì)顯著影響性能及其學(xué)習(xí)曲線(xiàn)?
在排除了細(xì)節(jié)之后,讓我們實(shí)現(xiàn)貝葉斯優(yōu)化并查看結(jié)果。?
3.1.貝葉斯優(yōu)化算法實(shí)現(xiàn)
與上一節(jié)類(lèi)似,我們將使用下面的代碼片段為網(wǎng)格搜索實(shí)現(xiàn)中描述的相同問(wèn)題實(shí)現(xiàn)貝葉斯超參數(shù)優(yōu)化。?
上面代碼的輸出結(jié)果如下:?
貝葉斯優(yōu)化結(jié)果?
另一組有趣的結(jié)果!best_score與我們通過(guò)網(wǎng)格和隨機(jī)搜索獲得的結(jié)果保持一致,但結(jié)果僅用了23.1秒,而隨機(jī)搜索為75.5秒,網(wǎng)格搜索為352.0秒!換句話(huà)說(shuō),使用貝葉斯優(yōu)化所需的時(shí)間比網(wǎng)格搜索所需的時(shí)間大約少93%。這是一個(gè)巨大的生產(chǎn)力提升,在更大、更復(fù)雜的模型和搜索空間中變得更有意義。?
請(qǐng)注意,貝葉斯優(yōu)化只使用了10次迭代就獲得了這些結(jié)果,因?yàn)樗梢詮囊郧暗牡袑W(xué)習(xí)(與隨機(jī)和網(wǎng)格搜索相反)。?
結(jié)果比較
下表對(duì)目前所討論的三種方法的結(jié)果進(jìn)行了比較?!癕ethodology(方法論)”一欄描述了所使用的超參數(shù)優(yōu)化方法。隨后是使用每種方法選擇的超參數(shù)?!癇est Score”是使用特定方法獲得的分?jǐn)?shù),然后是“Elapsed Time”,表示優(yōu)化策略在我的本地筆記本電腦上運(yùn)行所需的時(shí)間。最后一列“獲得的效率(Gained Efficiency)”假設(shè)網(wǎng)格搜索為基線(xiàn),然后計(jì)算與網(wǎng)格搜索相比,其他兩種方法中每種方法獲得的效率(使用經(jīng)過(guò)的時(shí)間)。例如,由于隨機(jī)搜索耗時(shí)75.5秒,而網(wǎng)格搜索耗時(shí)352.0秒,因此相對(duì)于網(wǎng)格搜索的基線(xiàn),隨機(jī)搜索的效率計(jì)算為1–75.5/352.0=78.5%。?
表2——方法性能比較表?
以上比較表中的兩個(gè)主要結(jié)論:?
- 效率:我們可以看到貝葉斯優(yōu)化等學(xué)習(xí)方法如何在更短的時(shí)間內(nèi)找到一組優(yōu)化的超參數(shù)。?
- 參數(shù)選擇:可以有多個(gè)正確答案。例如,貝葉斯優(yōu)化的選定參數(shù)與網(wǎng)格和隨機(jī)搜索的參數(shù)不同,盡管評(píng)估度量(即best_score)保持不變。這在更大、更復(fù)雜的環(huán)境中更為重要。?
結(jié)論
在這篇文章中,我們討論了什么是超參數(shù)優(yōu)化,并介紹了用于此優(yōu)化練習(xí)的三種最常見(jiàn)的方法。然后,我們?cè)敿?xì)介紹了這三種方法中的每一種,并在分類(lèi)練習(xí)中實(shí)現(xiàn)了它們。最后,我們比較了實(shí)施這三種方法的結(jié)果。我們發(fā)現(xiàn),從以前的嘗試中學(xué)習(xí)的貝葉斯優(yōu)化等方法可以顯著提高效率,這可能是大型復(fù)雜模型(如深度神經(jīng)網(wǎng)絡(luò))中的一個(gè)重要因素,其中效率可能是一個(gè)決定因素。?
譯者介紹
朱先忠,51CTO社區(qū)編輯,51CTO專(zhuān)家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。?
原文標(biāo)題:??Hyperparameter Optimization — Intro and Implementation of Grid Search, Random Search and Bayesian Optimization??,作者:Farzad Mahmoodinobar?