天天看點

詳解深度學習中推薦系統的經典模型

作者:華為雲開發者聯盟

本文分享自華為雲社群《深度學習應用篇-推薦系統[12]:經典模型-DeepFM模型、DSSM模型召回排序政策以及和其他模型對比》(「連結」),作者:汀丶。

DeepFM模型

1.1模型簡介

CTR預估是目前推薦系統的核心技術,其目标是預估使用者點選推薦内容的機率。DeepFM模型包含FM和DNN兩部分,FM模型可以抽取low-order(低階)特征,DNN可以抽取high-order(高階)特征。低階特征可以了解為線性的特征組合,高階特征,可以了解為經過多次線性-非線性組合操作之後形成的特征,為高度抽象特征。無需Wide&Deep模型人工特征工程。由于輸入僅為原始特征,而且FM和DNN共享輸入向量特征,DeepFM模型訓練速度很快。

注解:Wide&Deep是一種融合淺層(wide)模型和深層(deep)模型進行聯合訓練的架構,綜合利用淺層模型的記憶能力和深層模型的泛化能力,實作單模型對推薦系統準确性和擴充性的兼顧。

該模型的Paddle實作請參考連結:PaddleRec版本(「連結」)

1.2DeepFM模型結構

為了同時利用low-order和high-order特征,DeepFM包含FM和DNN兩部分,兩部分共享輸入特征。對于特征i,标量wi是其1階特征的權重,該特征和其他特征的互動影響用隐向量Vi來表示。Vi輸入到FM模型獲得特征的2階表示,輸入到DNN模型得到high-order高階特征。

詳解深度學習中推薦系統的經典模型

DeepFM模型結構如下圖所示,完成對稀疏特征的嵌入後,由FM層和DNN層共享輸入向量,經前向回報後輸出。

詳解深度學習中推薦系統的經典模型

為什麼使用FM和DNN進行結合?

  • 在排序模型剛起步的年代,FM很好地解決了LR需要大規模人工特征交叉的痛點,引入任意特征的二階特征組合,并通過向量内積求特征組合權重的方法大大提高了模型的泛化能力。
  • 标準FM的缺陷也恰恰是隻能做二階特征交叉。

是以,将FM與DNN結合可以幫助我們捕捉特征之間更複雜的非線性關系。

為什麼不使用FM和RNN進行結合?

  • 如果一個任務需要處理序列資訊,即本次輸入得到的輸出結果,不僅和本次輸入相關,還和之前的輸入相關,那麼使用RNN循環神經網絡可以很好地利用到這樣的序列資訊
  • 在預估點選率時,我們會假設使用者每次是否點選的事件是獨立的,不需要考慮序列資訊,是以RNN于FM結合來預估點選率并不合适。還是使用DNN來模拟出特征之間的更複雜的非線性關系更能幫助到FM。

1.3FM

FM(Factorization Machines,因子分解機)最早由Steffen Rendle于2010年在ICDM上提出,它是一種通用的預測方法,在即使資料非常稀疏的情況下,依然能估計出可靠的參數進行預測。與傳統的簡單線性模型不同的是,因子分解機考慮了特征間的交叉,對所有嵌套變量互動進行模組化(類似于SVM中的核函數),是以在推薦系統和計算廣告領域關注的點選率CTR(click-through rate)和轉化率CVR(conversion rate)兩項名額上有着良好的表現。

為什麼使用FM?

  • 特征組合是許多機器學習模組化過程中遇到的問題,如果對特征直接模組化,很有可能忽略掉特征與特征之間的關聯資訊,一次可以通過建構新的交叉特征這一特征組合方式提高模型的效果。FM可以得到特征之間的關聯資訊。
  • 高維的稀疏矩陣是實際工程中常見的問題,并且直接導緻計算量過大,特征權值更新緩慢。試想一個10000100的表,每一列都有8中元素,經過one-hot編碼之後,會産生一個10000800的表。

而FM的優勢就在于對這兩方面問題的處理。首先是特征組合,通過兩兩特征組合,引入交叉項特征(二階特征),提高模型得分;其次是高維災難,通過引入隐向量(對參數矩陣進行分解),完成特征參數的估計。

FM模型不單可以模組化1階特征,還可以通過隐向量點積的方法高效的獲得2階特征表示,即使交叉特征在資料集中非常稀疏甚至是從來沒出現過。這也是FM的優勢所在。

詳解深度學習中推薦系統的經典模型

單獨的FM層結構如下圖所示:

詳解深度學習中推薦系統的經典模型

1.4DNN

該部分和Wide&Deep模型類似,是簡單的前饋網絡。在輸入特征部分,由于原始特征向量多是高緯度,高度稀疏,連續和類别混合的分域特征,是以将原始的稀疏表示特征映射為稠密的特征向量。

假設子網絡的輸出層為:

詳解深度學習中推薦系統的經典模型

DNN網絡第l層表示為:

詳解深度學習中推薦系統的經典模型

再假設有H個隐藏層,DNN部分的預測輸出可表示為:

詳解深度學習中推薦系統的經典模型

DNN深度神經網絡層結構如下圖所示:

詳解深度學習中推薦系統的經典模型

1.5Loss及Auc計算

DeepFM模型的損失函數選擇Binary_Cross_Entropy(二值交叉熵)函數

詳解深度學習中推薦系統的經典模型

對于公式的了解,y是樣本點,p(y)是該樣本為正樣本的機率,log(p(y))可了解為對數機率。

Auc是Area Under Curve的首字母縮寫,這裡的Curve指的就是ROC曲線,AUC就是ROC曲線下面的面積,作為模型評價名額,他可以用來評價二分類模型。其中,ROC曲線全稱為受試者工作特征曲線 (receiver operating characteristic curve),它是根據一系列不同的二分類方式(分界值或決定阈),以真陽性率(敏感性)為縱坐标,假陽性率(1-特異性)為橫坐标繪制的曲線。

可使用paddle.metric.Auc()進行調用。

可參考已有的資料:機器學習常用評估名額

1.6與其他模型的對比

詳解深度學習中推薦系統的經典模型

如表1所示,關于是否需要預訓練,高階特征,低階特征和是否需要特征工程的比較上,列出了DeepFM和其他幾種模型的對比。DeepFM表現更優。

詳解深度學習中推薦系統的經典模型

如表2所示,不同模型在Company*資料集和Criteo資料集上對點選率CTR進行預估的性能表現。DeepFM在各個名額上表現均強于其他模型。

參考文獻

[IJCAI 2017]Guo, Huifeng,Tang, Ruiming,Ye, Yunming,Li, Zhenguo,He, Xiuqiang. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction(「連結」)

2.DSSM

以搜尋引擎和搜尋廣告為例,最重要的也最難解決的問題是語義相似度,這裡主要展現在兩個方面:召回和排序。

在召回時,傳統的文本相似性如 BM25,無法有效發現語義類 query-Doc 結果對,如"從北京到上海的機票"與"攜程網"的相似性、“快遞軟體"與"菜鳥裹裹"的相似性。

在排序時,一些細微的語言變化往往帶來巨大的語義變化,如"小寶寶生病怎麼辦"和"狗寶寶生病怎麼辦”、“深度學習"和"學習深度”。

DSSM(Deep Structured Semantic Models)為計算語義相似度提供了一種思路。

該模型的Paddle實作請參考連結:PaddleRec版本(PaddleRec/models/match/dssm at master · PaddlePaddle/PaddleRec · GitHub)

2.1DSSM模型結構

DSSM(Deep Structured Semantic Models)的原理很簡單,通過搜尋引擎裡 Query 和 Title 的海量的點選曝光日志,用 DNN 把 Query 和 Title 表達為低緯語義向量,并通過 cosine 距離來計算兩個語義向量的距離,最終訓練出語義相似度模型。該模型既可以用來預測兩個句子的語義相似度,又可以獲得某句子的低緯語義向量表達。

DSSM 從下往上可以分為三層結構:輸入層、表示層、比對層

詳解深度學習中推薦系統的經典模型

2.1.1 輸入層

輸入層做的事情是把句子映射到一個向量空間裡并輸入到 DNN 中,這裡英文和中文的處理方式有很大的不同。

英文

  • 英文的輸入層處理方式是通過word hashing。舉個例子,假設用 letter-trigams 來切分單詞(3 個字母為一組,#表示開始和結束符),boy 這個單詞會被切為 #-b-o, b-o-y, o-y-#
  • 這樣做的好處有兩個:首先是壓縮空間,50 萬個詞的 one-hot 向量空間可以通過 letter-trigram 壓縮為一個 3 萬維的向量空間。其次是增強範化能力,三個字母的表達往往能代表英文中的字首和字尾,而字首字尾往往具有通用的語義。

這裡之是以用 3 個字母的切分粒度,是綜合考慮了向量空間和單詞沖突:

詳解深度學習中推薦系統的經典模型

如上表,以 50 萬個單詞的詞庫為例,2 個字母的切分粒度的單詞沖突為 1192(沖突的定義:至少有兩個單詞的 letter-bigram 向量完全相同),而 3 個字母的單詞沖突降為 22 效果很好,且轉化後的向量空間 3 萬維不是很大,綜合考慮選擇 3 個字母的切分粒度。

中文

中文的輸入層處理方式與英文有很大不同,首先中文分詞是個讓所有 NLP 從業者頭疼的事情,即便業界号稱能做到 95%左右的分詞準确性,但分詞結果極為不可控,往往會在分詞階段引入誤差。是以這裡我們不分詞,而是仿照英文的處理方式,對應到中文的最小粒度就是單字了。

由于常用的單字為 1.5 萬左右,而常用的雙字大約到百萬級别了,是以這裡出于向量空間的考慮,采用字向量(one-hot)作為輸入,向量空間約為 1.5 萬維。

2.1.2表示層

DSSM 的表示層采用 BOW(Bag of words)的方式,相當于把字向量的位置資訊抛棄了,整個句子裡的詞都放在一個袋子裡了,不分先後順序。

緊接着是一個含有多個隐層的 DNN,如下圖所示:

詳解深度學習中推薦系統的經典模型

用Wi表示第 i 層的權值矩陣,bi表示第 i 層的偏置項。則第一隐層向量 l2(300 維),第 二個隐層向量 l3(300 維),輸出向量 y(128 維),用數學公式可以分别表示為:

詳解深度學習中推薦系統的經典模型

用 tanh 作為隐層和輸出層的激活函數:

詳解深度學習中推薦系統的經典模型

最終輸出一個 128 維的低緯語義向量。

2.1.3 比對層

Query 和 Doc 的語義相似性可以用這兩個語義向量(128 維) 的 cosine 距離來表示:

詳解深度學習中推薦系統的經典模型

​​

通過softmax 函數可以把Query 與正樣本 Doc 的語義相似性轉化為一個後驗機率:

詳解深度學習中推薦系統的經典模型

其中 r 為 softmax 的平滑因子,D 為 Query 下的正樣本,D-為 Query 下的負樣本(采取随機負采樣),D 為 Query 下的整個樣本空間。

在訓練階段,通過極大似然估計,我們最小化損失函數:

詳解深度學習中推薦系統的經典模型

殘差會在表示層的 DNN 中反向傳播,最終通過随機梯度下降(SGD)使模型收斂,得到各網絡層的參數{Wi,bi}負樣本出現在計算softmax中,loss反向傳播隻用正樣本。

2.1.4優缺點

優點:DSSM 用字向量作為輸入既可以減少切詞的依賴,又可以提高模型的泛化能力,因為每個漢字所能表達的語義是可以複用的。另一方面,傳統的輸入層是用 Embedding 的方式(如 Word2Vec 的詞向量)或者主題模型的方式(如 LDA 的主題向量)來直接做詞的映射,再把各個詞的向量累加或者拼接起來,由于 Word2Vec 和 LDA 都是無監督的訓練,這樣會給整個模型引入誤差,DSSM 采用統一的有監督訓練,不需要在中間過程做無監督模型的映射,是以精準度會比較高。

缺點:上文提到 DSSM 采用詞袋模型(BOW),是以喪失了語序資訊和上下文資訊。另一方面,DSSM 采用弱監督、端到端的模型,預測結果不可控。

參考文獻

[1]. Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]// ACM International Conference on Conference on Information & Knowledge Management. ACM, 2013:2333-2338.

關注#華為雲開發者聯盟# 點選下方,第一時間了解華為雲新鮮技術~

華為雲部落格_大資料部落格_AI部落格_雲計算部落格_開發者中心-華為雲

繼續閱讀