logo
Loading...

輕鬆完成機器學習模型訓練!讓 AutoML 為你加速開發流程! - 投影片 - 【教材專區】輕鬆完成機器學習模型訓練!讓 AutoML 為你加速開發流程! - Cupoy

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

講師簡介 講師:蔡易霖 國立臺南大學 資訊工程學系碩士 台灣人工智慧學校 南部分校工程師 簡介: •熱衷於技術研究,也有經營 Blog 與 YouTube 頻道分享實作教學 •研究領域包括機器人智慧型代理人、模糊專家系統與機器學習、腦機介面與情緒評估、深度學習 •擅於網頁前後端並整合機器學習 那我先簡單自我介紹一下,我的名子是高浩銓,大家可以叫我Howard就好,現在在台灣樂天擔任資料分析的實習生,主要是處理文字相關的project,之前的母校是國立中央大學電機系碩士由於待在自然語言處理實驗室,慢慢地有接觸一些自然語言相關的知識跟任務。 下面論文的部分是我的碩士論文,還有在學時期參加的研討會 ,有發表一些論文,是共同作者的部分。 AutoML的動機 完整的機器學習流程大致分成八個步驟: 然而模型訓練與超參數調整僅扮演其中的一環,選擇一個好的模型是件重要的事情 Python 熱門的 AutoML 開源套件 •AutoGluon •Auto-sklearn •FLAML •H2O AutoML •LightAutoML •Pycaret •MLJAR •TPOT •MLBox •Auto-PyTorch •AutoKeras •talos 近年來 No Code 無程式碼開發平台形成一股潮流,AI 再也不是需要資訊背景的人才能做的事 AutoML 扮演的角色 許多企業開發了各種需求的 AutoML 平台,如雨後春雨般的出現: •Google:Cloud AutoML •Microsoft:Azure Machine Learning •Amazon:SageMaker Autopilot •Landing AI:LandingLens •Chimes AI:Tukey AutoML 能幫助多少事情 •典型的機器學習流程是一個迭代的循環週期,從定義問題、資料收集與處理、模型設計到最終模型部署,每個步驟極為重要且缺一不可。 DevOps •DevOps ( Development 和 Operations 的組合詞 ) 是一種重視「軟體開發人員 (Dev)」和「IT運維技術人員 (Ops)」之間溝通合作的文化、運動或慣例。 MLOps = ML + DEV + OPS Google 發展 AI 智慧醫療,辨識糖尿病視網膜病變,反拖累醫療流程 1.護士每小時掃描數十名患者,並經常在光線不足的情況下拍照,所以超過 1/5 照片因為不合標準被拒。 2.照片被踢出系統的患者,必須要再預約看診,但如果他們無法請假或沒有車,就會非常不方便。這讓護理師感到沮喪無力。 3.好不容易拍到合格的照片,由於系統必須將照片上傳到雲端處理,但碰到診所的網際網路連線有問題,造成篩檢作業延遲。 Ref: https://ai-blog.flow.tw/google-mit-ai-failure 但是我們可以發現訓練一個機器學習模型,在 MLOps 的週期中僅扮演小小的一塊角色 借助 AutoML 尋找最佳模型 透過 AutoML 自動化的訓練找到一個滿意的模型。 超參數調參方法 模型挑選和超參數調整已經有比較成熟的方法可以協助我們有效的搜尋: •Grid Search 網格搜索/窮舉搜索 •Random Search 隨機搜索 •Bayesian Optimization 貝葉斯優化 Grid Search (網格搜索) •又稱窮舉搜索。它的搜索方式是在所有可能的參數中,透過排列組合嘗試每一種可能性。 •並將表現最好的參數最為最終的超參數搜尋結果。 當有多個候選超參數時,搜索的時間會增加,花費的資源也變大。 Random Search (隨機搜索)  •與網格搜索的差別在於使用者可以將欲搜尋的超參數設定一個期望的範圍。並找出所有隨機組合中表現最好的一組超參數。 是否能有效地隨機尋找最佳參數呢? Bayesian Optimization (貝葉斯優化)  •透過代理函數給定一組特定的候選超參數,快速估計實際模型的錯誤率。 Auto-sklearn 就是一個透過貝葉斯優化來尋找最佳超參數的一個工具。 機器學習金手指 - Auto-sklearn 今日學習目標: •了解 Auto-sklearn 運作原理 •Meta Learning •Bayesian Optimization •Build Ensemble •實作 Auto-sklearn •採用鳶尾花朵資料集訓練,並比較兩種不同版本的 Auto-sklearn。 •使用 pipelineprofiler 視覺化 AutoML 模型。 Auto-sklearn 背景 •採用元學習 (Meta Learning) 選擇模型和超參數優化方法作為搜尋最佳模型的重點。 •此 AutoML 套件主要是搜尋所有 Sklearn 機器學習演算法以模型的超參數,並使用貝葉斯優化與自動整合在有限時間內搜尋最佳模型。 ➢第一版:Feurer, Matthias et al. “Efficient and Robust Automated Machine Learning,” NIPS 2015. ➢第二版:Feurer, Matthias et al. “Auto-Sklearn 2.0: Hands-free AutoML via Meta-Learning,” arXiv, 2020. AutoML 視為 CASH 問題 •演算法選擇和超參數優化 (Combined Algorithm Selection and Hyperparameter, CASH) 的組合最佳化問題。 •AutoML 領域當中將會面臨兩個問題: 1.沒有任何的演算法模型是可以保證在所有的資料集中表現最好 2.許多的機器學習模型往往依賴於超參數 Auto-sklearn 架構 Auto-sklearn 有三個核心: •Meta Learning ➜ 模仿機器學習專家 •Bayesian Optimization ➜ 有效率地挑選模型超參數 •Build Ensemble ➜ 模型堆疊 元學習:具備自學能力,能夠充分利用過去的經驗來指導未來的任務。 ❝學習「學習(訓練)」過程❞ Meta Learning 元學習的目的是要找出一個不錯的超參數做初始化,並提供貝葉斯優化有個明確的方向。 •140 個資料集 •38 個元特徵 公開機器學習資料集 元特徵:偏度、峰度、特徵數量、類別數量......等,共 38 個。 Bayesian Optimization 貝葉斯優化會尋找該資料集中最合適的資料前處理、特徵前處理與機器學習模型。 共有 110 個超參數必須透過貝葉斯優化來尋找最適合的組合。 Data Pre-processors 在資料前處理部分 Auto-sklearn 提供了四種方法。包含特徵縮放、填補缺失值、類別特徵進行 one-hot encoding 與處理類別資料不平衡。 Feature Pre-processors 在特徵前處理部分 Auto-sklearn 提供了 12 種特徵處理的技巧,然而在眾多方法中僅會挑選其中一種。 Ensemble learning (整體學習) 又稱集成學習、整合學習,目的是希望結合眾多的模型產生一個更強大的模型。 1. Bagging: •Random forest 2. Boosting: •AdaBoost •Gradient Boosting •XGBoost 3. Stacking Bagging 自助重抽總合法 •Bagging 是 Bootstrap aggregating 的縮寫 •把訓練資料重新採樣產生不同組的訓練資料 •最常見的例子為隨機森林 (Random forest) Boosting 提升法 •Boosting 會根據每一筆訓練資料的難或簡單給予不同的權重 •對於難的資料我們加強他的權重再訓練一個新的分類器或回歸器 •最常見的例子為 AdaBoost、Gradient Boosting、XGboost Stacking 堆疊法 •產生出 m 個不同演算法的 base learners 模型 •base learner 模型彼此間並無互相關連 •把 m 個 base learner 的輸出當成新的模型的輸入, 另外再訓練一個模型 Build Ensemble 在 Auto-sklearn 訓練階段會產生許多表現優良的模型,最終透過貪婪法的 Bagging Ensemble Selection 方法來合併多個模型組合成一個更強更大的模型,並提高預測的準確性。 實作 Auto-sklearn •採用鳶尾花朵資料集訓練,並比較兩種不同版本的 Auto-sklearn •使用 pipelineprofiler 視覺化 AutoML 模型 搭建第一個 AutoML 模型 Example:鳶尾花朵 分類器 鳶尾花朵(iris)資料集一覽 •總共有 4 個輸入 1 個輸出 •資料特徵描述如下表: 1. 載入資料集 2. 切割訓練集與測試集 安裝 Auto-sklearn 目前 Auto-sklearn 僅支援 Lunux 系統。若沒有此系統的人可以透過Colab 體驗。 Auto-sklearn 使用方法 Parameters: •time_left_for_this_task:搜尋時間(秒),預設3600秒(6分鐘)。 •per_run_time_limit:每個模型訓練的上限時間,預設為time_left_for_this_task的1/10 •ensemble_size:模型輸出數量,預設50。 •resampling_strategy:資料採樣方式。為了避免過擬合,可以採用交叉驗證機制。預設方法為最基本的 holdout。 V1 訓練結果 Testing Data(Ground True) Testing Data(Predict) V2 訓練結果 Testing Data(Ground True) Testing Data(Predict) 查看每個模型的權重 輸出模型 •如果想將 AutoML 的模型儲存起來,可以透過 joblib 將模型打包匯出。 視覺化 AutoML 模型 感謝聆聽 •YouTube 頻道 10程式中 •Google 搜尋 “全民瘋AI系列” Q & A