隨着深度神經網絡在語音和圖像識別上取得的巨大成功,AlphaGo
打敗人類圍棋頂尖高手,以深度網絡爲基礎的人工智能迎來第三次高潮。與此同時互聯網所面臨的信息超載問題愈演愈烈,其中個性化推薦是重要的信息過濾手段。本篇文章以短視頻爲切入點,探索如何將深度模型應用於個性化推薦場景。這樣的模型「深度」的理解用戶偏好的同時又能保持必定的推理效率。算法
咱們團隊主要業務場景在美拍潮流短視頻社區,美拍首頁以雙列流形式展現,也就是熱門短視頻場景。若用戶看完當前熱門短視頻意猶未盡,想看更多類似內容時可向下滑動,即上下滑業務場景。網絡
咱們處在一個信息超載的時代,短視頻這種新媒體平臺也不例外。隨着短視頻製做與發佈的便捷性提升,每分每秒會有大量的短視頻產生,面臨這樣的信息超載狀況,個性化推薦服務愈顯重要。ide
個性化推薦分爲多個階段。在召回階段評估出用戶可能感興趣的內容,過濾掉用戶不感興趣的內容。排序階段對召回的結果作打分服務,到最後的預估階段綜合考慮新穎性、多樣性、準確性、實時性等多方面因素,爲用戶呈現推薦結果。接下來的內容將圍繞排序階段展開。排序階段有多種策略模型:線性模型 LR、非線性模型 GBDT、NN 模型,咱們之因此選擇 NN 模型,緣由在於它有着更大的想象空間與發揮空間。學習
如何獲得一個很好的深度模型 DNN?咱們不可能每作一次調整就嘗試應用於線上服務,而是須要經過一些指標來快速衡量模型是否符合預期。那麼咱們從兩個業務需求點出發肯定兩個指標,一個指標用來衡量模型的擬合能力 Metric,另外一個指標用來衡量模型的推理效率 Efficiency ,簡單來講兩個字:準和快。優化
那爲何須要交叉?先來看兩個 Cross 的例子。試想這樣一種場景:當用戶打開美拍的時候呈現了一個視頻,若是該視頻的主題或標籤是化妝類,能夠想象當用戶是女性時點擊播放機率要遠遠大於男性用戶,這就是二階交叉一個例子。同理能夠拓展到三階交叉,在保留剛剛前兩個特徵(性別:女,標籤:化妝)的前提條件下,再引入年齡特徵:某個年齡段的用戶對這種類型的視頻的播放的概率要大於其它用戶,這就是所謂的三階交叉。this
注:Cross 即特徵交叉,符號 fModel_BI 表 Cross 特徵交叉。
以下圖所示,紅色區域表示優化目標在於模型的擬合能力 Metric,而到了後期優化目標則轉變爲模型的推理效率 Efficiency。編碼
LR 模型是很典型的寬而淺的模型,這樣的模型有一個特色:當它使用編碼方式爲 One-hot 時採用手動特徵交叉。人工智能
優點:易於使用spa
模型特別淺,模型推理效率高3d
劣勢:
線性模型對非線性場景的擬合能力較差
手動特徵交叉
--成本高,當對一個業務特別熟悉的時候能夠對這個業務提取出比較有效的一些特徵交叉,若切換一個新的業務則須要花大量的時間成本去熟悉新業務,才能提取出有效的交叉特徵。
--可擴展性差,實際業務場景中隨着特徵維度的激增,有效提取全部的交叉特徵的困難度也會隨之而增加。
--擬合能力差,以上文中所舉的性別與標籤的交叉示例,這是一個顯而易見的交叉,可是在實際業務中不少交叉是隱性、不可見的,很難用手動的方式把它們提取出來。
對於手動特徵交叉存在這樣的缺陷咱們思考可否從模型層面自動捕捉特徵交叉,因而咱們引入了 FM 模型。
FM 模型的結構以下圖所示,粉色部分表示原來的 LR 模型部分,藍色部分表示特徵交叉的學習,深紅色節點表示性別與標籤的二階交叉學習。
咱們每次對模型作一次演化時會評估離線指標,也就是模型的擬合能力。經過下圖的效果等級表能夠看出:相對於 LR 模型, FM 模型離線指標有一個很好的提高。
另一方面,雖然 FM 模型克服了手動特徵交叉的缺陷,但它依然屬於線性模型的家族。因而咱們引入了 NFM 模型。
從名字上看 NFM 模型在 FM 模型以前加了一個「Neural」字段,反映在 NFM 模型的結構圖中很是直觀。咱們在 BI-interaction layer 後接入了一個三層的 FC 全鏈接層(模型結構圖的右側依然是 LR 模型),經過這種方式提高了模型的非線性擬合能力。可是思考模型自己時會發現,NFM 模型與 FM模型同樣依然只能捕捉二階交叉,沒法捕捉三階甚至是更高階的交叉。
出於捕捉更高階交叉的目的,咱們引入了 DCN 模型,即 Deep Cross Network 。
DCN 模型與 NFM 模型除了Cross 部分結構比較相似。DCN 模型經過控制 Cross 層數來捕捉特定階數的交叉,一層 Cross 能夠捕捉二階交叉,而二層 Cross 能夠捕捉三階交叉......以此類推。
接下來經過對 Cross 層的展開來演示如何捕捉二階交叉和三階交叉。
二階交叉捕捉的是:CTR(性別:女,標籤:化妝) > CTR(性別:男,標籤:化妝)。三階交叉捕捉的是:CTR(性別:女,標籤:化妝,年齡:18 ~ 36) > CTR(性別:女,標籤:化妝,年齡:12 ~ 18)。
學習二階交叉時捕捉的是 x1=x0 x0T 。
捕捉三階交叉時捕捉的是 x2=x0 x1T。
經過這種循環的方式將 N 階交叉擴展到 N+1 階交叉。另外實現 DCN 模型的時候須要注意:根據秩 1 矩陣的屬性,先計算 xt 乘以 w 的部分,假設 embedding 之後向量長度爲 2000,那麼空間複雜度就能由 2000*2000 優化爲 2000。經過這樣的實現機制有效避免了參數空間過大所帶來的 OOM 。
從 FM 模型到 NFM 模型,增強了模型的非線性擬合能力;從 NFM 模型到 DCN 模型,讓模型從僅僅捕捉二階交叉到捕捉更高階交叉。在下圖能夠看到 NFM vs FM 和 DCN vs NFM 的提高狀況。
從 LR 模型到 FM 模型、NFM 模型、再到 DCN 模型,咱們把重心放在模型擬合能力的提高上,相應的取得了階段性的成果。但魚與熊掌難以兼得,在提高模型擬合能力的同時不可避免地提高了模型的複雜度,致使了模型推理效率的降低。
接下來考慮在保持模型擬合能力的同時(在模型擬合能力降低的可接受範圍內)提高模型的推理效率。首先分析 NFM 模型推理效率低下的緣由在於 Embedding 層,Embedding 層的超高維度特徵的查表過程是一個費時的過程,從而考慮將 Embedding 層替換爲經典的 FC 層。但這樣的簡單替換可能帶來兩個問題:超大參數和過大模型。
問題的源頭就在於不論什麼特徵都統一編碼爲固定長度的向量(如 128),那麼這種方式在編碼空間上是不是一種浪費呢?因而咱們引入特徵分域,按照特徵分域區分編碼長度。經過特徵分域的方式有效擴展了網絡可支持的特徵維度,克服了超大參數和過大模型的問題,這種添加特徵分域和 FC 輸出層的模型,即是 xNFM 模型。
在優化以後作一個階段性的分析,發現 xNFM 模型的推理效率是 NFM 模型的兩倍。然而在這個模型的推廣過程當中依然會遇到瓶頸,畢竟衆多的分域 FC 也在必定程度帶來了模型複雜度的提高。此時咱們引入了 xNFM_Sparse 模型。
xNFM_Sparse 模型從 FC Embedding 迴歸到樸素的 Embedding 查表方式,卻單獨實現了一套 Sparse Embedding 方式(一種高效的 Embedding 方式),同時它融入了一部分 BI-interaction 運算,提高模型的前向推理效率。對比 xNFM_Sparse 模型與 xNFM 模型得出:Metric 基本保持不變,但推理效率 Efficiency 再次獲得了加倍提高。
上文中爲你們介紹瞭如何一步步優化模型的擬合能力和模型的推理效率,接下來對已有的模型作一個總結。
咱們的模型跨越 4 個方面:
不一樣於卷積神經網絡 CNN 對圖像的語義理解,個性化推薦場景中的特徵一般高維度且十分稀疏,須要有效的 Embedding 手段來處理這種問題。對於 LR 模型和 MLP 模型須要經過 Wide 模型捕捉記憶性,也就是 Wide 部分長處在於學習樣本中的高頻部分,其優勢是模型的記憶性好,對於樣本中出現過的高頻低階特徵可以用少許參數學習。與此同時也須要 Deep 模型去捕捉 Generalization 泛化性,Deep 部分的長處在於學習樣本中的長尾部分,優勢是泛化能力強,對於少許出現過的樣本甚至沒有出現過的樣本都能作出預測(非零的 embedding 向量)。而最後的 Cross 部分經過模型自動去捕捉二階,三階,甚至是更高階的交叉,也能夠將 MLP 概括爲隱性特徵交叉的捕捉,而將 Cross 概括爲對顯性特徵交叉的捕捉。
回顧深度模型演變歷程,在最開始的 LR, Wide & Deep 階段,咱們經過手動交叉的方式去捕捉交叉特性,同時 Wide & Deep 也有捕捉隱性特徵交叉;到了FM、NFM、DeepFM 階段,咱們可以捕捉顯性的二階交叉;再到了 DCN,咱們經過網絡層數控制交叉階數,捕捉元素級別的顯性高階交叉,直至本文爲作展開的 xDeepFM,捕捉向量級別的顯性高階交叉。
雖然上文花了這麼多的篇幅來介紹深度 FM 系列的模型,但 FM 不是咱們的所有重心所在,它更像是摩天大樓的一個地基而已。
「This is not the end, this is just the beginning.」
以深度 FM 模型爲起點,分別從業務和模型兩個層面思考它的不足以及如何改善。首先是業務層面,單純的 DNN 容易帶來以下兩個問題:
新出現的用戶或者視頻,其相關行爲特徵少,已「校準」好的模型對 於此類用戶或者視頻,表徵推理能力差
單純的數值統計特徵表徵能力有限,用戶行爲都是已視覺產生先入爲主的印象,視覺信息更容易對用戶產生吸引力
面對這兩個問題咱們引入多模態數據融合,模型上也融合了多種模型的優點。保留 FM 以下優點的同時引入 CNN 與 RNN / LSTM。
1.有效的 Embedding 技術應對高維,稀疏特徵
2.非線性表徵能力,對隱性交叉的有效捕捉
3.對顯性交叉的有效捕捉
其中 CNN 可以有效的捕捉用戶的視覺維度特徵。同時對於新出現的視頻,即便沒有出如今訓練數據中,CNN 也能作很好的推理。而 RNN / LSTM 則促進了有效學習用戶的行爲序列。
從模型自己角度出發,DNN 這樣的模型有它固有的優點以下:
優秀的數據擬合能力,多種業務下state-of-the-art大規模的隨機優化算法簡單而有效。
但 DNN 也有它固有的缺陷:
超參數過多(諸如學習率,正則化參數等等),難以學習
採用點估計,沒法考慮到參數的不肯定性
而貝葉斯推理能有效克服這些缺陷。貝葉斯推理採用少許的先驗分佈及參數估計,充分考慮到了參數的不肯定性。所以咱們引入在線貝葉斯深度學習,保留 DNN 模型優勢的同時客服它的不足,且模型能夠在線實時更新,捕捉實時的用戶反饋。