自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

超參數(shù)優(yōu)化比較之網(wǎng)格搜索、隨機搜索和貝葉斯優(yōu)化

譯文 精選
人工智能 機器學(xué)習(xí)
本文將詳細介紹用來提高機器學(xué)習(xí)效果的最常見的超參數(shù)優(yōu)化方法。

譯者 | 朱先忠?

審校 | 孫淑娟?

簡介?

通常,在嘗試改進機器學(xué)習(xí)模型時,人們首先想到的解決方案是添加更多的訓(xùn)練數(shù)據(jù)。額外的數(shù)據(jù)通常幫助(在某些情況下除外),但生成高質(zhì)量的數(shù)據(jù)可能非常昂貴。通過使用現(xiàn)有數(shù)據(jù)獲得最佳模型性能,超參數(shù)優(yōu)化可以節(jié)省我們的時間和資源。?

顧名思義,超參數(shù)優(yōu)化是為機器學(xué)習(xí)模型確定最佳超參數(shù)組合以滿足優(yōu)化函數(shù)(即,給定研究中的數(shù)據(jù)集,最大化模型的性能)的過程。換句話說,每個模型都會提供多個有關(guān)選項的調(diào)整“按鈕”,我們可以改變它們,直到我們模型的超參數(shù)達到最佳組合。在超參數(shù)優(yōu)化過程中,我們可以更改的參數(shù)的一些示例可以是學(xué)習(xí)率、神經(jīng)網(wǎng)絡(luò)的架構(gòu)(例如,隱藏層的數(shù)量)、正則化等。?

在這篇文章中,我們將從概念上介紹三種最常見的超參數(shù)優(yōu)化方法,即網(wǎng)格搜索、隨機搜索和貝葉斯優(yōu)化,然后它們進行逐一實現(xiàn)。?

我將在文章一開始提供一個高級別的比較表,以供讀者參考,然后將在本文的其余部分進一步探討、解釋和實施比較表中的每一?

表1超參數(shù)優(yōu)化方法比較?

1.網(wǎng)格搜索算法?

網(wǎng)格搜索可能是超參數(shù)優(yōu)化的最簡單和最直觀的方法,它涉及在定義的搜索空間中徹底搜索超參數(shù)的最佳組合。在此上下文中的“搜索空間”是整個超參數(shù)以及在優(yōu)化過程中考慮的此類超參數(shù)的值。讓我們通過一個示例來更好地理解網(wǎng)格搜索。?

假設(shè)我們有一個只有三個參數(shù)的機器學(xué)習(xí)模型,每個參數(shù)都可以取下表中提供的值:?

parameter_1 = [1, 2, 3]?
parameter_2 = [a, b, c]?
parameter_3 = [x, y, z]?

我們不知道這些參數(shù)的哪個組合將優(yōu)化我們的模型的優(yōu)化功能(即為我們的機器學(xué)習(xí)模型提供最佳輸出)。在網(wǎng)格搜索中,我們只需嘗試這些參數(shù)的每一個組合,測量每個參數(shù)的模型性能,然后簡單地選擇產(chǎn)生最佳性能的組合!在此示例中,參數(shù)1可以取3個值(即1、2或3),參數(shù)2可以取3值(即a、b和c),參數(shù)3可以取3種值(即x、y和z)。換句話說,總共有3*3*3=27個組合。本例中的網(wǎng)格搜索將涉及27輪評估機器學(xué)習(xí)模型的性能,以找到性能最佳的組合。?

如您所見,這種方法非常簡單(類似于試錯任務(wù)),但也有一些局限性。讓我們一起總結(jié)一下此方法的優(yōu)點和缺點。?

其中,優(yōu)勢包括?

  • 易于理解和實施?
  • 易于并行化?
  • 適用于離散和連續(xù)空間?缺點主要有?
  • 在具有大量超參數(shù)的大型和/或復(fù)雜模型中成本高昂(因為必須嘗試和評估所有組合)?
  • 無記憶——不從過去的觀察中學(xué)習(xí)?
  • 如果搜索空間太大,可能無法找到最佳組合我的建議是,如果您有一個搜索空間較小的簡單模型,請使用網(wǎng)格搜索;否則,建議繼續(xù)往下閱讀以找到更適合更大搜索空間的解決方案。
    現(xiàn)在,讓我們用一個真實的例子來實現(xiàn)網(wǎng)格搜索。

1.1.網(wǎng)格搜索算法實現(xiàn)?

為了實現(xiàn)網(wǎng)格搜索,我們將使用scikit-learn中的Iris數(shù)據(jù)集創(chuàng)建一個隨機森林分類模型。該數(shù)據(jù)集包括3種不同的鳶尾花瓣和萼片長度,將用于本次分類練習(xí)。在本文中,模型開發(fā)是次要的,因為目標是比較各種超參數(shù)優(yōu)化策略的性能。我鼓勵您關(guān)注模型評估結(jié)果,以及每種超參數(shù)優(yōu)化方法達到所選超參數(shù)集所需的時間。我將描述運行結(jié)果,然后為本文中使用的三種方法提供一個匯總比較表。?

包括所有超參數(shù)值的搜索空間定義如下:?

search_space = {'n_estimators': [10, 100, 500, 1000],?
'max_depth': [2, 10, 25, 50, 100],?
'min_samples_split': [2, 5, 10],?
'min_samples_leaf': [1, 5, 10]}?

上述搜索空間由4*5*3*3=180個超參數(shù)的總組合組成。我們將使用網(wǎng)格搜索來找到優(yōu)化目標函數(shù)的組合,如下所示:?

# Import libraries?
from sklearn.model_selection import GridSearchCV?
from sklearn.datasets import load_iris?
from sklearn.ensemble import RandomForestClassifier?
from sklearn.model_selection import cross_val_score?
import time?
# 加載Iris數(shù)據(jù)集?
iris = load_iris()?
X, y = iris.data, iris.target?
#定義超參數(shù)搜索空間?
search_space = {'n_estimators': [10, 100, 500, 1000],?
'max_depth': [2, 10, 25, 50, 100],?
'min_samples_split': [2, 5, 10],?
'min_samples_leaf': [1, 5, 10]}?
#定義隨機林分類器?
clf = RandomForestClassifier(random_state=1234)?
# 生成優(yōu)化器對象?
optimizer = GridSearchCV(clf, search_space, cv=5, scoring='accuracy')?
#存儲起始時間,以便用于計算總的耗時?
start_time = time.time()?
#擬合數(shù)據(jù)上的優(yōu)化器?
optimizer.fit(X, y)?
# 存儲結(jié)束時間,以便用于計算總的耗時?
end_time = time.time()?
# 打印最佳超參數(shù)集和相應(yīng)分數(shù)?
print(f"selected hyperparameters:")?
print(optimizer.best_params_)?
print("")?
print(f"best_score: {optimizer.best_score_}")?
print(f"elapsed_time: {round(end_time-start_time, 1)}")?

上面代碼的輸出結(jié)果如下:?

這里我們可以看到使用網(wǎng)格搜索選擇的超參數(shù)值。其中,best_score描述了使用所選超參數(shù)集的評估結(jié)果,而elapsed_time描述了我的本地筆記本電腦執(zhí)行此超參數(shù)優(yōu)化策略所花費的時間。在進行下一種方法時,請記住評估結(jié)果和經(jīng)過的時間,以便進行比較?,F(xiàn)在,讓我們進入隨機搜索的討論?

2.隨機搜索算法?

顧名思義,隨機搜索是從定義的搜索空間中隨機采樣超參數(shù)的過程。與網(wǎng)格搜索不同,隨機搜索只會在預(yù)定義的迭代次數(shù)(取決于可用資源,如時間、預(yù)算、目標等)中選擇超參數(shù)值的隨機子集,并計算每個超參數(shù)的機器學(xué)習(xí)模型的性能,然后選擇最佳的超參數(shù)值。?

根據(jù)上述方法,您可以想象,與完整的網(wǎng)格搜索相比,隨機搜索成本更低,但仍有其自身的優(yōu)勢和劣勢,如下所示:?

優(yōu)勢:?

  • 易于理解和實施?
  • 易于并行化?
  • 適用于離散和連續(xù)空間?
  • 比網(wǎng)格搜索便宜?
  • 與具有相同嘗試次數(shù)的網(wǎng)格搜索相比,更可能收斂到最優(yōu)?缺點:?
  • 無記憶——不從過去的觀察中學(xué)習(xí)?
  • 考慮到隨機選擇,可能會錯過重要的超參數(shù)值?

在下一個方法中,我們將通過貝葉斯優(yōu)化解決網(wǎng)格和隨機搜索的“無記憶”缺點。但在討論此方法之前,讓我們先來實現(xiàn)隨機搜索。?

2.1.隨機搜索算法實現(xiàn)

使用下面的代碼片段,我們將針對網(wǎng)格搜索實現(xiàn)中描述的相同問題實現(xiàn)隨機搜索超參數(shù)優(yōu)化。?

# 導(dǎo)入庫?
from sklearn.model_selection import RandomizedSearchCV?
from scipy.stats import randint?

# 創(chuàng)建一個RandomizedSearchCV對象?
optimizer = RandomizedSearchCV(clf, param_distributinotallow=search_space,?
n_iter=50, cv=5, scoring='accuracy',?
random_state=1234)?

# 存儲開始時間以計算總運行時間?
start_time = time.time()?

# 擬合數(shù)據(jù)上的優(yōu)化器?
optimizer.fit(X, y)?

# 存儲結(jié)束時間以計算總運行時間?
end_time = time.time()?

# 打印最佳超參數(shù)集和相應(yīng)分數(shù)?
print(f"selected hyperparameters:")?
print(optimizer.best_params_)?
print("")?
print(f"best_score: {optimizer.best_score_}")?
print(f"elapsed_time: {round(end_time-start_time, 1)}")?

上面代碼的輸出結(jié)果如下:?

隨機搜索結(jié)果?

與網(wǎng)格搜索的結(jié)果相比,這些結(jié)果非常有趣。best_score保持不變,但elapsed_time從352.0秒減少到75.5秒!真是令人印象深刻!換句話說,隨機搜索算法設(shè)法找到了一組超參數(shù),在網(wǎng)格搜索所需時間的21%左右,其性能與網(wǎng)格搜索相同!但是,里的效率高得多。?

接下來,讓我們繼續(xù)我們的下一種方法,稱為貝葉斯優(yōu)化,它從優(yōu)化過程中的每一次嘗試中學(xué)習(xí)。?

3.貝葉斯優(yōu)化

貝葉斯優(yōu)化是一種超參數(shù)優(yōu)化方法,它使用概率模型從以前的嘗試中“學(xué)習(xí)”,并將搜索引向搜索空間中超參數(shù)的最佳組合,從而優(yōu)化機器學(xué)習(xí)模型的目標函數(shù)。?

貝葉斯優(yōu)化方法可以分為4個步驟,我將在下面描述。我鼓勵您通讀這些步驟,以便更好地理解流程,但使用這種方法并不需要什么前提知識。?

  1. 定義一個“先驗”,這是一個關(guān)于我們在某個時間點對優(yōu)化目標函數(shù)最可能的超參數(shù)組合的信念的概率模型?
  2. 評估超參數(shù)樣本的模型?
  3. 使用步驟2中獲得的知識,更新步驟1中的概率模型(即我們所稱的“先驗”),了解我們認為優(yōu)化目標函數(shù)的超參數(shù)的最可能組合在哪里。我們更新的信念稱為“后驗”。換句話說,在步驟2中獲得的知識幫助我們更好地了解搜索空間,并將我們從先驗帶到后驗,使后驗成為我們關(guān)于搜索空間和目標函數(shù)的“最新”知識,由步驟2提供信息?
  4. 重復(fù)步驟2和3,直到模型性能收斂、資源耗盡或滿足其他預(yù)定義指標?

如果您有興趣了解更多有關(guān)貝葉斯優(yōu)化的詳細信息,可以查看以下帖子:?

《機器學(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)化是如何工作的,那么讓我們來看看它的優(yōu)點和缺點。?

優(yōu)勢:?

  • 從過去的觀察中學(xué)習(xí),因此效率更高。換句話說,與無記憶方法相比,它有望在更少的迭代中找到一組更好的超參數(shù)?
  • 在給定某些假設(shè)的情況下收斂到最優(yōu)?缺點:?
  • 難以并行化?
  • 計算量大于網(wǎng)格和每次迭代的隨機搜索?
  • 先驗和貝葉斯優(yōu)化中使用的函數(shù)(例如,獲取函數(shù)等)的初始概率分布的選擇會顯著影響性能及其學(xué)習(xí)曲線?

在排除了細節(jié)之后,讓我們實現(xiàn)貝葉斯優(yōu)化并查看結(jié)果。?

3.1.貝葉斯優(yōu)化算法實現(xiàn)

與上一節(jié)類似,我們將使用下面的代碼片段為網(wǎng)格搜索實現(xiàn)中描述的相同問題實現(xiàn)貝葉斯超參數(shù)優(yōu)化。?

# 導(dǎo)入庫?
from skopt import BayesSearchCV?

# 執(zhí)行貝葉斯優(yōu)化?
optimizer = BayesSearchCV(estimator=RandomForestClassifier(),?
search_spaces=search_space,?
n_iter=10,?
cv=5,?
scoring='accuracy',?
random_state=1234)?

# 存儲開始時間以計算總運行時間?
start_time = time.time()?

optimizer.fit(X, y)?

# 存儲結(jié)束時間以計算總運行時間?
end_time = time.time()?

# 打印最佳超參數(shù)集和相應(yīng)分數(shù)?
print(f"selected hyperparameters:")?
print(optimizer.best_params_)?
print("")?
print(f"best_score: {optimizer.best_score_}")?
print(f"elapsed_time: {round(end_time-start_time, 1)}")?

上面代碼的輸出結(jié)果如下:?

貝葉斯優(yōu)化結(jié)果?

另一組有趣的結(jié)果!best_score與我們通過網(wǎng)格和隨機搜索獲得的結(jié)果保持一致,但結(jié)果僅用了23.1秒,而隨機搜索為75.5秒,網(wǎng)格搜索為352.0秒!換句話說,使用貝葉斯優(yōu)化所需的時間比網(wǎng)格搜索所需的時間大約少93%。這是一個巨大的生產(chǎn)力提升,在更大、更復(fù)雜的模型和搜索空間中變得更有意義。?

請注意,貝葉斯優(yōu)化只使用了10次迭代就獲得了這些結(jié)果,因為它可以從以前的迭代中學(xué)習(xí)(與隨機和網(wǎng)格搜索相反)。?

結(jié)果比較

下表對目前所討論的三種方法的結(jié)果進行了比較。“Methodology方法論”一欄描述了所使用的超參數(shù)優(yōu)化方法。隨后是使用每種方法選擇的超參數(shù)?!癇est Score”是使用特定方法獲得的分數(shù),然后是“Elapsed Time”,表示優(yōu)化策略在我的本地筆記本電腦上運行所需的時間。最后一列“獲得的效率(Gained Efficiency)”假設(shè)網(wǎng)格搜索為基線,然后計算與網(wǎng)格搜索相比,其他兩種方法中每種方法獲得的效率(使用經(jīng)過的時間)。例如,由于隨機搜索耗時75.5秒,而網(wǎng)格搜索耗時352.0秒,因此相對于網(wǎng)格搜索的基線,隨機搜索的效率計算為1–75.5/352.0=78.5%。?

表2——方法性能比較表?

以上比較表中的兩個主要結(jié)論:?

  1. 效率:我們可以看到貝葉斯優(yōu)化等學(xué)習(xí)方法如何在更短的時間內(nèi)找到一組優(yōu)化的超參數(shù)。?
  2. 參數(shù)選擇:可以有多個正確答案。例如,貝葉斯優(yōu)化的選定參數(shù)與網(wǎng)格和隨機搜索的參數(shù)不同,盡管評估度量(即best_score)保持不變。這在更大、更復(fù)雜的環(huán)境中更為重要。?

結(jié)論

在這篇文章中,我們討論了什么是超參數(shù)優(yōu)化,并介紹了用于此優(yōu)化練習(xí)的三種最常見的方法。然后,我們詳細介紹了這三種方法中的每一種,并在分類練習(xí)中實現(xiàn)了它們。最后,我們比較了實施這三種方法的結(jié)果。我們發(fā)現(xiàn),從以前的嘗試中學(xué)習(xí)的貝葉斯優(yōu)化等方法可以顯著提高效率,這可能是大型復(fù)雜模型(如深度神經(jīng)網(wǎng)絡(luò))中的一個重要因素,其中效率可是一個決定因素。?

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。?

原文標題:??Hyperparameter Optimization — Intro and Implementation of Grid Search, Random Search and Bayesian Optimization??,作者:Farzad Mahmoodinobar?



責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2020-10-09 12:41:04

算法優(yōu)化場景

2022-09-28 08:00:00

Python機器學(xué)習(xí)算法

2023-02-13 15:00:13

機器學(xué)習(xí)scikit-leaPyTorch

2017-08-19 08:36:25

貝葉斯優(yōu)化超參數(shù)函數(shù)

2017-08-07 13:02:32

全棧必備貝葉斯

2022-03-22 15:20:32

微信全文搜索

2024-10-11 16:53:16

貝葉斯人工智能網(wǎng)絡(luò)

2011-05-17 17:51:43

SEO網(wǎng)站優(yōu)化

2011-06-20 18:23:06

SEO

2012-09-24 10:13:35

貝葉斯

2012-08-24 09:16:53

App Store

2017-03-29 14:50:18

2020-12-21 10:00:49

算法模型優(yōu)化

2024-04-16 09:53:56

PostgreSQL數(shù)據(jù)庫優(yōu)化索引

2016-10-25 12:39:37

Windows優(yōu)化桌面

2018-01-23 10:29:50

主搜索店鋪搜索

2024-08-13 12:54:20

2024-11-21 08:00:00

向量搜索人工智能

2011-06-03 10:19:53

2009-07-30 10:40:56

搜索引擎優(yōu)化網(wǎng)站
點贊
收藏

51CTO技術(shù)棧公眾號