天天看點

大規模資料的分布式機器學習平台

來自阿裡雲idst褚崴為大家帶來分布式機器學習平台方面的内容,主要從大資料的特點和潛在價值開始講起,然後介紹阿裡的業務場景中常用到的機器學習算法,以及阿裡采用的分布式機器學習架構,最後介紹了pai算法平台,一起來看下吧。

大資料的特點和潛在價值

大規模資料的分布式機器學習平台

我們正在步入大資料的時代,大資料至少具備以下四個特點:

海量樣本:資料的規模巨大,特征非常多,每40個月翻一番,資料管理複雜;

内容多樣:非結構化資料、異質資料,每天産生的資料裡有圖像、語音、視訊,還有各類傳感器産生的資料,各種定位的資訊,交易記錄…

時效性強:資料實時更新,多突發事件,使用者短期行為,要求實時檢索和計算的能力;

品質不均:資料采集管道多,品質參差不齊,資料分析準确性不一緻。

大資料裡蘊藏着豐富的知識,如何使大資料成為知識和力量?這是資料挖掘科學家的使命。

資料挖掘是由軟體實作的機制從海量資料中提取出資訊,資料挖掘方法又被稱做算法,在海量樣本裡,我們可以更加準确地發現事件間的關聯關系,對未知的事件有精準預測的能力,幫助我們做出更合理的決策。在電子商務領域,資料挖掘正在廣泛地應用于精準營銷、風險控制、成本管理等方方面面。

大資料挖掘的基礎就是分布式的大規模機器學習的能力。阿裡有7.6億的商品,日均通路量10億次,占c2c市場90%以上,占50%以上的b2c市場,占第三方支付的50%,

這些組成了阿裡的大資料。目前,在阿裡資料平台事業部的伺服器上,攢下了超過100pb已處理過的資料,等于104857600個gb,相當于4萬個西雅圖中央圖書館,580億本藏書。

大規模資料的分布式機器學習平台

機器學習在阿裡廣泛地應用,在淘寶的首頁上,搜尋技術裡的對搜尋關健詞的了解和重寫、結果内容的排序、廣告投放點選率的預估、商品的聚類和去重,還有相關商品的推薦技術等等;在螞蟻金服的業務中,圖像識别技術廣泛應用到證件智能稽核和人臉識别,規則挖掘技術也運用在風險控制上;在客服業務裡,語音識别技術也得到廣泛地應用。

機器學習算法

通常我們把機器學習的算法分為三大類:有監督學習、無監督學習和強化學習。

<b>邏輯回歸(</b><b>logistic</b>

regression<b>)</b>

大規模資料的分布式機器學習平台

邏輯回歸廣泛地運用在二分類的問題,基于多個輸入變量來估計某一事件發生的機率。在ctr預估的任務中,最常用到的線性邏輯回歸的模型:

大規模資料的分布式機器學習平台

輸入變量描述上下文,預估使用者點選的機率。可以包含廣告品質資訊與搜尋關鍵字的相關性,曆史記錄中的點選情況,以及使用者的個人資訊等等,利用日志中的上一次的曆史事件學習一個線性模型來拟合使用者的點選行為,這個線性模型的輸出值通過一個logit model把一個實數映射到0~1之間,成為一個機率值,通常我們假定樣本是互不相關的,利用極大似然法來優化線型模型的權重,根據具體情況我們還會加上正則項來獲得相對更簡單的模型,其他的多分類問題 (multiclass classification) 或 序數回歸 (ordinal

regression)也可以轉化為二分類的問題來求解,是以邏輯回歸适用範圍非常廣。

<b>聚類(</b><b>clustering</b><b>)</b>

大規模資料的分布式機器學習平台

k-means是一個常用的聚類算法,把樣本按照空間位置劃分成k個類,k事先設定目标是把空間位置相近的樣本聚在同一個類裡,樣本可以是使用者,也可以是商品或者照片等等,每個樣本由一組特征來描述,我們通過損失目标函數最小化來優化每個聚類中的中心位置和各個樣本的所屬類,這個算法的大緻過程如下:

初始化每個聚類的中心,可以随機的選k個樣本作為中心,然後計算每個樣本達到k個中心點的距離,距離可以是歐式空間距離,也可以是其它距離,每個樣本選擇距離最近的中心點作為該樣本的所屬類,之後根據該類裡面所有樣本來更新該類的中心點位置,可以就是樣本的平均值,根據新的各類中心點位置再決定每個樣本的歸屬類疊代,直到結果不再變化,這樣我們最終獲得了k個類,每個類裡面都有很相似的樣本。此外,還有其它的聚類算法,例如譜聚類和lda等等。

<b>決策樹(</b><b>decision</b>

tree<b>)</b>

大規模資料的分布式機器學習平台

決策樹是一種監督學習,給定一堆樣本,每個樣本都有一組屬性和一個類别,這些類别是事先确定的,通過學習得到一個分類器,分類器能夠對新出現的對象給出正确的分類,決策樹是一種樹型的結構,其中每個内部節點表示一個屬性上的測試,每個分枝代表了一個測試輸出,每一個葉節點代表一個類别特征和分類點,由資訊熵的增益來決定。随機森林是一個包含多個決策樹的分類器,并且其輸出的類别是由個别樹輸出的類别的衆數而定,我們建立多棵決策樹,各個決策樹之間沒有關聯,分别學習部分訓練樣本而最終的結果由投票決定。

大規模資料的分布式機器學習平台

gbdt的全稱是gradient boost

decision tree,和随機森林一樣,是由多棵決策樹組成的,依次生成決策樹,減小損失函數,各個決策樹之間是有關聯的,因為下一顆樹是在現有模型的殘差的基礎上生成的,最終的結論由累加的各個決策樹結果來決定。在生成一顆新樹的時候,目标值設定為目前模型的梯度,然後按照正常的方法來建立決策樹。

<b>深度學習(</b><b>deep</b>

learning<b>)</b>

深度學習核心是神經元網絡模型,随着近年來并行分布式計算能力的發展,使得在海量資料上訓練複雜模型成為了現實,實踐也證明複雜的神經元網絡模型在高難度的學習任務上表現優異,例如圖像識别、語音識别、機器翻譯等領域。

神經元網絡模型包括一個輸入層,由輸入特征決定;一個輸出層,由學習目标來決定;還有至少一個隐藏層,深度學習研究的模型一般都包含多個隐藏層,形成比較複雜的網絡結構。

常用的網絡結構有用于圖像識别的cnn卷積神經元網絡、用于語音和翻譯的rnn、還有深度置信模型dbn,下面舉例介紹cnn:

大規模資料的分布式機器學習平台

這是經典的lenet5結構圖,圖中的卷積網絡工作流程是,輸入層有32乘32的感覺節點組成,接受原始圖像,然後計算流程在卷積和子抽樣之間交替進行。第一個隐藏層進行卷積,它有八個特征映射組成,每個特征映射有28乘28的神經元組成,每一個神經元指定一個5乘5的接受域;第二個隐藏層實作子抽樣和局部平均,它同樣由8個特征映射而成,但每個特征映射由14乘14的神經元組成,每個神經元具有一個2乘2的接受域,一個可訓練系數、一個可訓練偏置和一個sigmoid激活函數,訓練系數和偏置控制神經元的操作點;第三隐藏層進行第二次卷積,它有20個特征映射組成,每個特征映射由10乘10的神經元組成,該隐藏層中的每個神經元可以具有和下一個隐藏層幾個特征映射相連的突觸連接配接,它以與第一個卷積層的相似方式來操作;第四個隐藏層進行第二次子抽樣和局部平均計算,它由20個特征映射組成,但每個特征映射由5乘5的神經元組成,它與第一次抽樣相似的方式進行;第五個隐藏層實作卷積的最後階段,它由120神經元組成,每個神經元指定一個5乘5的接受域,最後是一個全連接配接層,得到輸出的向量。

常見的分布式機器學習架構

分布式機器學習的計算架構有兩個,一是基于消息傳播接口的mpi架構,一是參數伺服器架構。

大規模資料的分布式機器學習平台

這是阿裡的資料生态圈的示意圖,底層的存儲層是odps,中間層是計算層,搭載着mapreduce 、spark、graph還有mpi和參數伺服器,最上層是應用層,支援阿裡各個bu的業務,包括廣告、搜尋、淘寶、天貓、聚劃算和螞蟻金服。

<b>message passing interface</b><b>(</b><b>mpi</b><b>)架構</b>

大規模資料的分布式機器學習平台

mpi是1994年5月釋出的一種消息傳播接口,它實際上是一個消息傳播函數庫的标準說明,吸收了衆多消息傳遞系統的優點,是目前國際上最流行的并行程式設計環境之一。

mpi是一種标準,封裝了消息傳遞程式設計接口、減少網絡程式設計,mpi具有許多的優點:

具有可移植性和易用性,具有完備的異步通信功能,有正式和詳細的精确定義。在基于mpi程式設計模型中,計算是由一個或多個彼此通過調用庫函數進行消息收發通信的程序所組成,在絕大部分mpi實作中,一組固定的程序,在程式初始化的時候産生,一般情況下,一個處理器隻生成一個程序,這些程序,可以執行相同或不同的程式,程序間的通信可以是點到點,也可以是集合的,mpi提供了一個并行環境庫,通過調用mpi的庫函數來達到并行的目的,目前流行的實作包括mpich、openmpi和lammpi,mpi提供c語言和fortran等多語言的接口,支援疊代,支援odps平台,非常适合實作分布式機器學習算法。

上圖是關于mapreduce資料分片,每個節點隻處理一部分資料,通過增加處理節點,減少每個節點的計算工作量,進而完成大規模的資料處理任務,mpi架構支援節點間的通信,一般節點0就擔當彙總的節點,推動其它節點,進行疊代計算的工作。

<b>參數伺服器(</b><b>parameter</b>

server<b>)架構</b>

大規模資料的分布式機器學習平台

參數伺服器是谷歌的一個大規模分布式計算平台,用來訓練深度學習的模型。這個架構支援模型分片,可以把一個超大規模的模型分解成很多的小部分,一個參數伺服器隻負責模型的一小部分,可以通過增加參數伺服器的數目來提升模型處理的規模;參數伺服器利用稀疏特性減小通信。

在資料分片方面和mpi一樣,可以通過增加節點來提升資料處理的規模,另外這個架構還支援異步疊代和failover機制。架構會儲存每一個節點的狀态,當任何一個節點任務失敗以後,架構會啟動一個新的任務繼續跑未跑完的任務。

<b>k-means </b><b>的分布式實作</b>

mpi架構下具體過程如下:

1.        

資料分片;

2.        

節點0儲存當時各個聚類的中心點的資訊;

3.        

每一個節點從節點0把目前各個聚類的中心點資訊拉下來,然後計算每個樣本到這些中心點的距離,根據最短的距離獲得所屬類,并累計本地的中心點資訊,周遊所有的樣本,将本地的中心點的資訊推送到節點0;

4.        

節點0收集到所有資訊之後更新目前的各個類的中心點的資訊,就是同步疊代;

5.        

各個節點繼續各自的計算,直到收斂,也就是各個中心點的位置不再變化。

當特征次元非常高的時候,節點0可能沒有足夠的記憶體資源來儲存中心點的資訊,而參數伺服器正好可以解決這樣的難題,參數伺服器架構具體過程如下:

首先模型分片;

參數伺服器分别儲存目前類中心點的一部分特征次元;

每一個節點從參數伺服器上拉下來中心點的部分特征,累計每個樣本到各個中心點的距離,再從參數伺服器上拉下來另外一部分特征,繼續計算到各個中心點的距離,直到得到完整的本地中心點的資訊,之後将本地中心點的資訊推送到參數伺服器;

參數伺服器搜集到所有的資訊之後,更新目前的各個類的中心點的資訊,還是同步疊代;

各個節點繼續各自的計算,直到收斂。

pai算法平台

大規模資料的分布式機器學習平台

這是pai算法平台的一個snapshot,pai算法平台将提供web服務,支援拖拽的圖形見面操作,在授權的基礎上,所有的算法子產品都可以共享,所有的實驗記錄都可以複用,我們希望營造一個算法的生态圈,每一個社群成員都可以分享他的實驗設計和結果。

謝謝大家!

大規模資料的分布式機器學習平台

繼續閱讀