天天看點

常見超參數調優工具

1.Skopt

https://scikit-optimize.github.io/

是一個超參數優化庫,包括随機搜尋、貝葉斯搜尋、決策森林和梯度提升樹。這個庫包含一些理論成熟且可靠的優化方法,但是這些模型在小型搜尋空間和良好的初始估計下效果最好。

2.Hyperopt

https://github.com/hyperopt/hyperopt-sklearn

是一個超參數優化庫,針對具有一定條件或限制的搜尋空間進行調優,其中包括随機搜尋和Tree Parzen Estimators(貝葉斯優化的變體)等算法。它使用MongoDb作為存儲超參數組合結果的中心結構,可實作多台電腦的并行計算。這個庫是用hyperopt-sklearn和hyperas實作的,這兩個用于模型選擇和優化的函數庫分别建立在scikit-learn和keras的基礎上。

3.Simple(x)

https://github.com/chrisstroemel/Simple

一個優化庫,可作為貝葉斯優化的替代方法。Simple(x)和貝葉斯搜尋一樣,試圖以盡可能少的樣本進行優化,但也将計算複雜度從n³降低到log(n),這對大型搜尋空間非常有用。這個庫使用單形(n維三角形),而不是超立方體(n維立方體),來模拟搜尋空間,這樣做可以避開貝葉斯優化中具有高計算成本的高斯過程。

4.Ray.tune

https://github.com/ray-project/ray/tree/master/python/ray/tune

是一個超參數優化庫,主要适用于深度學習和強化學習模型。它結合了許多先進算法,如Hyperband算法(最低限度地訓練模型來确定超參數的影響)、基于群體的訓練算法(Population Based Training,在共享超參數下同時訓練和優化一系列網絡)、Hyperopt方法和中值停止規則(如果模型性能低于中等性能則停止訓練)。這些都運作在Ray分布式計算平台上,這讓它具有很強的擴充性。

5.Chocolate

https://github.com/AIworx-Labs/chocolate

是一個分布式超參數優化庫(支援計算機叢集的并行運算且無需中央主機),它使用通用資料庫來聯合執行各個任務。它還支援網格搜尋、随機搜尋、準随機搜尋、貝葉斯搜尋和自适應協方差矩陣進化政策。它的優勢展現在它支援受限制的搜尋空間和多損失函數優化(多目标優化)。

6.GpFlowOpt

https://github.com/GPflow/GPflowOpt

一個基于GpFlow庫的高斯過程優化器,可使用TensorFlow在GPU上運作高斯過程任務。你如果要用到貝葉斯優化且有可用的GPU計算資源,那GpFlowOpt庫應該是理想之選。

7.FAR-HO

https://github.com/lucfra/FAR-HO

運作在TensorFlow上,包含一系列基于梯度的優化器,包括Reverse-HG和Forward-HG。這個庫旨在建構TensorFlow中基于梯度的超參數優化器的通路,允許在GPU或其他張量優化計算環境中進行深度學習模型的訓練和超參數優化。

8.Xcessiv

https://github.com/reiinakano/xcessiv

支援大規模模型開發、執行和內建。它的優勢在于能夠在單個GUI界面中管理多個機器學習模型的訓練、執行和評估。它具有多個內建工具來組合這些模型,以實作最佳性能。它包括一個貝葉斯搜尋參數優化器,這個優化器支援進階别并行計算,還支援與TPOT庫的內建。

9.HORD

https://github.com/ilija139/HORD

一個用于超參數優化的獨立算法,它能為需要優化的黑盒模型生成一個代理函數,并用它來生成最接近理想狀态的超參數組合,以減少對整個模型的評估。與Tree Parzen Estimators、SMAC和高斯過程方法相比,它始終具有更高的一緻性和更低的錯誤率,而且這個方法特别适用于極高維資料分析。

10.ENAS-pytorch

https://github.com/carpedm20/ENAS-pytorch

可在pytorch中實作高效的深度學習結構搜尋。它使用參數共享來建構更高效的網絡,使其适用于深度學習結構搜尋。

繼續閱讀