01.23 召喚超參調優開源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模塊於一身

整理 | 凱隱

出品 | AI科技大本營(

ID:rgznai100)

【導讀】Optuna是一款為機器學習任務設計的自動超參數優化軟件框架,是一款按運行定義(define-by-run) 原則設計的優化軟件,允許用戶動態地調整搜索空間,在同類軟件中尤屬首創,是下一代超參調優框架的代表。接下來,帶大家瞭解 Optuna——新一代超參調優框架。

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

超參調優簡介

在訓練神經網絡時,模型結構尺度,例如深度,寬度,每層分辨率等,都會影響到模型的最終性能,從這些參數組合中找到最適合當前任務的參數,就是常說的超參調優。

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

傳統的超參調優方法是經驗性的手動調整參數,並記錄實驗結果,然後通過人工分析對比確定下一步的參數調整方向,這種方法吃力且效率低,還容易出錯。Optuna的出現大大降低了超參調優的難度,下面讓我們來看看Pptuna是如何工作的吧!

Optuna工作方式和特點1、按運行定義

首先通過 pip 命令安裝 Optuna:

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

以層數搜索為例,我們需要優化的是一個用於分類的多層感知器的層數以及每一層的神經元個數:

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

將運行代碼(5-11行)重新嵌入到試驗(trial)函數中,試驗函數通過單次執行代碼來得到一組參數組合下的結果:

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

然後添加一個關於層數的 for 循環:

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

以及每層中神經元個數的 for 循環:

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

最後定義一個 study 對象,將trial訓練結果作為優化目標,便可以通過多次實驗找出最優超參數組合,這裡設置的實驗次數(n_trials=100)是 100 次:

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

完成以上步驟,便可以運行程序,讓optuna來自動完成搜索過程,因此 Optuan 是一個專門為自動化設計的框架。此外我們可以看到代碼編寫是非常簡單的,且非常靈活,可以隨時調整搜索空間和次數上限,這也體現了Optuna按運行定義的特點。

2、並行分佈式計算

上面的例子中我們使用的只是一個很簡單的示例網絡,但大部分情況下網絡和數據集都要比示例大得多,此時 Optuna 的另一個特點就體現出來了:

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

在上述代碼中,我們將搜索過程做了並行化處理,這樣實際運行時效果就如同下圖:

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

並行化處理能大幅減低調優所需時間,從而加速優化過程。此外 Optuna 還具有剪枝優化功能,即提前結束並行化實驗中的低質量參數實驗,從而提高效率。

3、支持多類型任務和框架

Optuna 不僅可以用於實驗調參,也可以輕鬆地部署到生產作業以及數據分析任務中:

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

Optuna 的環境依賴非常簡單,並且能獨立地完成任務:

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

此外,Optuna 還支持許多其他深度學習框架和模塊,例如 Tensorflow,Keras,PyTorch,MXNet等。

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

使用 Optuna

Optuna可以通過 pip 或 conda 指令進行安裝,目前支持 python3.5 以上的版本,更多相關資料詳見官網,官方文檔,以及 Github 主頁。

召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身

https://optuna.org/

https://optuna.readthedocs.io/en/stable/

https://github.com/optuna/optuna

(*本文為AI科技大本營翻譯文章,轉載請微信聯繫 1092722531)


分享到:


相關文章: