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