在尋找最優超引數值的時候,需要提前確定一些資料。首先,也是最重要的,任何演算法都需要乙個目標函式,來找它的最大值。或者乙個損失函式,來找它的最小值。然後,需要確定搜尋範圍,一般通過上限和下限來確定。可能還有一些對於演算法的引數,比如搜尋的步長。
網格搜尋可能是應用最廣泛的超引數搜尋演算法了,因為它確實很簡單。網格搜尋通過查詢搜尋範圍內的所有的點,來確定最優值。它返回目標函式的最大值或損失函式的最小值。給出較大的搜尋範圍,以及較小的步長,網格搜尋是一定可以找到全域性最大值或最小值的。但是,網格搜尋乙個比較大的問題是,它十分消耗計算資源,特別是,需要調優的超引數比較多的時候(例如,隨機森林裡有8個左右)。因此,當人們實際使用網格搜尋來找到最佳超引數集的時候,一般會先使用較廣的搜尋範圍,以及較大的步長,來找到全域性最大值或者最小值可能的位置。然後,人們會縮小搜尋範圍和步長,來達到更精確的最值。儘管這樣做可以降低所需的時間,但是由於目標引數一般是非凸的,如圖1所示,所以人們常常就會錯過了全域性的最大值或最小值,因為他們在第一次測試的時候找到了乙個區域性的最值。
隨機搜尋的思想和網格搜尋比較相似,只是不再測試上界和下界之間的所有值,只是在搜尋範圍中隨機取樣本點。它的理論依據是,如果隨即樣本點集足夠大,那麼也可以找到全域性的最大或最小值,或它們的近似值。通過對搜尋範圍的隨機取樣,隨機搜尋一般會比網格搜尋要快一些。但是和網格搜尋的快速版(非自動版)相似,結果也是沒法保證的。
貝葉斯優化尋找使全域性達到最值的引數時,使用了和網格搜尋、隨機搜尋完全不同的方法。網格搜尋和隨機搜尋在測試乙個新的點時,會忽略前乙個點的資訊。而貝葉斯優化充分利用了這個資訊。貝葉斯優化的工作方式是通過對目標函式形狀的學習,找到使結果向全域性最大值提公升的引數。它學習目標函式形狀的方法是,根據先驗分布,假設乙個蒐集函式。在每一次使用新的取樣點來測試目標函式時,它使用這個資訊來更新目標函式的先驗分布。然後,演算法測試由後驗分布給出的,全域性最值最可能出現的位置的點。
對於貝葉斯優化,乙個主要需要注意的地方,是一旦它找到了乙個區域性最大值或最小值,它會在這個區域不斷取樣,所以它很容易陷入區域性最值。為了減輕這個問題,貝葉斯優化演算法會在勘探和開採(exploration and exploitation)中找到乙個平衡點。
勘探(exploration),就是在還未取樣的區域獲取取樣點。開採(exploitation),就是根據後驗分布,在最可能出現全域性最值的區域進行取樣。
貝葉斯優化,儘管比網格搜尋和隨機搜尋要好一些,但是它也不是魔法,所以有些東西還是要好好考慮一下。根據我們的經驗,迭代次數(也就是選取取樣點的數量),和搜尋範圍的大小的比值,十分重要。讓我們假想乙個極端的例子,來說明這一點。想象你要調整兩個超引數,每個引數的範圍是從1到1000.然後你把迭代指數設定成了2,演算法幾乎肯定會返回乙個錯誤結果,因為他還沒充分學習到目標函式的形狀。
網格搜尋與貝葉斯優化
對於超引數的搜尋,最常用的方法叫作網格搜尋 grid search 就是在可選的空間裡,把每一種可能性逐一去嘗試,也是工業界裡最常用的方法。網格搜尋相當於把每乙個組合都作乙個評估,然後找到其中最好的組合 網格搜尋的最大優點在於可以做並行化處理。所以只要有足夠多的計算資源,都不成問題。問題 乙個模型有...
貝葉斯優化
中使用的bo演算法 小結如有錯誤,歡迎交流指正。貝葉斯優化是一種十分有效的全域性優化演算法,目標是找到全域性最優解.貝葉斯優化有效地解決了序貫決策理論中經典的機器智慧型問題 根據對未知目標函式 f 獲取的資訊,找到下乙個評估位置,從而最快地達到最優解。實際上就是一種超引數優化方式。出自 貝葉斯優化方...
貝葉斯優化
比如我們已知函式y f x 那我們想知道f x 的最大值,x argmax 我們使用高斯過程gp作為 函式去 f x 根據一些已有的一些初始 xi,yi 去fit乙個gp 根據已有的高斯過程,隨機取樣m個點,對這m點可以使用上一步的gp去 每個點的mean和std,得到每個點處的高斯分布,根據acq...