本文來自英國倫敦大學學院博士張偉楠在攜程技術中心主辦的深度學習Meetup中的主題演講,介紹了深度學習在在Multi-field Categorical(多欄位分類)數據集上的應用,涉及FM和FNN等算法。
本次分享主要講的是深度學習在Multi-field Categorical 這類數據集上的應用,這種類型的數據主要呈現以下特徵:有多個域,每個域上的數據以ID格式呈現。本課題就是在信息檢索這一大類下的應用,它的應用主要體現在:網絡搜索、推薦系統、廣告展示這些領域。深度學習對連續數據和序列數據(比如:圖片像素、語音、自然語言等)有比較好的效果且目前已經有了比較成熟的應用,如:圖像識別、語音識別等。
而現實世界中又有很多現象需要多欄位的分類數據來描述,那如果用深度學習來處理多欄位的分類數據,效果又會是怎樣呢?本文通過用戶在線廣告點擊行為預測的應用實例來向大家展示深度學習在多欄位分類數據的應用效果。
文章將詳細介紹了FM和FNN算法在處理多值分類數據方面的優勢,並把這兩種算法與神經網絡在特徵變量處理方面的差異做了對比,最後通過一個用戶在線廣告點擊行為預測的實例比較了LR、FM、FNN、CCPM、PNN-I等不同算法的實際預測效果。
深度學習目前的應用現狀深度學習目前比較成熟的應用主要集中在:機器視覺、語音識別、自然語言處理這些課題上,這些應用領域的共同特點是它們的數據集是連續的。比如:圖形識別中每個圖層與它之後的圖層局部都有比較緊密的聯繫;語音信息前後也有比較強的相關關係;在自然語言處理中每個WORD雖然是離散的,但是其前後的數據也是強相關的。對於這種類型的數據,人可以輕易理解這些數據,但是一般的機器學習算法處理這種數據卻是非常困難的,而深度學習卻可以很好的從底層逐層學習出高層的模式,這就是深度學習的優勢。
而今天我們要了解的數據 Multi-field Categorical Data與上述這些連續或是序列數據是有區別的,Multi-field Categorical Data會有多種不同的欄位,比如:[Weekday=Wednesday, Gender=Male, City=London,…],那這樣我們就比較難識別這些特徵之間的關係。給大家舉例一個直觀的場景:比如現在有一個鳳凰網站,網站上面有一個迪斯尼廣告,那我們現在想知道用戶進入這個網站之後會不會有興趣點擊這個廣告,類似這種用戶點擊率預測在信息檢索領域就是一個非常核心的問題。
那一般普遍的做法就是通過不同的域來描述這個事件然後預測用戶的點擊行為,而這個域可以有很多,比如:
• Date: 20160320• Hour: 14• Weekday: 7• IP: 119.163.222.*• Region: England• City: London• Country: UK• Ad Exchange: Google• Domain: yahoo.co.uk• URL: http://www.yahoo.co.uk/abc/xyz.html• OS: Windows• Browser: Chrome• Ad size: 300*250• Ad ID: a1890• User tags: Sports, Electronics
可能我們還會有這些用戶的身份信息,比如該用戶是學生等,那我們可以通過這些多維度的取值來描述這個事件然後來預測用戶的點擊行為。回到剛才的那個場景,那麼什麼樣的用戶會點擊這個廣告呢?我們可能猜想:目前在上海的年輕的用戶可能會有需求,如果今天是周五,看到這個廣告,可能會點擊這個廣告為周末做活動參考。那可能的特徵會是:[Weekday=Friday, occupation=Student, City=Shanghai],當這些特徵同時出現時,我們認為這個用戶點擊這個迪斯尼廣告的概率會比較大。
這種場景在WEB Search、廣告展示、推薦系統領域會經常遇到,比如Google和百度在做廣告點擊率預測時,他們人工地把這種分類數據做四階或是五階的結合特徵,最終在一個超級大的數據集上去學習特徵,而這個過程需要耗費大量人力去做特徵處理,本次要講的就是應用深度學習去直接學習這類數據特徵。
傳統的做法是應用One-Hot Binary的編碼方式去處理這類數據,例如現在有三個域的數據X=[Weekday=Wednesday, Gender=Male, City=Shanghai],其中 Weekday有7個取值,我們就把它編譯為7維的二進位向量,其中只有Wednesday是1,其他都是0,因為它只有一個特徵值;Gender有兩維,其中一維是1;如果有一萬個城市的話,那City就有一萬維,只有上海這個取值是1,其他是0。
那最終就會得到一個高維稀疏向量。但是這個數據集不能直接用神經網絡訓練:如果直接用One-Hot Binary進行編碼,那輸入特徵至少有一百萬,第一層至少需要500個節點,那麼第一層我們就需要訓練5億個參數,那就需要20億或是50億的數據集,而要獲得如此大的數據集基本上是很困難的事情。
FM、FNN以及PNN模型因為上述原因,我們需要將非常大的特徵向量嵌入到低維向量空間中來減小模型複雜度,而FM(Factorisation machine)無疑是被業內公認為最有效的embedding model:
第一部分仍然為Logistic Regression,第二部分是通過兩兩向量之間的點積來判斷特徵向量之間和目標變量之間的關係。比如上述的迪斯尼廣告,occupation=Student和City=Shanghai這兩個向量之間的角度應該小於90,它們之間的點積應該大於0,說明和迪斯尼廣告的點擊率是正相關的。這種算法在推薦系統領域應用比較廣泛。
那我們就基於這個模型來考慮神經網絡模型,其實這個模型本質上就是一個三層網絡:
它在第二層對向量做了乘積處理(比如上圖藍色節點直接為兩個向量乘積,其連接邊上沒有參數需要學習),每個field都只會被映射到一個 low-dimensional vector,field和field之間沒有相互影響,那麼第一層就被大量降維,之後就可以在此基礎上應用神經網絡模型。
我們用FM算法對底層field進行embeddding,在此基礎上面建模就是FNN(Factorisation-machine supported Neural Networks)模型:
模型底層先用FM對經過one-hot binary編碼的輸入數據進行embedding,把稀疏的二進位特徵向量映射到 dense real 層,之後再把dense real 層作為輸入變量進行建模,這種做法成功避免了高維二進位輸入數據的計算複雜度。
那我們把這些模型應用到iPinYou數據集上,模型效果如下所示:
那我們可以看出FNN的效果優於LR和 FM 模型。我們進一步考慮FNN與一般的神經網絡的區別是什麼?大部分的神經網絡模型對向量之間的處理都是採用加法操作,而FM 則是通過向量之間的乘法來衡量兩者之間的關係。我們知道乘法關係其實相當於邏輯「且」的關係,拿上述例子來說,只有特徵是學生而且在上海的人才有更大的概率去點擊迪斯尼廣告。但是加法僅相當於邏輯中「或」的關係,顯然「且」比「或」更能嚴格區分目標變量。
所以我們接下來的工作就是對乘法關係建模。可以對兩個向量做內積和外積的乘法操作:
可以看出對外積操作得到矩陣而言,如果該矩陣只有對角線上有值,就變成了內積操作的結果,所以內積操作可以看作是外積操作的一種特殊情況。通過這種方式,我們就可以衡量連個不同域之間的關係。
在此基礎之上我們搭建的神經網絡如下所示:
首先對輸入數據進行embedding處理,得到一個low-dimensional vector層,對該層的任意兩個feature進行內積或是外積處理就得到上圖的藍色節點,另外一種處理方式是把這些Feature直接和1相乘複製到上一層的Z中,然後把Z和P接在一起就可以作為神經網絡的輸入層,在此基礎上我們就可以應用神經網絡去模型了。
那麼對特徵做內積或是外積處理就會產生一個複雜度的問題:假設有60個域,那麼把這些feature做內積處理,就會產生將近1000多個元素的矩陣,如此就會產生一個很大的weight矩陣,那我們需要學習的參數就很多,那我們的數據集可能就滿足不了這個要求。那接下來的做法就是:由於weight矩陣是個對稱陣,我們可以用factorization來處理這個對稱陣,把它轉換為一個小矩陣乘以這個小矩陣的轉置,這樣就會大大減少我們所需要訓練的參數:
模型效果評估接下來我們可以看一下模型在兩個不同數據集上面的應用效果:
第一個數據集Criteo Terabyte Dataset:這個數據集有13個數值變量,26個類別變量,我們節選了8天將近300GB的數據量,前7天作為訓練集,由於這個數據集正樣本過少,我們對負樣本做了欠抽樣的處理。
第二個數據集iPinYou Dataset:共有24個類別變量,我們截取了連續10天的數據量。
我們應用的比較算法有:LR (Logistic regression)、FM(Factorisation machine)、FNN(Factorisation machine supported neural network)、CCPM(Convolutional click prediction model)、PNN-I(Inner product neural network)、PNN-II(Outer product neural network)、PNN-III(Inner&outer product ensembled neural network)
評估模型我們主要看的是以下幾個指標:
Area under ROC curve (AUC):非常關鍵的指標
Log loss:該值越小,說明點擊率預估的準確度越高
Root mean squared error (RMSE):值越大模型效果越好,作為參考
Relative Information Gain (RIG):值越大模型效果越好
最終各個模型的效果如下:
我們主要看的是AUC這個指標,業內一般模型提升2個百分點就會帶來巨大收益,可以看到從LR到PNN,模型效果提升了近5個百分點,由此可見FM、FNN、PNN這幾類模型效果比LR顯著要好。
其他的實驗結果,比如dropout,業內認為0.5是比較好的值,我們PNN-II模型的實驗結果也證明了這一點:
我們還測試了最佳的隱層層數,隱層層數並不是越多越好,層數過多的模型會出現過擬合效應,這個隱層數是跟數據集大小相關,一般而言數據集越大所需要的隱層就越多,我們這裡模型顯示的最佳隱層是3層:
我們同時在小數據集iPinYou Dataset上看了一下各模型的穩健性,發現PNN-1和PNN-2模型效果超過其他模型一直處在穩步上升的過程:
之後我們還學習了神經網絡不同層級節點數目的分布,一下有四種不同的層級節點分布形態,結果發現constant 和 diamond 這兩種形態的表現效果比較好,increasing形態效果最差,說明我們不應該在第一層就過度壓縮特徵向量:
我們還對比了不同隱層節點的Activation Functions的效果,結果發現tanh 和 relu明顯優於sigmoid:
小結深度學習在多欄位分類數據集上也能取得顯著的應用效果;
通過內積和外積操作找到特徵之間的相關關係;
在廣告點擊率的預測中,PNN效果優於其他模型。
PPT下載:[用戶在線廣告點擊行為預測的深度學習模型] by 張偉楠
本分享涉及的研究工作由張偉楠與其在上海交通大學和倫敦大學學院的同事共同完成,文章由攜程技術中心(微信公號ctriptech)侯淑芳根據演講內容整理,並經過演講者本人確認和授權發布。
責編:周建丁(zhoujd@csdn.net)
CCAI 2016中國人工智慧大會將於8月26-27日在京舉行,AAAI主席,多位院士,MIT、微軟、大疆、百度、滴滴專家領銜全球技術領袖和產業先鋒打造國內人工智慧前沿平臺,6+重磅大主題報告,4大專題論壇,1000+高質量參會嘉賓,探討人機互動、機器學習、模式識別及產業實戰。門票限時八折優惠中(http://huiyi.csdn.net/activity/product/goods_list?project_id=3023)。