logo
Loading...

自動調參神器 Optuna - 投影片 - 自動調參神器 Optuna - Cupoy

講師簡介 講師:蔡易霖 國立臺南大學 資訊工程學系碩士 台灣人工智慧學校 南部分校工程師 簡介: ・熱衷於技術研究,也有經營 Blog 與 YouTube 頻道分享實作教學 ・研究領域包括機器人智...

講師簡介 講師:蔡易霖 國立臺南大學 資訊工程學系碩士 台灣人工智慧學校 南部分校工程師 簡介: ・熱衷於技術研究,也有經營 Blog 與 YouTube 頻道分享實作教學 ・研究領域包括機器人智慧型代理人、模糊專家系統與機器學習、腦機介面與情緒評估、深度學習 ・擅於網頁前後端並整合機器學習 目錄 今日學習目標 ・Optuna 如何採樣參數? ・實作 Optuna 搜尋最佳超參數 ・以 XGBoost 迴歸模型於房價預測為例 ・Optuna 視覺化分析搜尋結果 何謂超參數? 以神經網路來解釋: ・參數 (Parameters) ・參數是訓練模型時學習出的,譬如如權重w與偏差值b。  ・超參數 (Hyperparameters) ・超參數則是則是由人為給定,例如神經網路的層數、損失函數、卷積核的大小、學習率等等。 機器學習模型超參數 (XGBoost 為例) ・n_estimators: 總共迭代的次數,即決策樹的個數。預設值為100。 ・max_depth: 樹的最大深度,預設值為6。 ・booster: gbtree 樹模型(預設) / gbliner 線性模型 ・learning_rate: 學習速率,預設0.3。 ・gamma: 懲罰項係數,指定節點分裂所需的最小損失函數下降值。 整個專案過程中超參數隨處可見 而我們要如何決定超參數的數值呢? 如何決定超參數的數值? 最常見的方法就是在網路上參考其他人的模型架構,而如果要對超參數做微調時,因為超參數眾多,往往也是藉由實驗的方式進行設計。 ・經驗法則 ・逐一的試錯 (Trial and Error) ・運氣與直覺 情境:手動調參 情境:自動調參 交叉驗證 在訓練模型時要將資料分為 training、validation 與 test 三組,藉由training set 進行模型訓練,並在 validation set上 驗證所設定的超參數,接著當我們選出最好的模型後,再測試到 testing set 上,可以得到可信度較高的數據。 關於 Optuna Optuna 是由日本的深度學習公司 Preferred Networks 發布了其超參數優化框架。 Optuna 是一個專為機器學習設計的自動超參數優化的框架。其最突出的特點是: ・人性化的定義搜索空間。 ・支援大多數 ML 與 DL 的學習套件。例如: Sklearn、PyTorch、TensorFlow、 XGBoost、LightGBM、 CatBoost...等。 ・對對搜索結果提供可解釋性(XAI)。 ・儲存歷史最佳的參數實現平行優化工作。 ・決定並終止不滿足預定義條件的試驗。 安裝 Optuna 安裝方式很簡單,開啟終端機輸入以下指令即可完成安裝: Optuna 簡單範例 這裡我們設定一個簡單的目標函式 (x1+2)2+(x2−4)2。 我們知道當這個式子 x1=-2, x2=4 時將會有極小值 0。 用這個簡單的例子透過 Optuna 找出這個函式中極小值所對應的 x1 與 x2 Optimize objective function 由上述的簡單例子我們可以知道建立一個 Optuna 最佳化流程僅需要三步驟: 1.建立 objective 函式與設定 trial,並回傳 loss。  2.建立 create_study( ) 物件。  3.使用 optimize( ) 執行搜尋。 Optuna 使用技巧 在 Optuna 中,有兩個主要術語,即: 1. Study:整個優化過程基於一個目標函數,即研究需要一個可以優化的函數。  2.  Trial:優化函數的單次執行稱為trial。因此,這項研究(study)是一系列試驗(trial)。 超參數調參方法 模型挑選和超參數調整已經有比較成熟的方法可以協助我們有效的搜尋 Sampling Strategy ・Grid Search 網格搜索/窮舉搜索 ・Random Search 隨機搜索 Grid Search 浪費時間在搜索不重要的 Hyperparameter。而 Random Search 比較不會。 Pruning Strategy 透過代理函數給定一組特定的候選超參數,快速估計實際模型的錯誤率。 ・Bayesian Optimization 貝葉斯優化 Random Search vs. Optuna 實作 Optuna 搜尋最佳超參數 •以 XGBoost 迴歸模型於房價預測為例 •Optuna 視覺化分析搜尋結果 使用 Optuna 優化超參數 Example:波士頓房價預測 範例程式:https://reurl.cc/xEmvGL Example:波士頓房價預測 預處理資料集 今日範例已經事先預處理 Optuna 如何採樣參數? Model based ・TPE: bayesian optimization based on kernel fitting ・GP: bayesian optimization based on Gaussian processes ・CMA-ES: meta-heuristics algorithm for continuous space Other Methods ・Random Search ・Grid Search ・User-defined algorithm 傳說中的超參數中的超參數,該如何挑選合適的 Sampler ?  挑選合適的 Sampler Pruning Strategy lStops unpromising trials based on learning curves Optimization history plot Hyperparameter importance Test evaluation sklearn 新功能 Successive Halving 有效率的自動調參 HalvingGridSearchCV HalvingRandomSearchCV Histogram-Based Gradient Boosting HistGradientBoostingRegressor   HistGradientBoostingClassifier   Semi-supervised Learning SelfTrainingClassifier feature selection方法 SequentialFeatureSelector Apr 29, 2021 Release Highlights for scikit-learn 0.24.2 Oct 25, 2021 Release Highlights for scikit-learn 1.0.1 Twice as fast as without pruning Q1. 老師如何利用 automl 解決機器學習有大量離散型參數的問題?  Q2. 參數版本控管方式 1.每次訓練結果儲存起來/將超參數彙整 JSON 格式。 2.採用 MySQL 儲存歷史最佳的參數實現平行優化工作。 Optuna 還支援像是 SQLite 等資料庫可以儲存歷史搜尋結果快速的達到最佳搜尋能力。 Q3. 用 AutoML 後,是不是就不用調參,還是最後需要再做微調? 可以稍做微調,或是拿所有的訓練資料再做一次最後訓練 Multi-Fidelity Search l用不同量的資料集來尋找超參數會有類似的結果。 使用 SVM  訓練 MNIST,由左至右使用越來越多資料來訓練,顏色越藍代表performance 越好。 Klein et al. , '' Fast Bayesian Optimization of Machine Learning Hyperparameters on Large Datasets, ’’ AISTATS 2017 Q4. AutoML 是自動調整超參數的方法嗎?! 大多數 AutoML 採用貝葉斯優化演算法來尋找超參數 三大 AutoML 平台比較 train/val :11540 張圖片,包含 27450 個已被標註的 ROI annotated objects 4大類:vehicle,household,animal,person 20小類:car, bus,…, chair,…, cat, bird,…, person Google vs. Amazon vs. Microsoft AI 服務比較 ・Azure ML studio擁有最全面的服務 ・Google ML Engine 和 Amazon SageMaker 對於深度神經網絡資源較廣。 延伸閱讀: 機器學習該選誰?Google vs Amazon vs Microsoft AI 比較大全 (一)機器學習文字分析/翻譯 API – Google vs Amazon vs Microsoft AI 比較大全 (三)機器學習圖片影片辨識 API – Google vs Amazon vs Microsoft AI 比較大全 (四)IBM Watson 及其他 AI 解決方案 – Google vs Amazon vs Microsoft AI 比較大全 (五) Q & A