機(jī)器之心原創(chuàng) 作者:思
在短短的半天中,可能并來不及探討最深層次的技術(shù)問題,但分享會能告訴我們在 ML 的發(fā)展路徑中,到底 AutoML 的哪些研究方向是令人振奮的、哪些工程技術(shù)是必不可少的、哪些應(yīng)用領(lǐng)域是非常有前景的。 線下分享會同時(shí)還舉行了實(shí)戰(zhàn)工作坊,數(shù)十位成功報(bào)名的體驗(yàn)者將現(xiàn)場嘗試用 Decanter AI 快速做一個(gè)強(qiáng)力的機(jī)器學(xué)習(xí)模型。 極速與準(zhǔn)確,超越 Google AutoML MoBagel 在一些 Kaggle 挑戰(zhàn)賽上公平對比了 Google AutoML 系統(tǒng),包括回歸分析、聚類分析與時(shí)間序列分析等等。簡單而言,Google AutoML 與 Decanter AI 會使用相同的數(shù)據(jù)源,并且在數(shù)據(jù)都不進(jìn)行手動處理的情況下,觀察兩個(gè)系統(tǒng)的運(yùn)行結(jié)果與時(shí)間。 「在準(zhǔn)確度上,Decanter AI 在多個(gè)業(yè)務(wù)場景平均要高 10+百分點(diǎn)」,MoBagel CEO 鐘哲民 表示準(zhǔn)確度并不是最為顯著的方面,訓(xùn)練速度會有較大的差異。他說:「在相同輸入數(shù)據(jù)下,Decanter AI 的訓(xùn)練速度是該系統(tǒng)的 110 倍左右。」 Decanter AI 與 Google AutoML 的效果對比,其中 R-Squared 為模型的確定系數(shù),它越接近 1,模型對預(yù)測值的解釋能力就越強(qiáng)。CPU-Hour 為模型的效率,擬合同樣的數(shù)據(jù),CPU-Hour 越低,系統(tǒng)的效率就越高。 根據(jù) Google 官方數(shù)據(jù),其 AutoML 系統(tǒng)背后的服務(wù)器池達(dá)到了 2208 塊 CPU,但測試結(jié)果仍然比 Decanter AI 慢了 110 倍。對于機(jī)器學(xué)習(xí)模型來說,能越早看到結(jié)果,就能更早判斷數(shù)據(jù)的好壞,從而加速模型迭代過程。 既然在效果和效率上能做到超越 Google AutoML 的性能,那么下面我們可以具體看看全流程 AutoML 以及 Decanter AI 到底有哪些令人驚艷的特性。 現(xiàn)場分享,從設(shè)計(jì)思路到體驗(yàn) 在一個(gè)多小時(shí)的分享中,我們能了解到全流程 AutoML 系統(tǒng)的設(shè)計(jì)思路及主要機(jī)制,也能了解到遺傳算法在 AutoML 中的應(yīng)用。MoBagel CEO 鐘哲民說:「我發(fā)現(xiàn)大部分 AI 進(jìn)展都以研究為導(dǎo)向,這些很厲害的算法都非常有優(yōu)勢,也非常復(fù)雜。但當(dāng)它們具有這樣的特性時(shí),要把科研算法應(yīng)用在正確的業(yè)務(wù)場景就會變的很困難。因此,我們做的自動機(jī)器學(xué)習(xí)技術(shù)希望幫助更快速與準(zhǔn)確地完成 AI 應(yīng)用?!?/p> 這是 Decanter AI 初衷之一,也是 AutoML 技術(shù)的目標(biāo)。從最開始基于開源框架做一系列的整合與優(yōu)化,重點(diǎn)關(guān)注自動化的模型搭建,到現(xiàn)在 Decanter AI 采用 Scala 語言重構(gòu)整個(gè)系統(tǒng),完善全流程的自動機(jī)器學(xué)習(xí)系統(tǒng),MoBagel 在加速模型成熟為產(chǎn)品這個(gè)方向已經(jīng)做出了很多工作。 MoBagel CEO 鐘哲民:讓機(jī)器學(xué)習(xí)普及到每一張辦公桌。 鐘哲民在分享會上首次介紹了全流程 AutoML 系統(tǒng)的設(shè)計(jì)思路與歷程,他表示最開始團(tuán)隊(duì)也是采用 Python 等開源工具與算法構(gòu)建整個(gè)系統(tǒng),當(dāng)初的想法是集成更多好用的開源工具,讓它們變得更簡單與自動化,這是第一代產(chǎn)品。 后來與軟銀等公司合作的時(shí)候,鐘哲民發(fā)現(xiàn)當(dāng)前系統(tǒng)要應(yīng)用到商業(yè),會遇到一個(gè)瓶頸,系統(tǒng)需要更快速、穩(wěn)定和準(zhǔn)確。為此,MoBagel 開始使用 Scala 語言開發(fā)自己的 AutoML 套件,并最終將整個(gè)系統(tǒng)都用 Scala 改寫了一遍。當(dāng)這些改進(jìn)與優(yōu)化累積到一定程度后,MoBagel 就形成了自己完整的一套 AutoML 庫,現(xiàn)在也正在嘗試開放它。 就是這樣一條優(yōu)化路徑,鐘哲民說:「目前 Decanter AI 應(yīng)用于銷售預(yù)測、 精準(zhǔn)營銷、人事表現(xiàn)預(yù)測等領(lǐng)域皆有許多企業(yè)實(shí)時(shí)在生產(chǎn)環(huán)境使用中,不論是有沒有數(shù)據(jù)科學(xué)背景,用戶都能靠自己的能力落地,AI 的應(yīng)用不再是無法掌控的黑盒子」 當(dāng)然,在設(shè)計(jì) Decanter AI 的過程中,也是有理論和工程兩方面的考量?!冈诠こ谭矫妫覀兿M羁斓赜?xùn)練一個(gè)模型,而在理論方面,我們希望只用最少的嘗試找到一個(gè)足夠好的模型。」,MoBagel ML 總監(jiān)郭安哲說。在工程上,除了前面采用 Scala 語言,郭安哲表示大規(guī)模并行訓(xùn)練、多模型聯(lián)合搜索、多線程數(shù)據(jù)運(yùn)算等都需要考慮。 MoBagel ML 總監(jiān)郭安哲:使用演化算法解決貝葉斯問題,突破異質(zhì)性超參數(shù)空間的限制性。 郭安哲后面重點(diǎn)介紹了 Actor 理論,它以比較正規(guī)的方式討論了并行化。該理論主要提出了四種方法:第一是資源不要共享;第二是非同步信息;第三個(gè)是 location indepentent;第四是適當(dāng)?shù)母綦x的機(jī)制。雖然它本身不是為自動機(jī)器學(xué)習(xí)設(shè)計(jì)的,但它對 AutoML 的系統(tǒng)設(shè)計(jì)非常重要。 在分享會的最后,味全的營業(yè)與財(cái)務(wù)主管李征也介紹了她的使用經(jīng)驗(yàn)。「因?yàn)槭袌鲂枨笞兓芸?,且產(chǎn)品保質(zhì)期不到一個(gè)月,味全面臨著產(chǎn)銷協(xié)調(diào)問題,過多生產(chǎn)造成庫存水位高以致資源浪費(fèi),過少生產(chǎn)意味著缺貨?!?,李征說,「我們拿了一年的數(shù)據(jù)來訓(xùn)練,并期待通過 Decanter AI 精進(jìn)產(chǎn)銷問題。我發(fā)現(xiàn)隨著特征數(shù)量的增加(影響變數(shù)的重要特征),預(yù)測準(zhǔn)確率逐步提升達(dá) 90% 以上,對產(chǎn)銷協(xié)調(diào)非常有幫助?!?/p> 李征表示,她本來是機(jī)械工程背景,但是也能快速地上手建模平臺。所以,這就是全流程自動建模的優(yōu)勢,用戶不需要統(tǒng)計(jì)或機(jī)器學(xué)習(xí)知識就能快速建模真實(shí)數(shù)據(jù)。「Decanter AI 真的能讓人人都能成為數(shù)據(jù)科學(xué)家。」 Decanter AI 全流程自動建模 對于標(biāo)準(zhǔn)的數(shù)據(jù)科學(xué)處理流程來說,從預(yù)處理到建模,再到調(diào)參,中間涉及的處理過程非常繁雜。我們要小心翼翼地處理數(shù)據(jù),從而構(gòu)建干凈的樣本;我們需要仔細(xì)選擇模型算法,從而獲得不錯(cuò)的基本效果;同時(shí),我們也要依據(jù)經(jīng)驗(yàn)調(diào)調(diào)參,從而找到能接受的超參組合。所有這些,都要求數(shù)據(jù)科學(xué)家手動完成。 但是全流程的 AutoML 不一樣,給定數(shù)據(jù),我們坐等訓(xùn)練結(jié)果就行了。中間從數(shù)據(jù)清理到模型評估都可以自動完成,數(shù)據(jù)科學(xué)家可以著重在分析與決策,不用手動建立數(shù)十個(gè)實(shí)驗(yàn)來驗(yàn)證一個(gè)簡單的假設(shè)。 MoBagel CEO 鐘哲民稱:「全流程 AutoML 本身不需要編程,全部通過可視化界面完成,Decanter AI 在底層會自動完成這一切。傳統(tǒng)的方法論要經(jīng)歷 3 個(gè)月的過程,而現(xiàn)在只要 3 天,數(shù)據(jù)科學(xué)家就可以交出以往花 3 個(gè)月才能取得的成果?!?/p>
其次對于自動特征工程,Decanter AI 會自動選擇重要的特征,并創(chuàng)建一些新的特征。不同的模型對于他的輸入分布有不同的假設(shè),例如深度學(xué)習(xí)對于其特征有線性假設(shè),所以再處理類別型特征時(shí),和 Tree-Based 模型就會不同。Decanter AI 可以針對數(shù)據(jù)集的特性,與不同模型自動建構(gòu)合適的統(tǒng)計(jì)特征,如 One hot encoding/Label encoding,也會隨機(jī)進(jìn)行一些搜尋,自動產(chǎn)生新的特征,例如使用時(shí)間相關(guān)特征,或者組合特征。 現(xiàn)在輸入數(shù)據(jù)已經(jīng)確定了,第三步就需要自動建模數(shù)據(jù)了。這一部分承擔(dān)了最為核心的運(yùn)算,也是研究最多的領(lǐng)域。Decanter AI 能自動組合包含回歸、聚類、分類、時(shí)間序列等共 60 多類機(jī)器學(xué)習(xí)算法,并使用交叉驗(yàn)證(Cross-validation),hold-out 以找到模型最合適的超參數(shù)建模方法。 「除了常規(guī)的自動建模,初版模型會不斷迭代而疊加不同的模型——Ensemble-stacking Model。例如淺層模型擅長某方面,深度模型擅長另一方面,那么我們會找到最好的權(quán)重疊加這兩種模型?!圭娬苊裾f。 確定模型與超參的選擇策略,再加上合適的損失函數(shù),模型以及模型效果就會一輪輪迭代,直到評估出一個(gè)最優(yōu)結(jié)果,自動化的建模與評估就差不多完成了。 目前很多 AutoML 系統(tǒng)都比較關(guān)注最后的自動建模,但前面的數(shù)據(jù)預(yù)處理與特征工程卻是手動建模最麻煩的過程,忽略兩者會帶來不夠友好的用戶體驗(yàn)。因此只有全流程 AutoML,才能讓絕大部分用戶從采集數(shù)據(jù)到部署模型都不會「卡殼」。 當(dāng)然,這四大自動化流程的背后還有很多底層支持。鐘哲民表示,在 Decanter AI 全自動流程的背后,怎樣自動分散計(jì)算資源、怎樣設(shè)計(jì)分布式系統(tǒng)、怎樣完成 GPU 加速、怎樣配置訓(xùn)練預(yù)選都是需要考慮的,這些工程方面的穩(wěn)定流暢是我們從超過 100 個(gè)海內(nèi)外項(xiàng)目不斷累積的成果。 Decanter AI 亮點(diǎn)新特性 Decanter AI 的目標(biāo)在于構(gòu)建快速、簡單、準(zhǔn)確、可解釋的自動機(jī)器學(xué)習(xí)平臺,它有很多引人注目的新特性。比如說首個(gè)自動化的 AutoML 時(shí)序建模及交叉驗(yàn)證方案、采用 Scala 代替 Python 作為底層語言及分布式計(jì)算、實(shí)現(xiàn) 100 倍率以上的算力加速、在處理海量數(shù)據(jù)的穩(wěn)定度遠(yuǎn)勝于 Python 集群、采用伯克利團(tuán)隊(duì)參與共同研發(fā)的 AutoML Library 及自動數(shù)據(jù)清理、自動特征工程等數(shù)據(jù)分析模塊。 這里主要介紹 Decanter AI 的時(shí)序建模、Scala 語言與 AutoML 庫,其它更多的新特性可以查閱平臺官網(wǎng) mobagel.com。 新穎的自動時(shí)序建模 對于數(shù)據(jù)分析領(lǐng)域,大部分開源算法很少針對時(shí)間序列數(shù)據(jù),即使支持時(shí)序建模,其在可用性或穩(wěn)定性上也都會存在一些問題。這很大一部分原因在于時(shí)序數(shù)據(jù),尤其是業(yè)務(wù)上的時(shí)序數(shù)據(jù)還需要很多處理過程,直接用 ARIMA 這樣的統(tǒng)計(jì)方法建模效果并不好。 針對這些問題,鐘哲民表示:「我們會結(jié)合統(tǒng)計(jì)算法與機(jī)器學(xué)習(xí)算法,并加上時(shí)序數(shù)據(jù)該有的一些特性,從而優(yōu)化自動數(shù)據(jù)建模過程。除此之外,針對前面的數(shù)據(jù)預(yù)處理過程、特征工程,Decanter AI 也會自動構(gòu)建合適的時(shí)序特征?!?/p> 時(shí)序建模示意圖。 注意,我們可不能小看了前面的時(shí)間序自動預(yù)處理和特征工程,目前對于時(shí)序特征的開源及商用軟件選擇并不多,包括 Google AutoML 工具也沒有時(shí)序預(yù)測分析。鐘哲民舉了個(gè)例子介紹什么是時(shí)序特征,假設(shè)我們要完成紙巾回購預(yù)測,即如果當(dāng)前購買了一次紙巾,那么需要預(yù)測下一次購買紙巾的時(shí)間是什么。 這里非常重要的是模型需要考慮之前數(shù)據(jù)的區(qū)段,到底是三個(gè)星期前能知道下次購買時(shí)間,還是三個(gè)月、三年,以及下次回購的時(shí)間區(qū)段以及頻次(日期時(shí)間特征、lag 特征、window 特征、趨勢特征等等)。要確定這樣的時(shí)序跨度通常都需要人工手動確認(rèn),但 Decanter AI 的自動特征工程能自動切分合適的時(shí)間區(qū)間,從而準(zhǔn)確地預(yù)測后續(xù)行為。 Scala 的強(qiáng)悍模型訓(xùn)練速度 機(jī)器學(xué)習(xí)算法絕大多數(shù)模型都是用 Python 編寫,一般開發(fā)者采用 NumPy 與 Scikit-Learn 這樣的工具包完成整個(gè)模型的搭建。以這種方式做原型及內(nèi)部項(xiàng)目是沒問題的,但要用于對外公開的業(yè)務(wù)中常常遇到穩(wěn)定度、可靠度、可用性的問題,還需要更多的工程優(yōu)化及經(jīng)驗(yàn)累積。 如果是全流程 AutoML,那么我們肯定希望做出來的模型能直接用于實(shí)際業(yè)務(wù)。換而言之,AutoML 系統(tǒng)應(yīng)該將這些工程優(yōu)化都隱藏到底層。通過采用 Scala 語言,Decanter AI 相比以 R 或 Python 語言為主的系統(tǒng),在模型訓(xùn)練速度上能有 10~100 倍以上的提升,并且在大數(shù)據(jù)計(jì)算中更加穩(wěn)定。 「在 15 年的時(shí)候,我們第一版系統(tǒng)是基于 Python 完成的,當(dāng)時(shí)遇到的問題在于,當(dāng)數(shù)據(jù)體量非常大時(shí),Python 的處理速度非常慢且不穩(wěn)定,時(shí)常報(bào)錯(cuò)。」,鐘哲民接著說,「因此我們用 Scala 重寫了整個(gè)系統(tǒng),并在算法層面、并行計(jì)算等架構(gòu)層面做了非常多的優(yōu)化,因此 Decanter AI 才有現(xiàn)在這么快的速度。」 當(dāng)然 Python 也有很多開源的底層庫,但鐘哲民表示,這些開源算法會出現(xiàn)不穩(wěn)定的情況,出錯(cuò)后要花大量的時(shí)間修正數(shù)據(jù)或開源庫的問題。因此在做實(shí)際業(yè)務(wù)時(shí),Decanter AI 的整個(gè)架構(gòu)都用 Scala 改寫,并獲得更強(qiáng)的穩(wěn)定性和數(shù)據(jù)場景的兼容性??偟膩碚f,因?yàn)殚_源庫維護(hù)成本高的特性比較適合用于內(nèi)部一次性項(xiàng)目而非產(chǎn)長期生生產(chǎn)環(huán)境,Decanter AI 的 AutoML 庫重點(diǎn)關(guān)注在追求穩(wěn)定、準(zhǔn)確、快速 這三大目標(biāo),對于實(shí)際商業(yè)場景上更加適用,畢竟沒有企業(yè)用戶想要為了新的 AI 應(yīng)用每天陷入加班除錯(cuò)的窘境。 AutoML 庫 之前從 Python 轉(zhuǎn)向 Scala 主要是架構(gòu)層面的嘗試,最近 MoBagel 從更細(xì)的角度優(yōu)化 Scala,并開放了基于 Scala 的 AutoML 庫。該軟件庫在使用上是開放的,用戶都能申請調(diào)用 API。 鐘哲民說:「我們發(fā)現(xiàn)越來越多的用戶使用 Decanter AI 做系統(tǒng)上的串接,例如串接到 ERP 系統(tǒng)或 CRM 系統(tǒng)等等。所以,如果我們以庫的方式提供一系列 API,那么整個(gè)流程的對接會更流暢一些,應(yīng)用也更加快速?!勾送?,值得注意的是,在發(fā)布新版的 AutoML 庫之后,Decanter AI 的訓(xùn)練速度可以快一倍,準(zhǔn)確率也顯著提升。 總的來說,因?yàn)殚_源庫擴(kuò)展性不夠好,Decanter AI 的 AutoML 庫重點(diǎn)關(guān)注在追求穩(wěn)定、準(zhǔn)確、快速的實(shí)際商業(yè)場景需求上更為適合。 |
|