干货!华为AutoML助力AI开发效率提升攻略
你是不是還在為掌握的AI算法少而煩惱?
你是不是還在為選擇某個處理方法而猶豫不決?
你是不是還在為調參四處尋求幫助?
你是不是因為超參優化的龜速而憤慨?
你是不是還在為持續優化某個模型而感到寸步難行?
從現在開始,有了華為NAIE AutoML?,這些都不是事啦!
為解決AI工程師在開發AI應用場景所遇到的問題,NAIE平臺落地AutoML框架(工具)來輔助大家更高效、更迅速解決AI開發問題。
Follow me,看我們如何用NAIE AutoML逐個擊破開發難題!
1.AI開發中常見的問題和挑戰
1.1 選擇什么樣的Pipeline?
一個完整的機器學習應用開發主要包括數據預處理、特征工程、模型選擇和超參優化這些關鍵模塊,每個關鍵模塊里面又有很多子模塊,如下圖所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
而每個模塊中又有很多不同的方法。針對特定的數據集,選取每個子模塊的方法并按照一定的邏輯拼接起來,就構成了一個pipeLine,運行整個pipeline即可得到一個模型。但是這樣的 pipeline 的量級大多在百萬級以上,我們該如何從這些pipeline中選擇最優的呢?
1.2 如何快速驗證AI算法的可行性?
在AI場景的預研階段,算法工程師會有很多的想法。針對每個想法,需要快速驗證可行性。你是不是因為不了解某個算法而不斷光顧各大論壇,去了解算法的調用和調參技巧?你是不是經歷過“剛學懂某個算法,其他團隊都已經落地了”這種尷尬局面。你是不是經歷過“1000次的超參迭代需要3天才能知道結果”?我們無法忍受算法入門的高門檻、調參的煉金術和迭代的漫長等待。對于一個剛入門的AI算法工程師,如何進行快速驗證AI算法的可行性是一個非常迫切的問題。
?????????????????????????????????????
1.3 如何進行持續的調優學習?
在AI的調優中,由于有限的時間和算力,我們是無法遍歷所有可能的調優方式。AI工程師通常會根據經驗設定少數幾個pipeline,根據pipeline的運行結果,再根據經驗來調整pipeline中各個模塊的方法或超參。這樣的人工調整操作費時費力,通常一天只能進行十幾次的嘗試。對于海量的搜索空間來說,基本是大海撈針。再加上專家的精力和時間有限,因此,對一個特定任務進行持續的調優學習是非常大的挑戰。
1.4 如何做到結果復現
在AI應用開發的過程中,你是不是偶爾調到一個很好的模型沾沾自喜,但是給領導演示時結果卻不能復現而尷尬萬分。為了避免這種尷尬的局面,我們需要在每次的試驗中做到結果的可重復。一般情況下,我們會設定隨機種子來確定。設定了隨機種子后,結果一定是可以復現的嗎?不是的,有些算法是多線程的,如lightgbm,同時線程的個數也會影響算法的結果。另外,交叉驗證數據的劃分、基于模型的超參選擇等均具有隨機性。如何做到結果的可復現,對AI工程師也是一個比較大的挑戰。
那么面對這些困難和挑戰,華為NAIE AutoML是如何逐個攻破的呢?
2.NAIE 平臺AutoML介紹
AutoML(Automatic Machine Learning)是一個自動化機器學習分析系統,可以讓普通的開發人員、業務人員參與機器學習建模,同時能把數據科學家從繁瑣、反復的算法調優中解放出來,降低機器學習的使用門檻,提升工作效率。究其根本AutoML能有如此功效,主要是它把機器學習中的數據預處理、特征工程、算法模型、集成學習等經驗性工作自動化,達到提升開發效率的結果。
下面我們將介紹NAIE平臺AutoML技術。
2.1?NAIE AutoML 架構
NAIE平臺AutoML采用業界經典的AutoML框架,主要包括數據預處理、特征工程、算法模型、超參優化、集成學習五個模塊,其中,超參優化模塊是對數據預處理、特征工程、算法模型構成的pipeline進行超參尋優。主要框架圖如下:
華為NAIE AutoML的設計主要考慮到以下兩個方面:
1.??? 對于普通AI開發者,可以調用NAIE AutoML來處理大部分業務場景問題;
2.??? 對于專業AI開發者,NAIE AutoML提供高可擴展的接口供用戶針對業務場景自定義相關模塊來解決相應的業務問題。
在AI應用的實戰中,需要不斷地嘗試各種策略,如增加優化的迭代次數、更換評估指標等。NAIE平臺AutoML框架提供基于Pipeline的超參優化、持續的超參優化、分布式超參優化加速、可擴展、可復現等特性,使得用戶能夠快速試驗超大的超參迭代次數、自定義針對業務問題的算法模塊、復現已有的探索結果,顯著提高用戶的開發效率。
2.1.1?? 強大的超參優化引擎
1)支持pipeline 的超參尋優
NAIE AutoML不僅支持由數據預處理、特征工程和模型所構成pipeline的超參優化,同時也支持針對模型的超參優化,僅需要把數據預處理和特征工程部分關閉即可。
2)支持分布式并行加速
業界在使用AutoML技術的過程中,由于參數空間非常大,一般地,需要將迭代次數設置為2000次或更多。單個節點,運行2000次超參,非常耗時。NAIE 平臺AutoML可以采用多節點并行技術,通過Master-Worker機制大大縮短了時間。
圖:分布式實現示意圖
3)支持超參的持續學習
在實際的場景中,我們并不清楚終止的條件對不對,因此,我們只能在測試數據上不斷的驗證。當驗證的效果隨著迭代次數顯著提升時,用戶仍然想迭代更多的次數。為了節省資源和時間,NAIE AutoML實現了增量的超參優化,且能夠做到100+50=150,即第一次運行迭代100次,基于第一次任務再增量迭代50次,最終得到的結果與單次運行迭代150次的結果保持一致。
2.1.2??? 集成學習
不同數據挖掘算法都有對應的適用條件,并非都能適用所有場景及數據,NAIE AutoML通過集成學習技術實現對多個算法進行融合得到最佳的模型,讓最終模型更加魯棒 (robust)。具體實現流程如下:
2.1.3??? 可擴展
1. 自定義算法模型
一般AutoML會針對不同的任務提供了內置的算法模型,內置算法支持指定某幾種算法來參與建模。然而幾種內置算法無法覆蓋所有的應用場景需求,因此NAIE AutoML提供了自定義算法模型能力,用戶可以根據框架規范開發相應的接口來實現自定義算法模型。
2.?自定義評估指標
AutoML針對不同的任務,提供了內置的評估指標,如對于分類問題,提供precision、recall、f1等評估指標。但是很多業務場景問題,往往這些評估指標是不夠的,如設備故障檢測場景中,業務指標是滿足誤報率(False Alarm Rate) <= 0.1%情況下, 查全率(Fault Detection Rate) 要盡量高。類似設備故障檢測這樣的場景,需要根據業務問題來設自定義置評估指標,NAIE AutoML提供自定義評估指標接口。
3. 自定義交叉驗證
AutoML中內置了交叉驗證,但內置交叉驗證無法覆蓋所有用戶的需求。因此,NAIE AutoML也提供了自定義交叉驗證接口。
2.1.4??? 可復現
在AutoML中,超參的選取、代理模型的生成、模型的訓練等均受到隨機種子的影響。NAIE AutoML將所有涉及隨機的模塊,采用統一的隨機種子參數來控制。除此之外,當設定隨機種子時,我們會自動把影響算法運行結果的線程數設置為1。這樣便使得NAIE AutoML試驗具備可重復性,即相同的AutoML配置,在不同的時間點運行,結果是相同的。
下面我們以“設備故障檢測場景”為案例給大家介紹NAIE AutoML的具體應用效果。
3.NAIE AutoML在設備故障檢測場景中的應用
3.1 業務場景
網絡設備故障經常發生,且在故障發生后才感知,極大影響運維效率和成本。傳統的方法是當故障出現后,需要投入大量人力和物力去定位故障、恢復業務。
如何使用AI技術來提前預測故障發生的時間點,提前采取措施?針對這一業務問題,業務部門提出以下業務目標:在FAR<=0.1% 下,FDR盡量大,其中,
FDR=False Detection Rate,查全率,即故障實際發生,模型預測為故障發生;
FAR=Fault Alarm Rate,誤報率,即故障實際未發生,而模型預測為故障發生。
簡而言之就是,在保證低誤報率的情形下,盡量不要漏掉故障。
3.2 業務目標轉化
對于設備故障檢測應用,AI算法里面是一個二分類問題,把故障情況看作是正樣本,把其他情況看作是負樣本,則業務指標FDR與FAR對應為二分類中ROC曲線中的 True Positive Rate與False Positive Rate,見下圖。
圖:業務目標FDR與FAR與ROC曲線的對應關系
根據上圖可以得到業務目標的表達式,代碼如下:
from sklearn.metrics import roc_curve def fdr_score(y_true, y_proba): ??? ? ? """ ??? ? ? 對模型預測概率與真實的標簽進行評分 ??? ? ? FAR、FDR分別為ROC圖中的fpr、tpr ??? ? ? Parameters ??? ? ? __________ ??? ? ? y_true : numpy.array ??????? ? ? 測試數據的真實標簽,值為1或0 ??? ? ? y_proba : numpy.array ??????? ? ? 模型對類別1的預測概率,值為0-1之間的浮點數 ??? ? ? Return ??? ? ? _______ ??? ? ? max_tpr: float ??????? ? ? 當誤報率FAR<0.1%時,檢出率FDR的最大值??????? ??? ? ? """ ??? ? ? fpr, tpr, _ = roc_curve(y_true, y_proba) ??? ? ? max_tpr = tpr[np.where(fpr < 0.001)][-1] ??? ? ? return max_tpr |
3.3 基于NAIE AutoML的具體應用
3.3.1??? 設備故障檢測場景的特殊性
設備故障檢測場景的業務目標跟分類問題中的 precision、recall、f1等分類評估指標不同,是根據業務問題得到的。為了保證超參優化的目標與業務目標是一致的,可以使用NAIE AutoML提供的注冊自定義評估指標來實現。
3.3.2??? 極簡代碼調用
調用步驟:
Step1:初始化NAIE AutoML類
Step2:注冊自定義評估指標 fdr_score
Step3:? 進行訓練
代碼如下:
from naie.automl import VegaAutoML # Step1:初始化VegaAutoML automl = ? ? VegaAutoML(model_type="classifier", ???????????????????? ? ? target_column="failure", ???????????????????? ? ? ignored_columns=["disk_sn"], ???????????????????? ? ? train_data_reference=get_data_reference(dataset="data", ? ? dataset_entity="train"), ???????????????????? ? ? optimization_method="SMAC", ???????????????????? ? ? included_models=['lightgbm'], ???????????????????? n_folds=5, ???????????????????? ? ? metrics="fdr", ???????????????????? workers=5, ???????????????????? max_trial_number=1000, ???????????????????? random_state=1) # Step2:注冊自定義評估指標(fdr_score) automl.register_metric_evaluator("fdr", ? ? fdr_score) # Step3: 開始訓練 automl.train() |
參數簡要說明:
1.??? optimization_method:超參優化方法,當前支持網格搜索、隨機搜索和SMAC優化算法
2.??? included_models:默認為None, 表示搜索所有內置的模型。通過該配置參數,實現只對部分模型進行搜索。
3.??? metrics:評估指標,可以是內置的評估指標,也可以是自定義的評估指標;
4.??? workers: 并行數,通過該配置參數,實現分布式加速;
5.??? random_state: 隨機種子,指定該配置,可以實現AutoML過程的可重復性。
3.3.3??? 效果
經過簡單的幾行代碼即可實現在設備故障檢測場景上的建模。試驗展示,經過1000次的迭代即可達到專家經驗的水平。
工欲善其事,必先利其器。AutoML是AI初學者和專業開發人員的必備武器。NAIE平臺已將AutoML為大家備好,歡迎大家來NAIE官網體驗!
https://www.huaweicloud.com/HDC.Cloud.html往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(pdf更新到25集)本站qq群1003271085,加入微信群請回復“加群”獲取一折本站知識星球優惠券,請回復“知識星球”喜歡文章,點個在看
總結
以上是生活随笔為你收集整理的干货!华为AutoML助力AI开发效率提升攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 干货:TensorFlow1.2~2.1
- 下一篇: 问答机器人2.0!文档问答产品科普