0
雷鋒網(wǎng)按:近日,全球最頂級(jí)大數(shù)據(jù)會(huì)議Strata Data Conference在京召開(kāi)。Strata大會(huì)被《福布斯》雜志譽(yù)為“大數(shù)據(jù)運(yùn)動(dòng)的里程碑”,吸引了大數(shù)據(jù)、人工智能領(lǐng)域最具影響力的數(shù)據(jù)科學(xué)家與架構(gòu)師參會(huì)。第四范式聯(lián)合創(chuàng)始人、首席研究科學(xué)家陳雨強(qiáng)受邀出席,并以“人工智能工業(yè)應(yīng)用痛點(diǎn)及解決思路”為題,發(fā)表主題演講。
陳雨強(qiáng)是世界級(jí)深度學(xué)習(xí)、遷移學(xué)習(xí)專家,曾在NIPS、AAAI、ACL、SIGKDD等頂會(huì)發(fā)表論文,并獲 APWeb2010 Best Paper Award,KDD Cup 2011名列第三,其學(xué)術(shù)工作被全球著名科技雜志MIT Technology Review報(bào)道。同時(shí),陳雨強(qiáng)也是AI工業(yè)應(yīng)用領(lǐng)軍人物,在百度鳳巢任職期間主持了世界首個(gè)商用的深度學(xué)習(xí)系統(tǒng)、在今日頭條期間主持了全新的信息流推薦與廣告系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn),目前擔(dān)任第四范式首席研究科學(xué)家,帶領(lǐng)團(tuán)隊(duì)研究、轉(zhuǎn)化最領(lǐng)先的機(jī)器學(xué)習(xí)技術(shù),著力打造人工智能平臺(tái)級(jí)產(chǎn)品”先知“。
以下內(nèi)容根據(jù)陳雨強(qiáng)主題演講編寫,略有刪減。
大家好,我是來(lái)自于第四范式的陳雨強(qiáng),目前主要負(fù)責(zé)人工智能算法研發(fā)及應(yīng)用的相關(guān)工作。非常高興與大家分享人工智能在工業(yè)界應(yīng)用的一些痛點(diǎn)、以及相應(yīng)的解決思路。
人工智能是一個(gè)非常炙手可熱的名詞,且已經(jīng)成功應(yīng)用在語(yǔ)音、圖像等諸多領(lǐng)域。但是,現(xiàn)在人工智能有沒(méi)有達(dá)到可以簡(jiǎn)單落地的狀態(tài)呢?工業(yè)界的人工智能需要什么技術(shù)呢?帶著這些問(wèn)題開(kāi)始我們的思考。
首先,我們先探討一下工業(yè)界人工智能需要一個(gè)什么樣的系統(tǒng)?人工智能的興起是由于數(shù)據(jù)量變大、性能提升以及并行計(jì)算技術(shù)發(fā)展共同產(chǎn)生的結(jié)果。所以,工業(yè)界的問(wèn)題都是非常復(fù)雜的。因此,我們需要一個(gè)可擴(kuò)展系統(tǒng),不僅在吞吐與計(jì)算能力上可擴(kuò)展,還需要隨著數(shù)據(jù)量與用戶的增多在智能水平上可擴(kuò)展。怎么實(shí)現(xiàn)一個(gè)可擴(kuò)展系統(tǒng)呢?其實(shí)很重要的一點(diǎn)是工業(yè)界需要高VC維的模型,去解決智能可擴(kuò)展性的問(wèn)題。怎么獲得一個(gè)高VC維的模型呢?大家都知道,機(jī)器學(xué)習(xí)=數(shù)據(jù)+特征+模型。如果數(shù)據(jù)在給定的情況下,我們就需要在特征和模型兩個(gè)方面進(jìn)行優(yōu)化。
特征共分兩種,一種叫宏觀特征,比方說(shuō)年齡、收入,或是買過(guò)多少本書,看過(guò)多少部電影。另外一種是微觀特征,指的是比擬細(xì)粒度的特征,你具體看過(guò)哪幾本書,或者具體看過(guò)哪幾部電影。每一部電影,每一本書,每一個(gè)人,都是不同的特征。書有幾百萬(wàn)本,電影有幾百萬(wàn)部,所以這樣的特征量非常大。
模型可分為兩類,一個(gè)是簡(jiǎn)單模型,比如說(shuō)線性模型。還有一種是復(fù)雜模型,比如非線性模型。
這樣就把人工智能分為了四個(gè)象限。如上圖,左下角是第一象限,使用宏觀特征簡(jiǎn)單模型解決問(wèn)題。這種模型在工業(yè)界應(yīng)用非常少,因?yàn)樗卣鲾?shù)少,模型又簡(jiǎn)單,VC維就是低的,不能解決非常復(fù)雜的問(wèn)題。右下角的第二象限是簡(jiǎn)單模型加上微觀特征,最有名的就是大家熟知的谷歌Adwords,用線性模型加上千億特征做出了世界頂尖的廣告點(diǎn)擊率預(yù)估系統(tǒng)。左上角的第三象限是復(fù)雜模型加宏觀特征,也有諸多知名公司做出了非常好的效果,例如Bing廣告和Yahoo,經(jīng)典的COEC+復(fù)雜模型在這個(gè)象限內(nèi)是一個(gè)慣用手段。最后是第四象限,利用復(fù)雜模型加上微觀特征,由于模型空間太大,如何計(jì)算以及解決過(guò)擬合都是研究的熱點(diǎn)。
剛才說(shuō)沿著模型和特征兩條路走,那如何沿著模型做更高維度的機(jī)器學(xué)習(xí)呢?研究模型主要是在學(xué)術(shù)界,大部分的工作是來(lái)自于ICML、NIPS、ICLR這樣的會(huì)議,非線性有三把寶劍分別是Kernel、Boosting、Neural Network。Kernel在十年前非?;穑o當(dāng)時(shí)風(fēng)靡世界的算法SVM提供了非線性能力。Boosting中應(yīng)用最廣泛的當(dāng)屬GBDT,很多問(wèn)題都能被很好地解決。Neural Network在很多領(lǐng)域也有非常成功的應(yīng)用。工業(yè)界優(yōu)化模型的方法總結(jié)起來(lái)有以下幾點(diǎn)。首先,基于過(guò)去的數(shù)據(jù)進(jìn)行思考得到一個(gè)假設(shè),然后將假設(shè)的數(shù)學(xué)建模抽象成參數(shù)加入,用數(shù)據(jù)去擬合新加入的參數(shù),最后用另一部分?jǐn)?shù)據(jù)驗(yàn)證模型的準(zhǔn)確性。這里舉一個(gè)開(kāi)普勒沿模型這條路發(fā)現(xiàn)開(kāi)普勒三定律的例子。在中世紀(jì)的時(shí)候,第谷把自己的頭綁在望遠(yuǎn)鏡上堅(jiān)持觀察了30年夜空,將各個(gè)行星的運(yùn)動(dòng)軌跡都記錄下來(lái)?;谶@些數(shù)據(jù),開(kāi)普勒不斷的進(jìn)行假設(shè),最后假設(shè)行星的運(yùn)動(dòng)軌道是橢圓的,用橢圓的方程去擬合他的數(shù)據(jù),發(fā)現(xiàn)擬合的非常好,便得到了一個(gè)新的模型:開(kāi)普勒第一定律。這就是一個(gè)典型的沿著模型走的思路,通過(guò)觀測(cè)數(shù)據(jù),科學(xué)家獲得一個(gè)假設(shè),這個(gè)假設(shè)就是一個(gè)模型,然后用數(shù)據(jù)擬合這個(gè)模型的參數(shù),最終在新的數(shù)據(jù)上驗(yàn)證模型是否正確,這是沿著模型走的一條路。
沿著特征走主要是由工業(yè)界來(lái)主導(dǎo),比如說(shuō)谷歌的Adwords里面有上千億的特征,想要描述為什么會(huì)產(chǎn)生一次廣告點(diǎn)擊,這就需要解決高效并行的問(wèn)題。這些技術(shù)大部分進(jìn)展來(lái)自于KDD或是WWW。沿著特征優(yōu)化機(jī)器學(xué)習(xí),就是把問(wèn)題通過(guò)特征的方式分的足夠細(xì),做非常準(zhǔn)確的模型。
到底是深度模型好還是寬度模型好呢?這里有一個(gè)沒(méi)有免費(fèi)的午餐定理:不存在萬(wàn)能的模型。簡(jiǎn)單來(lái)說(shuō),世界上不存在一個(gè)優(yōu)化算法對(duì)任何問(wèn)題上都有效,也就是說(shuō)我們總能找到一個(gè)問(wèn)題,讓這個(gè)優(yōu)化算法表現(xiàn)的并不比隨機(jī)的更好。更進(jìn)一步的說(shuō),所有的機(jī)器學(xué)習(xí)都是一個(gè)偏執(zhí),代表了對(duì)這個(gè)世界的認(rèn)知。如果數(shù)據(jù)較少,這個(gè)偏執(zhí)就需要比較強(qiáng)。比如說(shuō)科學(xué)家觀測(cè)物理現(xiàn)象,數(shù)據(jù)并不是特別多。這種情況下,你需要大量的理論和猜想,有少量數(shù)據(jù)做擬合驗(yàn)證就可以了。但如果假設(shè)錯(cuò)的話,就可能出現(xiàn)錯(cuò)誤的結(jié)論。比如用地心論研究天體物理的話,就發(fā)現(xiàn)結(jié)論都是錯(cuò)的。但是如果數(shù)據(jù)很多,我們就不需要很強(qiáng)的偏置,將更多的不確定性加入模型,自動(dòng)的通過(guò)數(shù)據(jù)進(jìn)行擬合。綜合起來(lái),工業(yè)界的機(jī)器學(xué)習(xí)里面并沒(méi)有免費(fèi)的午餐,不存在哪一個(gè)模型是萬(wàn)能的模型。所以說(shuō)你一定要根據(jù)你的業(yè)務(wù)做出合適的選擇,才是最好的一個(gè)方式。
人工智能目前還遠(yuǎn)沒(méi)有達(dá)到可以遍地開(kāi)花的程度,即使解決了剛才講的寬與深的問(wèn)題,我們依然還有很多事情要做。如何訓(xùn)練出好的模型、如何去選擇好的參數(shù)、如何進(jìn)行特征組合,都不是一件容易的事情。
比如,數(shù)據(jù)需要?dú)w集、整理、導(dǎo)入、清洗、拼接、特征工程等之后才能模型訓(xùn)練。之后模型上線還要保證系統(tǒng)的穩(wěn)定性、時(shí)效性和吞吐等等指標(biāo)。同時(shí)為了提供線上服務(wù),需要重做一套線上的架構(gòu),這個(gè)架構(gòu)需要保證數(shù)據(jù)流實(shí)時(shí)性、線上線下一致性,以及模型作用的機(jī)制。只有完成這些,這樣才真正擁有了一個(gè)落地的人工智能系統(tǒng),否則只能稱之為在筆記本上做一個(gè)AI的玩具而已。
剛才說(shuō)到的還只是一個(gè)公司的問(wèn)題與系統(tǒng),如果用在各行各業(yè)的不同問(wèn)題上,會(huì)發(fā)現(xiàn)問(wèn)題非常多,所以企業(yè)一定需要一個(gè)集成上述所有能力的人工智能平臺(tái)。開(kāi)源社區(qū)內(nèi)好的工具平臺(tái)和算法能夠起到很大作用,這些工具也會(huì)日趨成熟,但并不足夠。雖然看起來(lái)人工智能已經(jīng)在非常多的領(lǐng)域應(yīng)用或者開(kāi)始了突破性的嘗試,但是如果對(duì)比Hadoop這樣的分布式存儲(chǔ)計(jì)算系統(tǒng)來(lái)說(shuō),還遠(yuǎn)遠(yuǎn)未普及。
關(guān)于這個(gè)問(wèn)題我們先分析Hadoop。之所有這么多人用Hadoop是因?yàn)樗m然是個(gè)分布式系統(tǒng),但對(duì)使用它的程序員并不需要掌握很高的分布式系統(tǒng)知識(shí),研發(fā)人員并不需要為了使用Hadoop針對(duì)性的對(duì)自己的數(shù)據(jù)、業(yè)務(wù)做出改變,也不需要因?yàn)镸ap-Reduce框架重新設(shè)計(jì)自己的線上服務(wù)系統(tǒng)。但人工智能不一樣,為了使用AI,所有的上下游組件都會(huì)和模型相關(guān):不同的模型不僅意味著不同的訓(xùn)練系統(tǒng),還意味著不同的實(shí)時(shí)、非實(shí)時(shí)的數(shù)據(jù)流,不同的拼表要求與框架選擇、不同的特征抽取、不同的線上服務(wù)架構(gòu)、不同的災(zāi)備架構(gòu)、回滾架構(gòu)相關(guān)。這樣你就會(huì)發(fā)現(xiàn),為AI系統(tǒng)做數(shù)據(jù)流與線上系統(tǒng)的架構(gòu)師,必須要懂機(jī)器學(xué)習(xí)才能做好工作。
所以現(xiàn)在能夠做AI應(yīng)用的人,主要還是那些研究及應(yīng)用的機(jī)器學(xué)習(xí)科學(xué)家,需要那種既懂機(jī)器學(xué)習(xí),又了解業(yè)務(wù),還精通系統(tǒng)架構(gòu)的工程師。這就造成了AI的高門檻。就如同三四十年前,真正編程的人并不是現(xiàn)在我們這樣的人,而是一群科學(xué)家們,他們通過(guò)紙帶來(lái)控制程序的運(yùn)行,自己不僅要編程,還得非常懂計(jì)算機(jī)體系架構(gòu)。導(dǎo)致的結(jié)果是,根本不是每個(gè)人都能接觸到這項(xiàng)技術(shù),不是每個(gè)企業(yè)都能受惠于這個(gè)技術(shù)。但是現(xiàn)在,甚至在Excel中都可以編程,這些程序員可能完全不知道計(jì)算機(jī)的體系結(jié)構(gòu)、操作系統(tǒng)、編譯原理、數(shù)據(jù)庫(kù)的概念,將全部心思花在理解與解決業(yè)務(wù)問(wèn)題上,達(dá)到事半功倍的效果。
所以,如果想讓AI在工業(yè)界中產(chǎn)生更大的影響,真正的落地,我們需要的是一個(gè)完整的人工智能應(yīng)用平臺(tái),讓人以更低的成本用上人工智能。從這個(gè)角度上看,阻礙AI普及的并不是現(xiàn)在的算法效果不夠好,而是現(xiàn)在算法的門檻太高,研發(fā)新的平臺(tái)以及算法降低門檻的重要性大于優(yōu)化算法效果的重要性,我們期望用低的門檻獲得好的效果。
如何降低這些門檻呢?這里分享一下第四范式的成果。首先特征工程是工業(yè)界應(yīng)用AI的巨大的難關(guān)。特征工程的目標(biāo)是針對(duì)于某個(gè)模型找出與要解決問(wèn)題相關(guān)的關(guān)鍵屬性,現(xiàn)在也有一些開(kāi)源的項(xiàng)目嘗試解決特征工程,下圖就列出了Spark 2.2官方文檔中包含的特征工程算法。那么,針對(duì)不同的業(yè)務(wù)、不同的模型,這些算子就足夠我們低門檻建模了嗎?
如果想要做好特征工程,需要對(duì)將要使用的機(jī)器學(xué)習(xí)算法有深入了解才行,隨便地將所有的特征全部扔進(jìn)去,現(xiàn)有的算法并不能很好地處理。有時(shí)候,不同的算法為了達(dá)到同一個(gè)目標(biāo),使用特征工程與做法會(huì)完全不一樣。以新聞推薦為例,我們要做兩種特征,來(lái)提高推薦新聞的點(diǎn)擊率。一種是一階特征,描述的是那些用戶直接喜歡的內(nèi)容。另一種是二階特征,描述的的是個(gè)性興趣的擴(kuò)展。比如說(shuō)喜歡大數(shù)據(jù)的人,很有可能對(duì)機(jī)器學(xué)習(xí)也感興趣。
在下面的示意中,小人代表一個(gè)用戶(User),小人下面表示通過(guò)統(tǒng)計(jì)得到的用戶畫像,也就是用戶的歷史興趣點(diǎn)(User_Topic)。右邊是3篇新聞,每個(gè)新聞?dòng)幸粋€(gè)話題(News_Topic)。
那么,如何在之前提到的“簡(jiǎn)單模型(線性模型)+微觀特征”這條路添加一階特征呢?如圖左上角所示,我們只需要簡(jiǎn)單的將用戶與新聞話題做組合特征(User-New_Topic笛卡爾積)就可以了。在這條路上,我們并不需要任何的用戶畫像統(tǒng)計(jì),因?yàn)樽詈竺科侣匋c(diǎn)擊或者不點(diǎn)擊就已經(jīng)可以訓(xùn)練出“User-News_Topc”組合特征的權(quán)重與偏好了。這種方式下,在線上服務(wù)的時(shí)候,所有的信息都是推薦時(shí)能獲取的,但是為了用戶興趣更新及時(shí),我們需要把模型的時(shí)效性做到非常高。
回頭看,如何在之前提到的“復(fù)雜模型(非線性模型)+宏觀特征”這條路添加一階特征呢?如圖左下角所示,由于是宏觀特征,我們需要將不同的話題變成單個(gè)特征,一種做法是通過(guò)一階邏輯的判斷“本篇新聞的話題是否屬于用戶歷史的興趣”加入。這種方式下,在線上服務(wù)的時(shí)候,我們除了需要推薦實(shí)時(shí)信息之外,還需要實(shí)時(shí)維護(hù)用戶歷史的興趣點(diǎn),但是模型本生的更新頻率就不用那么快了。畢竟,為了達(dá)到推薦時(shí)效性目標(biāo),要么特征靜態(tài)、模型特別實(shí)時(shí),要么特征實(shí)時(shí)、模型靜態(tài)不變。
那么,如果我們要學(xué)習(xí)二階特征呢?對(duì)于線性模型(如右上角所示),我們也需要用到用戶的歷史興趣點(diǎn),將用戶的歷史喜好與文章的話題進(jìn)行組合(User_Topic-New_Topic),這樣模型就可以學(xué)到歷史上喜歡什么樣話題的人還會(huì)喜歡什么樣的新聞話題,達(dá)到二階遷移的目標(biāo)。對(duì)于非線性模型(如右下角所示),我們要做的將原先的一階邏輯判斷(可以認(rèn)為是個(gè)Identity矩陣)變成一個(gè)二階狀態(tài)轉(zhuǎn)移矩陣,通過(guò)歷史統(tǒng)計(jì)得知不同話題間喜歡轉(zhuǎn)換的情況,推算出一個(gè)不在用戶現(xiàn)有興趣點(diǎn)中的文章話題是不是用戶喜歡的。
更進(jìn)一步的,我們總結(jié)對(duì)比一下,對(duì)于前文提到的機(jī)器學(xué)習(xí)四象限中的第2,3,4象限的模型,我們做特征工程的方式差距非常大。對(duì)于一階特征,如果是線性模型加精細(xì)特征,直接做組合,不用統(tǒng)計(jì);如果做非線性模型是需要統(tǒng)計(jì)的,同時(shí)用包含關(guān)系來(lái)做;如果用非線性模型不需要用包含關(guān)系,模型本身會(huì)進(jìn)行特征組合。如果做二階特征,每種方法都需要使用統(tǒng)計(jì)特征,但適用方式也各不相同,比方說(shuō)非線性模型宏觀特征,你需要三個(gè)相關(guān)的信息和很多統(tǒng)計(jì)才可以做到。
這個(gè)例子說(shuō)明了一個(gè)道理,如果要做好的特征工程,需要非常多的針對(duì)模型的定制化的優(yōu)化,僅用現(xiàn)在的工具還完全不夠,完全需要靠人的經(jīng)驗(yàn)與判斷。因此,研發(fā)自動(dòng)特征工程的算法就變得尤為重要。自動(dòng)特征工程是一個(gè)比較難的問(wèn)題,在學(xué)術(shù)界與工業(yè)界都在積極地研究這個(gè)問(wèn)題,這里跟大家分享自動(dòng)工程的三個(gè)方向,隱式特征組合(如NN,F(xiàn)M),半顯式特征組合(如GBDT)與顯式特征組合(顯式特征叉乘)。
隱式特征組合主要特點(diǎn)是對(duì)連續(xù)值特征非常友好,最成功的應(yīng)用場(chǎng)景是語(yǔ)音和圖像。在這些原始信號(hào)是像素或是聲波的問(wèn)題里面,深度學(xué)習(xí)通過(guò)神經(jīng)元網(wǎng)絡(luò)產(chǎn)生底層的Filter以及層次化的特征組合,獲得了遠(yuǎn)超人類手工特征工程的效果。但是深度神經(jīng)網(wǎng)絡(luò)并不是萬(wàn)能的,在深度學(xué)習(xí)中,高維離散特征的變量處理非常復(fù)雜,同時(shí)缺乏可解釋性,過(guò)于黑盒化也是神經(jīng)網(wǎng)絡(luò)大家關(guān)注的焦點(diǎn)。這樣會(huì)導(dǎo)致深度學(xué)習(xí)出來(lái)的特征組合相對(duì)難用到其他算法之上,也很難給人明確的信息反饋。
針對(duì)NN難以處理離散特征的問(wèn)題,我們需要Large Scale Embedding的技術(shù)進(jìn)行解決。Embedding最早在NN上的應(yīng)用是在NLP的問(wèn)題上,當(dāng)時(shí)研究者們使用Embedding的技術(shù)將每個(gè)單詞映射到一個(gè)低維空間,通過(guò)concat,sum,poolling,convolution等方式形成等長(zhǎng)的最底層輸入,然后使用標(biāo)準(zhǔn)的深度神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。隨后在越來(lái)越多的領(lǐng)域用上了Embedding技術(shù),推薦是一個(gè)典型的場(chǎng)景,限制波爾茲曼機(jī)(RBM)在提出之初就曾使用Embedding嘗試解決協(xié)同過(guò)濾問(wèn)題。最近,谷歌發(fā)表描述如何使用大規(guī)模Embedding技術(shù)在Youtube上向數(shù)以十億計(jì)的用戶推薦數(shù)以億計(jì)的視頻,在他們的工作中,他們同時(shí)對(duì)每個(gè)用戶與視頻進(jìn)行Embedding,之后把用戶觀看歷史、搜索歷史等視頻的向量通過(guò)求和變成特征,繼而進(jìn)行深度學(xué)習(xí),獲得了比較大的成功。
Large Scale Embedding在現(xiàn)在依然是一個(gè)比較熱門的研究領(lǐng)域,其中的成果包括Discrete Factorization Machine, FNN, PNN, DeepFM等,上圖顯示了這些算法的異同,簡(jiǎn)單來(lái)講這些模型既能找到特征之間的推理關(guān)系,同時(shí)也能去記憶比較細(xì)的特征。在這個(gè)領(lǐng)域,第四范式提出了DSN(Deep Sparse Network)的算法,它是一個(gè)非常寬且深的模型,里面同樣會(huì)做大規(guī)模Embedding,用神經(jīng)網(wǎng)絡(luò)做自動(dòng)學(xué)習(xí)組合,目標(biāo)解決高維模型(上萬(wàn)萬(wàn)億VC維度)的正則化以及并行計(jì)算問(wèn)題。
第二個(gè)是半顯式的組合,主要基于的是樹(shù)模型。為什么說(shuō)是“半顯式”呢?因?yàn)榇蠹铱赡苷J(rèn)為樹(shù)??山忉尰蛘咦鎏卣鹘M合是很自然的事情,但其實(shí)并不是:葉子節(jié)點(diǎn)的每一個(gè)分支并不是一種顯式、直接的特征組合,而是這些特征在特定取值區(qū)間的組合。所以從結(jié)果上來(lái)說(shuō)我們做到了特征組合,有一定可解釋性,但是同樣也沒(méi)有辦法直接看特征相關(guān)性或者特征之間組合關(guān)系。作為非線性模型,樹(shù)模型主要的特點(diǎn)是容易理解,效果也是非常好的。但是類似的,它對(duì)離散的精細(xì)特征非常難處理,傳統(tǒng)上訓(xùn)練一棵m個(gè)特征n個(gè)訓(xùn)練數(shù)據(jù)k層深t棵樹(shù)的模型需要O(mntk)的時(shí)間,即使對(duì)系數(shù)特征進(jìn)行優(yōu)化,也很難降低特征分裂中分桶上的空間與傳輸消耗。在這個(gè)方面,第四范式提出了一系列算法,包括HE-TreeNet和GBM系列算法,通過(guò)Embedding,Ensemble、Stacking,General Boosting等方式讓樹(shù)模型可以在大規(guī)模特征的情況下可以進(jìn)行特征組合。
第三個(gè)介紹一下顯式的組合,算法的輸出會(huì)明確指定哪些特征組合起來(lái)(笛卡爾積)作為基礎(chǔ)特征。整體思路沿著搜索與搜索優(yōu)化這條路,也有一些地方使用正則化加貪心。由于顯式特征組合的問(wèn)題求解空間大,尋找最優(yōu)特征組合是個(gè)非常難的問(wèn)題。我們對(duì)比AlphaGo下圍棋,19乘19的棋盤上每個(gè)點(diǎn)上有黑子/白子/無(wú)子三種狀態(tài),它的狀態(tài)空間最大是??紤]顯式特征組合要做的事情,我們要有個(gè)特征,限制高階組合階數(shù)不超過(guò),從中選取個(gè)特征,那么2到特征的總量是,最終再?gòu)钠渲羞x取個(gè)特征,其空間是 ,即使將不大的中帶入,量級(jí)會(huì)遠(yuǎn)遠(yuǎn)大于,從解空間大小的角度看顯示特征組合比下圍棋還要更難。
顯式特征組合還有一個(gè)問(wèn)題是如何做連續(xù)值的組合,比如說(shuō)一個(gè)人的年齡是30,收入是10000,應(yīng)該怎么做組合特征呢?是乘、是加還是平方和?在NN中,是通過(guò)線性組合加上非線性變化,在GBDT中使用過(guò)特征值分裂,但是對(duì)限時(shí)特征組合,實(shí)際上沒(méi)有一個(gè)好的現(xiàn)有方法去直接組合。
雖然有著重重困難,顯式特征組合的優(yōu)勢(shì)在于可解釋性,會(huì)提供一個(gè)非常深入的洞察,可以知道哪些特征是潛在有關(guān)系的,應(yīng)該組合起來(lái);同時(shí)這樣的方法享受比較好的可疊加性:所有機(jī)器學(xué)習(xí)算法都基于特征,顯式特征組合的產(chǎn)出是特征集,這個(gè)特征集可以增強(qiáng)所有其他機(jī)器學(xué)習(xí)的算法,成為訓(xùn)練的基礎(chǔ)。
目前,顯式特征組合主要有幾種算法,一些方法基于Boosting,訓(xùn)練單Feature弱分類器,通過(guò)Boosting的過(guò)程尋找組合的啟發(fā);或者基于Regularization進(jìn)行權(quán)重截?cái)?,形成組合候選。這些算法一般不是為了特征組合而設(shè)計(jì),組合也多為訓(xùn)練過(guò)程的副產(chǎn)物,很難真正的獲得高階的組合特征。
下面介紹第四范式最新發(fā)布的算法—FeatureGO。它是基于MCTS,對(duì)特征與特征組合狀態(tài)進(jìn)行建模,訓(xùn)練組合下的收益函數(shù)。在搜索的過(guò)程中,我們做了非常多的調(diào)優(yōu)技術(shù),使用我們內(nèi)部線性分型算法LFC解決連續(xù)值特征組合的問(wèn)題。最終,我們發(fā)現(xiàn)這個(gè)特征組合最多能達(dá)到十階以上,且發(fā)現(xiàn)即使達(dá)到十階也能提供明顯的的效果提升,這個(gè)是過(guò)去靠人所做不到的事情。即使是在最好的廣告或者推薦系統(tǒng)中,人工的特征組合一般也只能到達(dá)5-6階。
我們?cè)?個(gè)數(shù)據(jù)及上實(shí)驗(yàn)了FeatureGO算法,包括兩個(gè)公開(kāi)的數(shù)據(jù)集(higgs、 criteoDeepFM)與兩個(gè)我們私有的數(shù)據(jù)集(l_data,m_data),數(shù)據(jù)集統(tǒng)計(jì)信息如下:
在這四個(gè)數(shù)據(jù)集上,我們使用FeatureGO產(chǎn)生的特征集合加上LR模型進(jìn)行訓(xùn)練,使用AUC作為評(píng)估標(biāo)準(zhǔn)。實(shí)驗(yàn)效果如下??梢钥吹剑褂昧薋eatureGO進(jìn)行特征工程,在4個(gè)數(shù)據(jù)集上的效果都有非常明顯的提升,大部分提升在AUC 2個(gè)百分點(diǎn)左右。
我們也實(shí)驗(yàn)了效果隨著時(shí)間與新組合特征的加入而發(fā)生的變化,如下圖所示。可以看到隨著時(shí)間的變長(zhǎng),特征組合數(shù)越多,特征組合效果會(huì)越來(lái)越好。
基線對(duì)比算法除了LR之外,我們也比較了一些最新的非線性算法成果,在cretio廣告數(shù)據(jù)上進(jìn)行實(shí)驗(yàn),結(jié)果如下。在這個(gè)實(shí)驗(yàn)里,我們也可以看到,即使是基于最新NN或者FM的特征組合,也并不能找全所有可以利用的信息,這個(gè)對(duì)比中顯式特征組合依然有非常好的表現(xiàn)。同時(shí)要注意到的是,F(xiàn)eatureGO產(chǎn)出的新組合特征還可以進(jìn)一步提高上述所有模型的效果。
在FeatureGO這樣的算法背后,其實(shí)還有好多隱藏的架構(gòu)上的黑科技,讓基于搜索的算法可以實(shí)際變成可行。比方說(shuō)我們提出了CPS(Cross Parameter-server Sharing),Dynamic Graph等技術(shù),將計(jì)算過(guò)程中公共的數(shù)據(jù)讀取處理、特征請(qǐng)求存儲(chǔ)更新等進(jìn)行共享,達(dá)到同時(shí)訓(xùn)練10個(gè)模型的時(shí)候使用遠(yuǎn)小于10倍單模型時(shí)間的效果。
關(guān)于計(jì)算能力與架構(gòu),我們認(rèn)為這是人工智能至關(guān)重要的一部分。過(guò)去將APP開(kāi)機(jī)速度由20ms優(yōu)化到2ms其實(shí)意義并不是特別大,但是在機(jī)器學(xué)習(xí)中,10倍的速度意味著同時(shí)間訓(xùn)練10倍多的數(shù)據(jù),或者同時(shí)能訓(xùn)練10個(gè)模型,也就意味著更好的效果,這也就代表著以往模型優(yōu)化、效果優(yōu)化這種只有科學(xué)家做的事情,現(xiàn)在優(yōu)秀架構(gòu)師也能做到。在這方面,谷歌是非常好的榜樣。在過(guò)去,從沒(méi)有人想過(guò)LR這么簡(jiǎn)單的模型也能獲得良好的效果,但是通過(guò)極致的工程架構(gòu)與實(shí)現(xiàn)優(yōu)化,谷歌證明了使用上千億特征,即使簡(jiǎn)單的LR模型也不比任何非線性模型差。第四范式也是一個(gè)架構(gòu)工程優(yōu)化和算法并重的公司。我們不僅做人工智能的通用平臺(tái),也會(huì)投入非常多的精力去優(yōu)化速度與架構(gòu),希望能獲得更強(qiáng)、更全面的人工智能水平和能力。
說(shuō)到計(jì)算與架構(gòu)這一點(diǎn),也要提到谷歌Deepmind團(tuán)隊(duì)最近做的另外一件工作NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING,通過(guò)強(qiáng)化學(xué)習(xí)框架自動(dòng)進(jìn)行神經(jīng)元網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí),有人提到這個(gè)工作為了自動(dòng)獲得一個(gè)網(wǎng)絡(luò)結(jié)構(gòu),使用了800塊GPU同時(shí)進(jìn)行訓(xùn)練,非常不實(shí)用。但我們認(rèn)為,談到將來(lái)的趨勢(shì),不會(huì)是通過(guò)專家來(lái)節(jié)省機(jī)器,降低機(jī)器的使用,而是通過(guò)機(jī)器節(jié)省專家降低專家的參與,因?yàn)殡S著摩爾定律,機(jī)器的計(jì)算成本會(huì)指數(shù)級(jí)的降低,但是專家的數(shù)量并不會(huì)指數(shù)增加。要讓更多的領(lǐng)域用上人工智能,更少人力的AutoML是將來(lái)的必經(jīng)之路。
目前,第四范式的算法與產(chǎn)品“先知平臺(tái)”在更廣泛意義上的AutoML與減低門檻兩方面,都在持續(xù)的投入和研究。這些新的研究方向包括自動(dòng)拼表數(shù)據(jù)導(dǎo)入、模型可解釋、自動(dòng)線上優(yōu)化等。我們要做的事情,是如何把人工智能變的更加自動(dòng)化,使AI變得跟Windows一樣普及?,F(xiàn)在,“先知平臺(tái)”試用版已經(jīng)正式對(duì)外開(kāi)放,歡迎登陸prophet.4paradigm.xpm注冊(cè)使用。
-END-
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。