超參數搜索——網格搜索和隨機搜索


我們在搜索超參數的時候,如果超參數個數較少(三四個或者更少),那么我們可以采用網格搜素,一種窮盡式的搜索方法。

但是當超參數個數比較多的時候,我們仍然采用網格搜索,那么搜索所需時間將會指數級上升。

比如我們有四個超參數,每個范圍都是[10,100],那么我們所需的搜索次數是10*10*10*10=10^4。

如果再增加一個超參數,那么所需的搜索次數是10^5,搜索時間指數級上升。

 

所以很多很多個超參數的情況,假如我們仍然采用網格搜索,那么……gg,算到天荒地老就不一定有結果。

所以出現了這樣的做法,網格搜索,但是網格取稀疏一點,比如上面例子中的[10,100],我們就去10,30,50,70,90這幾個數,降低一下搜索次數。

這樣變快了一點,但是有可能找到的超參數不是全局最小。

 

所以又有人提出了隨機搜索的方法,隨機在超參數空間中搜索幾十幾百個點,其中就有可能會有比較小的值。

這種做法比上面稀疏化網格的做法快,而且實驗證明,隨機搜索法結果比稀疏化網格法稍好。

 

筆者剛剛在尋找資料的時候,還看到了一種做法,批量化隨機搜索法。具體做法如下:

假設我們要找25個點,那么我們把這25個分成5個批次,每個批次5個點。

我們做第一個批次的時候,假設超參數范圍是[0,100],我們有1個超參數(容易理解),那么我們把這個范圍切分為[0,20],[20,40],[40,60],[60,80],[80,100]。

也就是把范圍平均切分為5份,我們在每一份之中隨機找到一個點,最終可以找到5個點,我們再找到里面的最小點。

接着,在第二個批次之中,我們在找到的最小點附近,再找5個隨機點,在這5個隨機點之中得到最小點。

接着,在第三個批次之中,重復同樣的操作。

這樣可以保證我們找到一個局部最小值點,結果可能會比隨機搜索稍好一點。

當然,如果隨機搜索直接得到更好的局部最小值,甚至全局最小值,那么……只能說你的運氣爆表了。

這種批次隨機尋找的方法,基本上可以說優於稀疏化網格法,但不一定優於隨機搜索法。

 

參考資料:

1、筆者剛剛提到的批次隨機搜索法的來源:https://yq.aliyun.com/articles/68266

2、知乎關於這部分知識的一些問答:https://www.zhihu.com/question/57394983


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM