近日,全球最頂級大數據會議Strata Data Conference在京召開。Strata大會被《福布斯》雜誌譽爲「大數據運動的里程碑」,吸引了大數據、人工智能領域最具影響力的數據科學家與架構師參會。第四範式聯合創始人、首席研究科學家陳雨強受邀出席,並以「人工智能工業應用痛點及解決思路」爲題,發表主題演講。程序員
陳雨強是世界級深度學習、遷移學習專家,曾在NIPS、AAAI、ACL、SIGKDD等頂會發表論文,並獲 APWeb2010 Best Paper Award,KDD Cup 2011名列第三,其學術工做被全球著名科技雜誌MITTechnology Review報道。同時,陳雨強也是AI工業應用領軍人物,在百度鳳巢任職期間主持了世界首個商用的深度學習系統、在今日頭條期間主持了全新的信息流推薦與廣告系統的設計實現,目前擔任第四範式首席研究科學家,帶領團隊研究、轉化最領先的機器學習技術,着力打造人工智能平臺級產品「先知」。算法
如下內容根據陳雨強主題演講編寫,略有刪減。數據庫
你們好,我是來自於第四範式的陳雨強,目前主要負責人工智能算法研發及應用的相關工做。很是高興與你們分享人工智能在工業界應用的一些痛點、以及相應的解決思路。編程
工業大數據須要高VC維網絡
人工智能是一個很是煊赫一時的名詞,且已經成功應用在語音、圖像等諸多領域。可是,如今人工智能有沒有達到能夠簡單落地的狀態呢?工業界的人工智能須要什麼技術呢?帶着這些問題開始咱們的思考。架構
首先,咱們先探討一下工業界人工智能須要一個什麼樣的系統?人工智能的興起是因爲數據量變大、性能提高以及並行計算技術發展共同產生的結果。因此,工業界的問題都是很是複雜的。所以,咱們須要一個可擴展系統,不只在吞吐與計算能力上可擴展,還須要隨着數據量與用戶的增多在智能水平上可擴展。怎麼實現一個可擴展系統呢?其實很重要的一點是工業界須要高VC維的模型,去解決智能可擴展性的問題。怎麼得到一個高VC維的模型呢?你們都知道,機器學習=數據+特徵+模型。若是數據在給定的狀況下,咱們就須要在特徵和模型兩個方面進行優化。框架
特徵共分兩種,一種叫宏觀特徵,比方說年齡、收入,或是買過多少本書,看過多少部電影。另一種是微觀特徵,指的是比擬細粒度的特徵,你具體看過哪幾本書,或者具體看過哪幾部電影。每一部電影,每一本書,每個人,都是不一樣的特徵。書有幾百萬本,電影有幾百萬部,因此這樣的特徵量很是大。機器學習
模型可分爲兩類,一個是簡單模型,好比說線性模型。還有一種是複雜模型,好比非線性模型。分佈式
這樣就把人工智能分爲了四個象限。如上圖,左下角是第一象限,使用宏觀特徵簡單模型解決問題。這種模型在工業界應用很是少,由於它特徵數少,模型又簡單,VC維就是低的,不能解決很是複雜的問題。右下角的第二象限是簡單模型加上微觀特徵,最有名的就是你們熟知的谷歌Adwords,用線性模型加上千億特徵作出了世界頂尖的廣告點擊率預估系統。左上角的第三象限是複雜模型加宏觀特徵,也有諸多知名公司作出了很是好的效果,例如Bing廣告和Yahoo,經典的COEC+複雜模型在這個象限內是一個慣用手段。最後是第四象限,利用複雜模型加上微觀特徵,因爲模型空間太大,如何計算以及解決過擬合都是研究的熱點。函數
剛纔說沿着模型和特徵兩條路走,那如何沿着模型作更高維度的機器學習呢?研究模型主要是在學術界,大部分的工做是來自於ICML、NIPS、ICLR這樣的會議,非線性有三把寶劍分別是Kernel、Boosting、NeuralNetwork。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到特徵的總量是,最終再從其中選取個特徵,其空間是 ,即便將不大的中帶入,量級會遠遠大於,從解空間大小的角度看顯示特徵組合比下圍棋還要更難。
顯式特徵組合還有一個問題是如何作連續值的組合,好比說一我的的年齡是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同樣普及。如今,「先知平臺」試用版已經正式對外開放,歡迎掃描二維碼註冊使用。