成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大數據:“人工特征工程+線性模型”的盡頭

云計算
數據的飛速增長,給模型訓練帶來極大壓力。事實上,11年的時候模型訓練已經是新特征上線的主要障礙了。憑著年輕的沖動,和對分布式系統和數值算法優化的一點點知識,我頭腦一熱就開始設計下一代模型訓練系統了。

標簽:大數據機器學習特征工程11年的時候我加入百度,在鳳巢使用機器學習來做廣告點擊預測。當時非常驚訝于過去兩年內訓練數據如此瘋狂的增長。大家都在熱情的談特征,每次新特征的加入都能立即得到AUC的提升和收入的增長。大家堅信特征才是王道,相信還會有源源不斷的特征加入,數據規模還會成倍的增長。我也深受感染,堅定的相信未來兩年數據至少還會長十倍,因此一切的工作都圍繞這個假設進行。現在兩年過去了,回過頭來看,當時的預測是正確的嗎?

數據的飛速增長,給模型訓練帶來極大壓力。事實上,11年的時候模型訓練已經是新特征上線的主要障礙了。憑著年輕的沖動,和對分布式系統和數值算法優化的一點點知識,我頭腦一熱就開始設計下一代模型訓練系統了。目標是在同樣的資源下,能容納當前十倍的數據。項目是在情人節立項,取了一個好玩的名字,叫darlin【吐槽1】,這個系統應該是百度使用率***的機器學習訓練系統之一了。一個重要問題是,它會像前任一樣在兩年后成為性能瓶頸嗎?

目前看來,以上兩個問題的答案都是否定的。

【吐槽1】意思是distributed algorithm for linear problems。更好玩的是,計算核心模塊叫heart,絡通訊模塊叫telesthesia。數據是用類似bigtable的格式,叫cake,因為切起來很像蛋糕。開發的時候開玩笑說,以后上線了就會時不時聽人說“darlin”,是 不是會很有意思?可惜全流量上線后我就直奔CMU了,沒享受到這個樂趣:)

我們首先討論特征。特征是機器學習系統的原材料,對最終模型的影響是毋庸置疑的。如果數據被很好的表達成了特征,通常線性模型就能達到滿意的精度。一個使用機器學習的典型過程是:提出問題并收集數據,理解問題和分析數據繼而提出抽取特征方案,使用機器學習建模得到預測模型。第二步是特征工程,如果主要是人來完成的話,我們稱之為人工特征工程(human feature engineering)。舉個例子,假設要做一個垃圾郵件的過濾系統,我們先收集大量用戶郵件和對應的標記,通過觀察數據我們合理認為,標題和正文含有“交友“、”發票“、”免費促銷“等關鍵詞的很可能是垃圾郵件。于是我們構造bag-of-word特征。繼而使用線性logisitic regression來訓練得到模型,最終把模型判斷成是垃圾郵件的概率大于某個值的郵件過濾掉。

就這樣搞定啦?沒有。特征工程是一個長期的過程。為了提升特征質量,需要不斷的提出新特征。例如,通過分析bad case,不久我們便發現,如果郵件樣式雜亂含有大量顏色文字和圖片,大概率是垃圾郵件。于是我們加入一個樣式特征。又通過頭腦風暴,我們認為如果一個長期使用中文的人收到俄語的郵件,那估計收到的不是正常郵件,可以直接過濾掉。于是又加入字符編碼這一新特征。再通過苦苦搜尋或買或央求,我們得到一個數據庫包含了大量不安全ip和發信地址,于是可以加入不安全來源這一新特征。通過不斷的優化特征,系統的準確性和覆蓋性不斷的提高,這又驅使我們繼續追求新特征。

由此可以看出,特征工程建立在不斷的深入理解問題和獲取額外的數據源上。但問題是,通常根據數據人能抽象出來的特征總類很有限。例如,廣告點擊預測,這個被廣告投放公司做得最透徹的問題,目前能抽象出來的特征完全可以寫在一張幻燈片里。好理解的、方便拿來用的、干凈的數據源也不會很多,對于廣告無外乎是廣告本身信息(標題、正文、樣式),廣告主信息(行業、地理位置、聲望),和用戶信息(性別、年齡、收入等個人信息,cookie、session等點擊信息)。KDD CUP2013騰訊提供了廣告點擊預測的數據,就包含了其中很多。所以最終能得到的特征類數上限也就是數百。另外一個例子是,google使用的數據集里每個樣本含有的特征數平均不超過100,可以推斷他們的特征類數最多也只是數百。

 

大數據:“人工特征工程+線性模型”的盡頭

 

圖1

因此,新數據源和新特征的獲得會越來越難。然而,模型的精度并不是隨著特征的增長而線性提高。很多情況是指數。隨著人工特征工程的深入,投入的人力和時間越來越長,得到的新特征對系統的提升卻越來越少。最終,系統性能看上去似乎是停止增長了。Robin曾問過我老大一個問題:“機器學習還能持續為百度帶來收益嗎?” 但時候我的***反應是,這個商人!現在想一想,Robin其實挺高瞻遠矚。

另外一個例子是IBM的Watson。從下圖中可以看出,雖然每次性能的提升基本都是靠引入了新數據和新特征,但提升幅度是越來越小,也越來越艱難。

 

大數據:“人工特征工程+線性模型”的盡頭

 

圖2

這解釋了***個問題,為什么特征數量的漲幅比當初預計的要少很多。一個特征團隊,5個經驗豐富的大哥加上10個動手強的小弟,幾個月就能把可能的特征發掘得差不多,然后再用1、2年把特征全部做進系統。再然后呢?就會被發現有點后續無力了,進入中年穩定期了。

接下來討論模型訓練,因為不想被跨國追捕所以主要用google sibyl?來舉例子。Sibyl是一個線性分類器,支持多種常見loss,例如logistc loss,square loss,hingle loss。還可以使用l2罰,或者l1罰來得到稀疏模型。Sibyl每天要被運行數百次,被廣泛應用在google的搜索,gmail,youtube等應用上。由于這些應用直接關系到用戶體驗和收入,通常需要得到收斂精度很高而且收斂點穩定的模型。因為一個有著數百億項的模型,如果收斂不夠,即使只是少數特征上權重計算誤差過大,也很容易引起bad case。同時,應用也希望模型的輸出在一段時間是穩定的。

Sibyl使用parallel boosting,而darin用了一個更生僻的算法。后來聽說了linkedin,yahoo,facebook的算法之后,狠下心survey了一些古老的優化論文,發現雖然大家名字各不相同,但其實都等價的【吐槽2】。在合適算法下,收斂到所要求的精度通常只需要數十論迭代。而且隨著數據量的增大迭代數還會進一步降低。更多的,在online/incremental的情況下,還能更進一步大幅減少。 #p# 

【吐槽2】在嘗試過ml人最近一些年做的一系列算法后發現,它們真心只是研究目的:(

然后是工程實現。google有強大的底層支持,例如GFS,Mapreduce,BigTable,最近幾年更是全部更新了這一套。所以sibyl的實現應該是相當輕松。但即使是從0開始,甚至不借助hadoop和mpi,也不是特別復雜。純C開發,只是用GCC的情況下,代碼量也只是數萬行。主要需要考慮的是數據格式,計算,和網絡通訊。數據格式首先考慮壓縮率,可以大量節省I/O時間,其次是空間連續性(space locality)。但通常數據都遠超last level cache,也不需要顧慮太多。計算可以用一些常見小技巧,例如少用鎖,線程分配的計算量要盡量均勻(稀疏數據下并不容易),double轉float,甚至是int來計算,buffer要管理好不要不斷的new和delete,也不要太浪費內存。網絡稍微復雜一點,要大致了解集群的拓撲結構,注意不要所有機器同時大量收發打爆了交換機,從而引起大量重傳(這個經常發生),盡量少的做集群同步。

考察了幾個公司的系統性能后,可以認為現在state-of-the-art的性能標準是,100T數據,通常包含幾千億樣本,幾百億特征,200臺機器,收斂精度要求大致等于L-BFGS 150輪迭代后的精度,可以在2小時內訓練完成。如果用online/incremental模式,時間還可以大幅壓縮。例如,使用67T數據和1000核,Sibyl在不到一個小時可以完成訓練。

這回答了前面的第二個問題。假設特征不會突增,那么數據的主要增長點就是樣本的累積。這只是一個線性的增長過程,而硬件的性能和規模同時也在線性增長。目前來看效率已經很讓人滿意。所以一個有著適當優化算法和良好工程實現的系統會勝任接下來一兩年的工作。

在人工特征工程下,隨著可用的新數據源和新特征的獲取越來越困難,數據的增長會進入慢速期。而硬件的發展使得現有系統能完全勝任未來幾年內的工作量,因此人工特征工程加線性模型的發展模式進入了后期:它會隨著數據和計算成本的降低越來越普及,但卻無法滿足已經獲得收益而希求更多的人的期望。

所以,然后呢?我來拋磚引玉:)

還是先從特征開始。正如任何技術一樣,機器學習在過去20年里成功的把很多人從機械勞動里解救了出來,是時候再來解救特征專家們了。因為線性分類系統有足夠的性能來支撐更多的數據,所以我們可以用它來做更加復雜的事情。一個簡單的想法是自動組合特征,通過目標函數值的降低或者精度的提升來啟發式的搜索特征的組合。此外,Google最近的deep learning項目【吐槽3】展現另外一種可能,就是從原始數據中構造大量的冗余特征。這些特征雖然質量不如精心構造的特征來得好,但如果數量足夠多,極有可能得到比以前更好的模型。他們使用的算法結合了ICA和sparse coding的優點,從100x100圖片的原始pixel信息中抽取上十億的特征。雖然他們算法現在有嚴重的scalability的問題,但卻可以啟發出很多新的想法。 #p# 

【吐槽3】中文介紹請見余老師的文章。我個人覺得這個項目更多是關于提取特征。引用Quoc來CMU演講時說的兩點。一、為了減少數據通訊量和提升并行效率,每一層只與下層部分節點相連。因此需要多層來使得局部信息擴散到高層。如果計算能力足夠,單層也可能是可以的。二、如果只使用DL來得到的特征,但用線性分類器來訓練,還可以提升訓練精度。

模型方面,線性模型雖然簡單,但實際上是效果最差的模型。鑒于計算能力的大量冗余,所以是時候奔向更廣闊的天空了。在廣告點擊預測那個例子里,數據至少可以表示成一個四緯的張量:展現 x廣告 x 廣告主 x 用戶。線性模型簡單粗暴把它壓成了一個2維矩陣,明顯丟掉了很多信息。一個可能的想法是用張量分解(現在已經有了很高效的算法)來找出這些內在的聯系。另一方面,點擊預測的最終目的是來對廣告做排序,所以這個本質是一個learning to rank的問題,而不是一個簡單的分類問題。例如可以嘗試boosted decision tree。

再有,最近大家都在談神經網絡。多層神經網絡理論上可以逼近任何一個函數,但由于計算復雜、參數過多、容易過擬合等特點被更加簡單的kernel svm取代了。但現在的數據規模和計算能力完全不同當年,神經網絡又再一次顯示它的威力,hinton又再一次走向了職業生涯的***。微軟的語音實時翻譯是一個很好的樣例。反過來說,有多少人真正試過百億樣本級別kernel svm?至少,據小道消息說,多項式核在語音數據上效果很好。

我的結論是,大數據時代,雖然人工特征工程和線性模型將會被更廣泛的事情,但它只是大數據應用的起點。而且,我們應該要邁過這個起點了。

責任編輯:王程程 來源: 新浪博客
相關推薦

2020-08-31 15:15:20

人工智能算法AI

2022-11-29 15:05:16

大數據數據網格

2022-12-12 16:15:19

圖像數據Python

2015-08-27 16:55:09

2021-08-16 13:53:58

大數據安全信息

2020-09-18 16:01:18

大數據

2018-06-07 15:22:58

人工智能大數據比較

2016-12-12 18:03:13

諸葛io李開復大數據

2019-07-31 14:16:35

大數據人工智能算法

2018-06-06 14:21:36

人工智能大數據數據處理

2013-05-07 14:54:28

大數據戰略企業特征虛擬化網絡

2013-11-11 18:17:07

知識工程企業基因

2021-02-25 11:36:28

大數據Gartner

2017-10-23 12:19:38

2020-10-30 09:56:45

大數據人工智能法律

2024-05-07 11:29:59

2017-07-26 15:36:32

人工智能在線特征系統數據存取

2017-07-07 11:34:53

人工智能數據存儲在線特征

2022-06-21 14:14:06

DevOpsNoOps
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 婷婷激情在线 | 国产婷婷精品av在线 | 色吧久久 | 黄色片av | 亚洲资源站 | 在线视频一区二区 | 亚洲精品在线看 | 懂色中文一区二区三区在线视频 | 久久91精品国产 | 精品国产一区二区三区久久久久久 | av天天干 | 国产精品一区二区免费 | 欧美日韩一区二区在线 | 成人精品一区二区三区中文字幕 | 国产一区二区三区四区 | 91久久精品一区二区二区 | 在线观看国产精品一区二区 | 欧美日韩一| 欧美精品一区二区三区在线播放 | 做a视频 | 男女污网站 | 91精品久久久久久久久久入口 | 亚洲一区二区三区四区五区中文 | 精品久久久久久久 | 99久热| 一区二区三区免费 | 久久国产精品首页 | 色av一区二区三区 | 国产日韩久久久久69影院 | av片在线观看网站 | 日韩视频一区 | 亚洲成人动漫在线观看 | 中文在线www | 亚洲精品在线免费播放 | 在线国产小视频 | 黄视频免费 | 殴美黄色录像 | 久久久久久久久久影视 | 成人免费大片黄在线播放 | 精品欧美一区二区三区久久久 | 一级在线免费观看 |