大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

第四正規化發表於2017-09-07

近日,第三屆“國際人工智慧與大資料高峰論壇”在北京國家會議中心召開,本屆峰會聚焦於前沿人工智慧技術與產業應用。作為人工智慧行業領軍人物,第四正規化聯合創始人、首席架構師胡時偉受邀出席大會,並以“大規模機器學習平臺的技術實現”為題,發表了主題演講。

胡時偉曾主持了百度商業客戶運營、鳳巢新興變現、商業“知心”搜尋、阿拉丁生態等多個核心繫統的架構設計工作;後作為鏈家網創始團隊成員,從0開始完成鏈家網新主站的架構設計,推動鏈家系統和研發體系的網際網路化轉型。現任第四正規化首席架構師,帶領研發團隊打造出國內首款人工智慧全流程平臺“第四正規化·先知”。

以下內容根據胡時偉主題演講編寫,略有刪減。

 

大家好!我是來自第四正規化的胡時偉,非常榮幸能夠與大家分享第四正規化在AI技術方面的探索以及全新的嘗試。

首先,我們講到人工智慧時,大家會問,它是不是還停留在一個不確定是否成立的時代?儘管它已經可以做一些影象識別的工作,在下圍棋或者打遊戲等方面甚至戰勝了人類。但是人工智慧在商業和工業生產領域的實際表現如何呢?我列出了以下幾個方向,均是第四正規化在服務客戶的過程中,真正利用人工智慧技術產生效果的領域,比如實時風控、交易反欺詐、個性化推薦等,這些領域都實現了運營效果數倍的提升。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

AI的三大優勢:精細、智慧、高效

AI為何能促進業務提升呢?我們總結了一下,在以下三個方面,AI會和以前的方式有所區別。

首先是精細,人工智慧系統對個性化和微觀業務場景的分析和預測能力的要求已經超過過去的想象。以反欺詐為例,如今,大部分交易都已經轉移到移動支付或者網際網路上,欺詐交易的比例和絕對數量變得越來越多。我們過去怎麼解決這個問題呢?每當出現一筆欺詐交易時,由案件中心來對交易進行分析,然後整理出一些規則,例如這筆交易的金額大於某個數額,或是一定時間範圍內,該筆交易的地點與上一個交易地點之間的距離過大,案件中心會認為它是一筆欺詐的交易。實際上,在影響欺詐的因素當中除了強規則,還有很多長尾因素,例如全國每一個區域發生交易欺詐的規律都是不一樣的,所以過去專家整理出的上百條規則只能對全國的交易進行分析,而對於每個具體的省市,甚至是某一個村,這些規則其實是覆蓋不了的。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

如今,我們利用AI技術,可以實現更加精細的分析和預測。就像上圖表示的一樣,傳統的方式是基於一些規則將人群劃分,假設全國有兩億名移動支付使用者的話,劃分為上百種人群,單一群體就有兩千萬,丟失了對每個客戶的個性化描述。而機器可以把客群分成上千萬甚至是上億份,可以直接定位到個人來總結出統計規律,這樣便不易造成誤判或者是漏判。

其次是智慧。此前,為了產生商業智慧我們會利用大資料進行分析,去找規律中的較強的變數。但隨著時間的變化,這些變數會發生一定的改變,例如在營銷領域,以往的做法是找出一些規則——買蘋果手機或者相機可能是高階的消費,對其進行營銷比較有效果。但是不同時代的高階消費品是不同的。所以,採用專家規則的話,每隔三個月到半年就要對規則進行更新,人工智慧則不然,我們可以基於資料做成一個閉環的系統,它能夠用機器代替人,從廣泛的資料當中篩選出海量的規則,並且規則以及權重可以隨著時間(資料)的變化而變化,整個系統就具備了智慧(自學習)的能力。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

最後一點是高效。之前提及的反欺詐、新聞推薦、營銷等領域,它們對實時性的要求越來越高,反欺詐系統必須在幾十毫秒之內判定交易是否有問題,營銷系統需快速判定客戶對某個商品的消費意願。在某種意義上講,企業需要建立實時或者準實時的資料採集傳輸、模型預測和響應決策能力,這樣智慧就從批量性、階段性的行為變成一個可以實時觸達的行為。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

構建商業AI能力的五大要素

那AI究竟是什麼呢?在AlphaGo1.0時代,它學習了幾千萬盤的棋譜資料,並依靠深度學習、遷移學習,強化學習等機器學習演算法,成為了圍棋界的頂尖高手。我們認為大資料就是大米,機器學習是電飯鍋,人工智慧就是做出來的米飯。在AI領域,就是利用各個領域的海量資料,依靠機器學習的方式,來輸出人工智慧的能力。

我們認為構建商業AI的能力有5個要素,分別是有意義的過程資料、反饋資料、演算法、計算資源、業務需求。

這裡通過一個實際案例來解釋這5個要素,假如我是一個市場覆蓋率很高的點餐Pad提供商,為了實現AI一鍵點餐的功能,增加食客滿意度,同時提升翻檯率,那麼我就需要收集食客們歷史點菜記錄、瀏覽記錄,以及當前餐館的菜品安排、客流量等等相關資料,也就是上文提到的過程資料。

此外,企業還需要找到可被機器學習優化的業務目標。比如,儘管點餐Pad的最終優化目標是翻檯率,但企業需要將它轉換為機器能夠理解並且優化的指標,即點餐時間、上菜時間,食客進食時間這三個指標,只要能夠提升這三項指標,就可以提高翻檯率。假設餐廳有25種菜,PAD選擇推薦一道菜,即使推薦錯,也並不太會影響實際體驗。但這個反饋資料可以用於判斷某個食客對某道菜品的喜愛程度,將這個概率和廚房做菜時間、菜品平均進食時間等指標,合做成函式後進行排序,再通過Pad實時推薦的方式供給客戶選擇。這樣就完成了實際需求(翻檯率)到機器學習問題(某個人喜歡某個菜品的概率)的轉換。

除此之外,企業還需要收集數字化、不間斷的反饋資料,形成閉環。今天給顧客A推薦了X這個菜,如果他選擇了,就反饋1,不選擇就反饋0。這些資料在如今很多企業以及場景中是可以收集的,因此我們要把資料的採集及儲存過程做好。

如今,有很多行業已經具備了以上三個要素,為什麼AI並沒有廣泛的應用?我們認為還缺少演算法和計算資源。如果我想判定A喜不喜歡X,機器會給出一個概率,演算法解決的是讓這個概率變得更準。像AlphaGo、無人駕駛、人臉識別等運用的機器學習演算法,其實都是用大量的計算資源來對資料進行計算,優秀的演算法下層還要有很強的計算資源來支援。

商業AI構建的難點

對於企業來說,想要走向AI時代,應該具備什麼樣的條件呢?首先從如何利用資料的角度上講,這個資料的維度應該是數千萬到數十億的。我們不僅要進行全國欺詐交易規則的判定,還要精細到每個省、市、村,每個商品、每類人群。如果要把全國十幾億人劃分成不同的組,每個組裡面可能有幾千萬人,這就需要非常龐大的AI進行大規模的特徵工程探索。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

我們今天應該考慮的是以省的成分去區分還是以市的成分去區分,如果以市的成分割槽分,那這兩個市是合併還是區分。如果用人工的方式,我們就需要非常多的技術人員或業務專家通過一些方式去寫演算法或者規則。假設我們有幾千萬條資料,將這些資料進行機器學習時,是需要一個非常大規模的演算法。如今,在業界最為流行的演算法就是神經網路,神經網路最大的特點就是深層,深層的神經網路能夠表示的客觀現象非常豐富。理論上說,對於訓練好的網路,我們把資料輸入進去,它會告訴你哪個是貓和狗。但是實際上,這個訓練好的網路非常難獲得。我們用神經網路去判斷一個交易是不是欺詐,還是判別每個食客對這個菜是否產生興趣時,神經網路的結構和中間的函式,都需要經驗豐富的機器學習專家來進行反覆的除錯。

通常大家會說這個過程是煉丹,通過一個模型的變化,來適應場景,這就導致企業面臨需要招聘大量AI人才的困境。且反欺詐的模型,是不復用在點餐PAD上的。這裡面存在著一個改進的機會,本身人去探索模型的過程,是不是也可以被機器替代?我們可否用一個人工智慧的資料科學家去替代人,並通過特殊工程的方式自動的對場景建模。

另外還有一個點叫做模型除錯。建立好的模型在實際的應用過程中,會出現各種各樣的問題,其中最常見的就是過擬合。教科書上告訴大家要做交叉驗證,但驗證過程中,發現你的模型線上下銷售特別好,線上卻出現大量時間序列的問題,比如我們利用歷史資料得到規律去預測未來。但由於資料極為複雜,有時卻無法分清哪些是歷史和未來,這與系統如何設計資訊有關係,理想狀況下,專家會利用經驗排除過程中的風險。

如何把一個團隊的資料工程師變成AI專家呢?我們認為需要對下圖這四個方面進行一些改進。首先是特徵工程,它是把原始的資料通過一些方式進行衍生,能夠把人群能夠劃分足夠精細的這麼一種變數衍生的方式。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

其次是模型規模。我們原先用統計的方式做模型,通常有十到二十個變數,現在用大資料、分散式的方式可以做到成百上千個變數。由於現在擁有海量的資料,所以足夠支撐一個上億乃至數千億規模的維度變數,這就需要極高維度、分散式的機器學習系統。

另外在模型演算法和除錯方面,我們也需要一些成型的產品,讓資料科學家、工程師直接呼叫,產生有效的模型,避免犯錯。

敏捷的AI應用構建平臺——先知

沿著這個思路,第四正規化打造了先知平臺,它可以大幅縮減資料工程師在資料處理、模型調參、模型評估以及上線方面的工作量,從而把大量的時間花在如何蒐集有意義的資料上。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

下圖是類似於作業系統的先知介面,如果我們有一個TB級的原始資料,例如某銀行歷史年交易資料,裡面可能覆蓋了幾千萬條,甚至上億條交易資料,其中包含了交易時所對應的人、卡與交易的資訊,我們只要通過拖拽的方式做一個圖(如下圖),就能輕鬆實現一個完整的機器學習過程。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

先知會在資料拆分、資料清洗、特徵工程等方面做一些簡化。更進一步講何為特徵工程,比如如何能夠生成一條規則,機器可以把人的職業、性別、年齡、工作地點、消費地點、時間、以及消費金額等特徵進行組合,就相當於把幾千萬條交易分成幾百萬類或者幾十萬類,讓機器從這幾百萬類當中判定哪些交易具有欺詐風險。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

該過程以往要技術人員去寫SQL或者Spark指令碼的方式產生,如今在先知中,機器可以自動產生指令碼、程式,其中有兩種特徵編碼的方式和支援多種高維特徵處理方法,像數值處理,日期處理,切詞和排序等等。

另外,特徵重要性分析防止穿越。比如,我們用過去的交易行為資料來判斷該使用者是否會在簡訊營銷之後,購買理財產品。因為使用者購買理財產品要預測的事情,我們不會把它當做已有的變數,而使用者資產會隨著買理財的數額發生變化。所以,一旦把使用者購買的資產作為一個特徵的話,就會發現凡是使用者在月底資產上升的都喜歡買理財產品,這就是一個典型的穿越特徵。並不是因為該使用者資產上升,才喜歡買理財產品,而是因為他買了理財產品之後資產才上升。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

實際建模過程中,還會包含一些人很難發現的間接穿越特徵,如上圖所示,它會表現為一個非常長的條,其中就有可能涉及到穿越的特徵,我們要把這些特徵刪除。

另外還有一個叫做自動特徵組合。假設一個人在半小時內發生了兩筆交易,地點分別在北京和深圳,這就是一個違背自然規律的事情。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

實際上,資料當中還有多少組合,資料科學家不一定能夠輕易判斷出來。所以先知具備自動特徵組合的探索功能,在一個非常廣的空間裡面,通過本質上是一個暴力搜尋的方式進行探索。實際上由於計算代價很高,純粹的暴力搜尋是做不到的。我們通過一些演算法,將它降到一個正常情況下可以接受的時間內,且能做到5階甚至6階的有效特徵,這個其實可以大大減少科學家的工作量,以及對資料理解的時間。

另外,模型調參也是一個比較複雜的過程。通常來講,調參是一個尋找全域性最優的方式。但調參又不是一個凸函式,所以它很容易找到區域性最優。先知平臺嵌入了自動調參的演算法,我們把訓練集合和測試集合放進去,系統可以自動告訴你一個相對比較優的引數組合。自動調參功能的實現讓普通的業務人員也可以輕鬆完成過去只有資料科學家才能完成的工作。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

先知平臺中,還有一些視覺化的評估報告,可以讓使用者很容易的判斷一個模型的效果。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

除此之外,企業在實際構建人工智慧應用的過程當中,如何將已經做好的模型投入到生產中是非常重要的環節。我們剛剛講到,假設我們已經有了幾千萬個特徵甚至幾億個特徵變數,意味著最後可以生成上億的規則,這些規則如何在系統中應用呢?比如在反欺詐系統中,可能要在20毫秒之內,判定一個交易是不是欺詐。所以對於每個企業來講,需要一個極強的線上分散式預估系統。目前,只要有足夠的底層計算資源,先知平臺可以通過一個非常簡單的方式,就可以形成一個處理上萬併發請求的實時介面。下圖就是先知平臺的架構,剛剛介面裡面是調研的平臺,我們可以通過拖拽的方式完成模型訓練的過程。另外還有自學習平臺和預估服務平臺,把源源不斷的知識送到模型系統中,從而讓它適應新的環境,並且提供實時的線上應用。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

先知平臺背後的技術積累

前面講到先知平臺可以做什麼,後面想跟大家分享一下先知平臺實現過程當中的一些技術思考。機器學習最重要的是演算法,演算法的選擇可以參考工業界應用演算法的四個象限。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

過去,工業界通常會用一些邏輯迴歸的模型或者決策樹,其特點是變數和層數比較少,在資料量小的情況下比較有用。

右上角是一個微觀特徵和複雜模型的象限,可以認為是一個由多個模型整合的一個非常深度的網路,或者是一個非常複雜的網路結構,同時會使用大量的變數。現階段工業界還難以做到這一點,因為其需要幾千臺機器來去解決一個問題,成本過高。

另外兩個選擇中,一個是巨集觀特徵和複雜模型,也就是深度神經網路今天所走的路,這個網路的輸入項可能只有幾百個變數,但是網路的深度比較深,我們可以通過人去除錯,來最後得到一個好的效果。

另外一條路其實是像谷歌、百度走的方向,是微觀特徵和簡單模型。例如我們依然使用邏輯迴歸的演算法,但是我們把一個變數的數量提升到億級別甚至幾十億級別,這樣通過變數的組合,同樣可以用線性模型表達非線性的問題,從而得到比較好的效果。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

基於此,第四正規化自主研發了大規模分散式平行計算框架GDBT(General Distributed BrilliantTechnology)。我們自主研發機器學習框架的目的,是因為像Tensorflow這類的機器學習框架面向的是“深”,就是我們前面所講的左上角的象限,它可以接受比較小的資料輸入,但要做比較複雜的結構,就需要非常多經驗豐富的機器學習專家,針對一個問題要花費三個月甚至是更長時間才能調出一個好的模型。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

第四正規化的GDBT可以用資料本身的組合去進行一些破解。這樣對使用者來說,對數學等概念性的理解要求降低,只需對資料有一定的瞭解。

GDBT也開發了很多標準的演算法優化,其中有一個演算法叫做邏輯迴歸,一般開源的框架裡面也有邏輯迴歸,但是在特徵維度、資料相容性上、樣本資料、是否要抽樣等方面與我們有本質的區別。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

另外在演算法當中,有一個樹的演算法是GBDT,由於底層有一個大規模的分散式框架的支援,所以在先知平臺內部,樣本數量和特徵數量其實是沒有限制的,由平臺的結點規模而定,這樣我們可以多棵樹進行迭代。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

再向大家介紹一下高效能的特徵工程框架。我們原始有一個二維表,比如說做一個新聞推薦,我們就會有使用者的相關資訊,比如手機型號、瀏覽器型號。如果把它轉為一個高維稀疏的高維矩陣的話,其實就成了使用者手機型號、螢幕大小、使用者位置及時間、新聞標題等,我們會這些資料轉化成一個個特徵值,整個矩陣就變成了高維稀疏的模型,這個過程中要對資料的每一行進行大量的組合。

這個過程中,我們需要高效能的特徵工程框架。在解決效能問題時,第四正規化主要做了以下幾點工作。首先我們前面所講到的人其實可以寫一些虛擬碼,機器自動翻譯成指令碼,並把它轉譯成JVM底層的程式碼,通過一些快取的方式,來做到整體的過程優化。這個過程的優化,幾千萬條、數十TB的原始資料,可以在幾個小時之內,形成一個25億維的高維的特徵矩陣。

其次還有一個面向機器學習特徵的蓄水池,這個主要解決什麼問題呢?我們有一個重要的特徵,叫做使用者前三次、前五次、前七次交易的平均交易金額,通常我們會用Storm做一個預先計算,但是對機器學習的問題來講,由於這個特徵非常多,所以預先計算會變得特別複雜。所以我們不是預先去計算這些變數,而是我們選擇一個實時的資料庫,可以迅速的獲取一千條資料,然後實時的衍生這些特徵。這就需要一個高效能的線上實時資料庫,先知中便包含了非常高效能的實時特徵運算元件。

此外還有線上服務的支撐,我們剛才講到用Web層去做的先知的流圖,其實它在轉化成線上的DAG圖的時候,通常要做一些資料拼接、特徵工程、特徵轉換等工作。先知有一個模型工廠、模型倉庫的概念,從線上到線下JAVA程式的轉變是自動完成的。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

先知本質上來講,在Web上做的UI提交的任務,可以通過一個Kubernetes的架構,它會翻譯成一個Spark的任務或者GDBT的任務。也就是說,我們在介面上拖拖拽拽的結果中間會轉換成圖,然後進行一定的優化和執行。所以說先知裡面其實是有一個比較高層次的任務執行工作流引擎。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

可以說先知整體是一個容器化的部署,既可以部署在像金融機構等注重絕對安全的企業中,也可以在公有云上執行。我們在設計這個平臺架構的時候,其實用的是混合雲的架構。但是在企業裡面由於一些核心或是運維的原因,特別是銀行對於這些基礎技術的運用比較謹慎,我們實現了一個符合的應用,其實K8s是用docker和network來完成網路和安全的。我們做了一個輕量級容器,能夠把network排程到埠層面來執行,這樣就可以做到在企業內部,甚至不需要Root許可權,也可以做到應用的高可用。

總結上來講,先知作為一個平臺的目標是使計算的生產力易於獲取,我們儘量讓大家用GUI和簡單的指令碼形式,表面上看起來和傳統用SaaS做一個模型是一樣的,背後實際上是一個高維度的機器學習的框架。對於機器學習來講,計算是第一生產力——調參的過程就意味著將一個機器學習的過程做幾十次或者上百次,而先知的GDBT框架比Spark可以快上數百倍,這就意味著在同等時間內、同樣的計算資源下,先知能有探索更高維度模型的機會,最終減少對使用者的需求。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

此前,我們運用先知平臺在金融領域和網際網路領域完成了一些成功案例。在實際的運用過程當中,不需要專業的人員不停調整模型的結構,我們採用一種比較統一的高維度的若干組機器學習,或者基於樹的邏輯迴歸演算法,同時輔以大量的資料和機器學習的過程來完成這些案例。

大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)

最後,我們還是回到前面講到的點餐的問題。這個問題如果放在先知上應該怎麼做呢?首先要準備過程資料(食客的屬性、食客點了什麼菜、系統給他推薦的菜他是否接受等),整個資料盤算一下,三個月的過程資料大概有幾百GB規模,可以引入到先知平臺上。接下來我們採用自動特徵組合、自動調參等功能,在三種不同的演算法當中進行不同的選擇,大概要經歷三個72小時自動訓練的時間,之後就能夠得到一個API,這個API可以嵌入到實際的點餐系統中,就可以為食客推薦他最喜歡的菜品,而且每一個使用者都能夠看到當前餐館裡面廚師已經做好的菜裡面他最喜歡哪一個,體驗上也更加人性化、個性化。

綜上所述,今天的人工智慧,當業務問題滿足了五大要素,並且有了一個好的機器學習平臺,背後有非常強大的計算能力的情況下,已經可以較為通用的解決一些行業的問題。


相關文章