內容來源:2018 年 01 月 05 日,資深演算法專家張俊林在“2018 移動技術創新大會”進行《深度學習在CTR預估業務中的應用》演講分享。IT 大咖說(微信id:itdakashuo)作為獨家視訊合作方,經主辦方和講者審閱授權釋出。
閱讀字數:3430 | 9分鐘閱讀
摘要
本次演講主要分享深度學習在CTR預估業務中的應用,分別介紹了FM模型以及如何解決深度學習中CTR模型所面臨的各種問題。
CTR任務的應用
CTR任務描述其實很簡單:給定一位使用者以及一個商品或者電影等,再配合上下文,比如時間地點,最後預測使用者是否會點選該廣告或電影。CTR任務典型的應用場景有計算廣告、推薦系統、資訊流排序。
CTR任務例子
上圖的CTR任務例子對應著應用場景中的推薦系統——電影推薦。機器學習中最核心的是訓練資料,它分為輸入資料(對應圖中的Feature vector x),預測資料(對應圖中的Target y)。在這個推薦系統中Feature vector x的每一行表示一個使用者的各種特徵(圖中不同的顏色區域表示不同特徵),通過特徵資訊可以預測出target y數值,target y數值越高表示越感興趣。
CTR任務的特點
CTR任務有三個特點,一是包含大量離散特徵,上圖中的user ID和movie ID就是離散特徵,與之對的是連續特徵。二是有大量高緯度稀疏特徵,比如假設一個網站有10億使用者,這意味著單單user特徵就有10億度。三是特徵工程,確切說是特徵組合,它對CTR任務效果起到非常關鍵的作用。
Factorization Machine模型
線性模型
在講Factorization Machine模型之前這裡先說下線性模型,它是機器學習中最簡單的一個模型,公式是圖中的Linear,Xi表示有哪些特徵,是分佈特徵,Wi是特徵權重。在計算廣告中是使用最多的則是下方的LR模型,它對比Linear模型區別在於多了非線性變換。LR模型優勢在於簡單,能很容易看出每個特徵所代表的含義,同時也很容易擴充套件,缺點則是難以捕獲特徵組合。
上圖是針對LR模型缺陷的改進版本,公式的前半部分不變,後面增加了任意兩個特徵的組合,也就是XiXj, Wij是提取出放入新特徵。這樣就直接將兩兩組合特徵引入到模型中,但是還是存在另一個問題——組合特徵泛化能力弱。機器學習中泛化指的是模型在訓練的時候如果有未曾碰到過的資料,那麼在使用時碰到該資料預測效果就會不佳。在該模型中對於訓練時未碰到過的XiXj特徵組合,其對應的Wij就一定是0。
FM模型
FM模型著手解決的就是上文改進版本泛化能力弱的問題,重點在於標紅的地方,之前的模型中Wij是一個數值,而現在的<Vi, Vj>是兩個向量的乘積。Vi和Vj表示針對每個特徵所取的一維向量,通過他們的乘積來表示特徵重要程度。
由於FM模型針對每個特徵都會取一維向量,所以即使在使用的時候出現沒有見過的組合,也可以根據特徵的一維向量進行計算。這就是FM模型泛化能力強的原因。
深度學習CTR模型
深度學習解決CTR任務的幾個關鍵問題
首先是大量離散特徵的表示問題,典型的就是如何將向user ID、性別之類的資料輸入到神經網路中並讓它理解。第二是如何快速處理高緯度稀疏特徵。第三是如何從手工到自動,簡單來說就是如何擺脫人工尋找特徵的過程,轉而使用機器完成。最後是如何捕獲和表達兩兩組合特徵以及多組組合特徵。
離散特徵處理
深度學習中特徵分為兩類,一類是連續特徵,比如收入、身高、體重等這類有著含義的特徵。另一類是離散特徵,比如職業、性別、畢業學校等一些神經網路無法直接理解的特徵。
對離散特徵的處理一種最直觀的思路是使用Onehot表達。上圖是用Onehot表達的三個特徵,分別是星期、專案和產品ID。這裡星期被表示為一個七維向量,向量中每一位對應一星期中的一天,比如星期五的時候第五位為1,其他為都為0。性別和產品ID的表示方式同樣如此,通過將這三個特徵的Onehot表達組合起來就得到了輸入,這樣形式的輸入神經網路是可以識別的。
Onehot表達雖然很直觀,但是並不能實際應用。我們計算一下就會明白了,通過Onehot表達的輸入層一般來說會有1000萬節點,另外神經網路還有隱層神經元,它通過全連線的方式與輸入層連線,也就是每個隱層的神經元與輸入層的任意神經元都會有連線。這裡假設神經元有500個節點,這樣與輸入層一組合就會得到50億引數,很顯然如此多的引數對於機器學習來說很難選出一個好的模型。
解決Onehot所面臨的問題的基本思路是避免全連結,分而治之(從Onehot到Dense Vector)。儘管輸入層的維度很多,但是種類有限,而我們可以將每個種類分開,讓輸入層只和隱層神經元的一小部分連線,這樣就解決了全連結造成的引數過多的問題。
這張圖表示的就是優化之後的最終結構——DNN結構,也是典型的深度學習神經網路模型,它是目前所有深度學習方案中最核心的一部分。
之前討論的是如何解決離散特徵輸入問題,那麼如何將連續特徵也加入進來?其實有兩種方案,一是新增到Dense層,二是新增到上方的隱層中。
低階組合單獨建模
前面提到過特徵組合對CTR很關鍵,而DNN結構的兩個隱層網路已經實現了低階和高階特徵組合,這是由於Dense層和上方的兩個隱層是全連結的,使得上層要獲取的兩個特徵在隱層一定會發生互動作用。
雖然特徵組合已經被實現,但是我們還想做的更進一步,將低階特徵組合和高階特徵組合分開。要想將它們分開首先要設計一個低階組合的神經網路模組,這個模組需要滿足三個要求。第一它要表示兩兩特徵組合,第二要具有神經網路的表現形式,第三要能夠體現FM思想,即兩兩特徵組合中每個特徵體現為一個一維向量。
低階組合模組被分離出來後,面臨的下一個問題是如何與原先的模型組合,對此也有兩種典型組合方式。
第一種組合方式是並行結構,目前很多模型都採用這種方式,包括DeepFM、Deep&Cross、Wide&Deep等。
第二種組合方式是序列結構,這種模式的實現有PNN模型、NFM模型、AFM模型。
模型選擇與訓練優化
對於wide & Deep模型、序列結構模型以及類似FNN的模型等,它們的Dense層都需要預訓練,這種情況下用FM初始化Onehot到Dense層的對映效能能夠明顯提升。
一般的隱層結構是梯形的,即上層最少,中間次之,底層最多。但是經過試驗發現平行結構或者菱形結構效果會更好。關於隱層的層深,一般建議是兩到三層。