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