感謝閱讀「美圖資料技術團隊」的原創文章,關注公眾號,後臺回覆蔣文瑞可獲取本次分享的完整 PPT,搭配文章看更清晰哦~
隨著深度神經網路在語音和影象識別上取得的巨大成功,AlphaGo 戰勝人類圍棋頂尖高手,以深度網路為基礎的人工智慧迎來第三次高潮。與此同時網際網路所面臨的資訊超載問題愈演愈烈,其中個性化推薦是重要的資訊過濾手段。
在第九期美圖技術沙龍中,來自美圖公司的蔣文瑞以短視訊為切入點,探索如何將深度模型應用於個性化推薦場景。這樣的模型“深度”的理解使用者偏好的同時又能保持一定的推理效率。
業務背景
我們團隊主要業務場景在美拍潮流短視訊社群,美拍首頁以雙列流形式展示,也就是熱門短視訊場景。若使用者看完當前熱門短視訊意猶未盡,想看更多相似內容時可向下滑動,即上下滑業務場景。
我們處在一個資訊超載的時代,短視訊這種新媒體平臺也不例外。隨著短視訊製作與釋出的便捷性提高,每分每秒會有大量的短視訊產生,面臨這樣的資訊超載情況,個性化推薦服務愈顯重要。
個性化推薦流程
個性化推薦分為多個階段。在召回階段評估出使用者可能感興趣的內容,過濾掉使用者不感興趣的內容。排序階段對召回的結果做打分服務,到最後的預估階段綜合考慮新穎性、多樣性、準確性、實時性等多方面因素,為使用者呈現推薦結果。接下來的內容將圍繞排序階段展開。排序階段有多種策略模型:線性模型 LR、非線性模型 GBDT、NN 模型,我們之所以選擇 NN 模型,原因在於它有著更大的想象空間與發揮空間。
如何得到一個很好的深度模型 DNN?我們不可能每做一次調整就嘗試應用於線上服務,而是需要通過一些指標來快速衡量模型是否符合預期。那麼我們從兩個業務需求點出發確定兩個指標,一個指標用來衡量模型的擬合能力 Metric,另一個指標用來衡量模型的推理效率 Efficiency ,簡單來說兩個字:準和快。
那為什麼需要交叉?先來看兩個 Cross 的例子。試想這樣一種場景:當使用者開啟美拍的時候呈現了一個視訊,如果該視訊的主題或標籤是化妝類,可以想象當使用者是女性時點選播放概率要遠遠大於男性使用者,這就是二階交叉一個例子。同理可以擴充到三階交叉,在保留剛剛前兩個特徵(性別:女,標籤:化妝)的前提條件下,再引入年齡特徵:某個年齡段的使用者對這種型別的視訊的播放的機率要大於其它使用者,這就是所謂的三階交叉。
注:Cross 即特徵交叉,符號 fModel_BI 表 Cross 特徵交叉。
深度模型的演進
如下圖所示,紅色區域表示優化目標在於模型的擬合能力 Metric,而到了後期優化目標則轉變為模型的推理效率 Efficiency。
1.LR
LR 模型是很典型的寬而淺的模型,這樣的模型有一個特點:當它使用編碼方式為 One-hot 時採用手動特徵交叉。
優勢:
易於使用
模型特別淺,模型推理效率高
劣勢:
線性模型對非線性場景的擬合能力較差
手動特徵交叉
成本高,當對一個業務特別熟悉的時候可以對這個業務提取出比較有效的一些特徵交叉,若切換一個新的業務則需要花大量的時間成本去熟悉新業務,才能提取出有效的交叉特徵。
可擴充套件性差,實際業務場景中隨著特徵維度的激增,有效提取所有的交叉特徵的困難度也會隨之而增長。
擬合能力差,以上文中所舉的性別與標籤的交叉示例,這是一個顯而易見的交叉,但是在實際業務中很多交叉是隱性、不可見的,很難用手動的方式把它們提取出來。
對於手動特徵交叉存在這樣的缺陷我們思考能否從模型層面自動捕捉特徵交叉,於是我們引入了 FM 模型。
2.FM
FM 模型的結構如下圖所示,粉色部分表示原來的 LR 模型部分,藍色部分表示特徵交叉的學習,深紅色節點表示性別與標籤的二階交叉學習。
我們每次對模型做一次演化時會評估離線指標,也就是模型的擬合能力。通過下圖的效果等級表可以看出:相對於 LR 模型, FM 模型離線指標有一個很好的提升。
另外一方面,雖然 FM 模型克服了手動特徵交叉的缺陷,但它依然屬於線性模型的家族。於是我們引入了 NFM 模型。
3.NFM
從名字上看 NFM 模型在 FM 模型之前加了一個「Neural」欄位,反映在 NFM 模型的結構圖中非常直觀。我們在 BI-interaction layer 後接入了一個三層的 FC 全連線層(模型結構圖的右側依然是 LR 模型),通過這種方式提升了模型的非線性擬合能力。但是思考模型本身時會發現,NFM 模型與 FM模型一樣依然只能捕捉二階交叉,無法捕捉三階甚至是更高階的交叉。
出於捕捉更高階交叉的目的,我們引入了 DCN 模型,即 Deep Cross Network 。
4.DCN
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 層。但這樣的簡單替換可能帶來兩個問題:超大引數和過大模型。
5.xNFM
問題的源頭就在於不論什麼特徵都統一編碼為固定長度的向量(如 128),那麼這種方式在編碼空間上是否是一種浪費呢?於是我們引入特徵分域,按照特徵分域區分編碼長度。通過特徵分域的方式有效擴充套件了網路可支援的特徵維度,克服了超大引數和過大模型的問題,這種新增特徵分域和 FC 輸出層的模型,便是 xNFM 模型。
在優化之後做一個階段性的分析,發現 xNFM 模型的推理效率是 NFM 模型的兩倍。然而在這個模型的推廣過程中依然會遇到瓶頸,畢竟眾多的分域 FC 也在一定程度帶來了模型複雜度的提升。此時我們引入了 xNFM_Sparse 模型。
6.xNFM_Sparse
xNFM_Sparse 模型從 FC Embedding 迴歸到樸素的 Embedding 查表方式,卻單獨實現了一套 Sparse Embedding 方式(一種高效的 Embedding 方式),同時它融入了一部分 BI-interaction 運算,提升模型的前向推理效率。對比 xNFM_Sparse 模型與 xNFM 模型得出:Metric 基本保持不變,但推理效率 Efficiency 再次得到了加倍提升。
深度模型總結
上文中為大家介紹瞭如何一步步優化模型的擬合能力和模型的推理效率,接下來對已有的模型做一個總結。
我們的模型跨越 4 個方面:
Embedding
LR
MLP
Cross
不同於卷積神經網路 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 模型優點的同時客服它的不足,且模型可以線上實時更新,捕捉實時的使用者反饋。