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