Deep Matrix Factorization Models for Recommender System
這篇論文作者提出了一種基于神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的矩陣分解模型。主要受到Deep Structured Semantic Models(DSSM,2013年提出主要用于web search)的啟發(fā)。模型同時(shí)考慮了用戶對(duì)物品的顯式評(píng)分和非偏好隱式反饋,然后通過兩組神經(jīng)網(wǎng)絡(luò)將用戶和物品的特征映射到一個(gè)低維空間;并通過設(shè)計(jì)的新的損失函數(shù)進(jìn)行BP。
論文代碼:https://gitee.com/youryouth/mc/tree/master/dmf

DL與推薦
深度學(xué)習(xí)現(xiàn)在已經(jīng)是各大廠推薦算法的標(biāo)配了,在深度學(xué)習(xí)領(lǐng)域主要分成兩大類:

representation learning:主要是由神經(jīng)網(wǎng)絡(luò)獲取user和item的latent vector,并使用較為簡(jiǎn)單的matching function(比如inner product,cosine similarity)計(jì)算相似度。
matching function learning:使用較為復(fù)雜的matching function來做feature interaction,而不是直接基于user和item的latent vector進(jìn)行相似度計(jì)算。

模型結(jié)構(gòu)
論文主要貢獻(xiàn)的點(diǎn)有:
提出基于深度學(xué)習(xí)的matrix factorization方法,同時(shí)使用explicit rating(顯式)和non-preference implicit feedback(隱式反饋)將user和item的信息non-linear地映射到低維空間。
提出了新的loss function,同時(shí)考慮顯式和隱式的信息。

作者直接將用戶和物品的交互矩陣作為神經(jīng)網(wǎng)絡(luò)的輸入,對(duì)于用戶,找到該用戶對(duì)應(yīng)的所有電影評(píng)分或者是否評(píng)分,即

其中第一種方案是推薦系統(tǒng)中用的最多的方案。但是這種方案默認(rèn)用戶與項(xiàng)目之間的偏愛程度一致沒有任何區(qū)別(都為1或者0)。這篇文章認(rèn)為公式2中的顯式評(píng)分對(duì)于推薦來說是更好的,因?yàn)樗鼈儽砻髁擞脩魧?duì)某一商品的偏好程度。同時(shí),如果評(píng)分未知,則標(biāo)記為0,本文將其稱為非偏好隱式反饋。
接著通過兩組神經(jīng)網(wǎng)絡(luò)將用戶和物品的特征提取到一個(gè)低維空間,并通過設(shè)計(jì)的新的損失函數(shù)進(jìn)行反向?qū)W習(xí),得到用戶和物品在低維空間的表示,再用余弦相似度來計(jì)算相似度,從而進(jìn)行推薦。對(duì)于網(wǎng)絡(luò)的輸出有

式中,為用戶
和項(xiàng)目
交互
的得分,
為網(wǎng)絡(luò)的參數(shù),F(xiàn)為將模型參數(shù)映射到預(yù)測(cè)得分的函數(shù)?;诖斯δ埽梢詫?shí)現(xiàn)為單個(gè)用戶推薦一組商品的目標(biāo),以最大限度地提高用戶的滿意度。
現(xiàn)在,下一個(gè)問題是如何定義這樣的函數(shù)F。比如在潛在因素模型(LFM)就是簡(jiǎn)單地應(yīng)用和
的點(diǎn)積來預(yù)測(cè)
,這里
和
分別表示用戶和項(xiàng)目的潛在表示。

損失函數(shù)
針對(duì)這類問題常用的誤差函數(shù)有以下兩種:
由于平方損失關(guān)注顯性評(píng)級(jí),而交叉熵?fù)p失關(guān)注隱性評(píng)級(jí)。因此這篇文章設(shè)計(jì)了一種新的損失函數(shù),將顯式評(píng)分納入交叉熵?fù)p失中,使顯式和隱式信息可以同時(shí)用于優(yōu)化。最終新?lián)p失命名為標(biāo)準(zhǔn)化交叉熵?fù)p失(簡(jiǎn)稱為nce),如下式所示:

實(shí)驗(yàn)結(jié)果
我們?cè)谒膫€(gè)推薦系統(tǒng)中廣泛使用的數(shù)據(jù)集上評(píng)估我們的模型:MovieLens 100K(ML100k)、MovieLens 10M(ML1m)、Amazon music(Amusic)、Amazon movies(Amovie)。它們可以在網(wǎng)站上公開訪問。對(duì)于MovieLens數(shù)據(jù)集,我們不處理它,因?yàn)樗呀?jīng)被過濾,而對(duì)于Amazon數(shù)據(jù)集,我們過濾了數(shù)據(jù)集,因此與MovieLens數(shù)據(jù)類似,只有那些至少有20個(gè)交互的用戶和至少有5個(gè)交互的條目被保留。

后續(xù)試驗(yàn)測(cè)試了輸入矩陣、負(fù)采樣率、網(wǎng)絡(luò)深度、最終潛在空間因子等參數(shù)對(duì)實(shí)驗(yàn)結(jié)果的影響。

代碼說明
代碼在 https://gitee.com/youryouth/mc/tree/master/dmf中。將源碼下載下來,配置好環(huán)境,直接運(yùn)行DMF.py文件即可,實(shí)驗(yàn)的截圖如下。


總結(jié)
論文提出了一種基于神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的矩陣因子分解模型。通過神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),將用戶和項(xiàng)目投射到低維向量空間中。在我們的模型中,我們充分利用了顯性評(píng)分和隱性反饋。我們提出的模型的輸入矩陣包括顯式評(píng)分和非偏好反饋。
實(shí)際上DMF網(wǎng)絡(luò)輸出的p和q就可以認(rèn)為是MF中矩陣分解得到的用戶、物品隱變量,其實(shí)是在用一種深度學(xué)習(xí)的方法來完成以往通過SVD來完成的矩陣分解過程。

拓展
關(guān)于Point wise和Pair wise,參考如下
Point wise:Pointwise排序是將訓(xùn)練集中的每個(gè)item看作一個(gè)樣本獲取rank函數(shù),主要解決方法是把分類問題轉(zhuǎn)換為單個(gè)item的分類或回歸問題。有基于回歸,基于分類,基于有序回歸的算法。缺點(diǎn):ranking 追求的是排序結(jié)果,并不要求精確打分,只要有相對(duì)打分即可。pointwise 類方法并沒有考慮同一個(gè) query 對(duì)應(yīng)的 docs 間的內(nèi)部依賴性。一方面,導(dǎo)致輸入空間內(nèi)的樣本不是 IID 的,違反了 ML 的基本假設(shè),另一方面,沒有充分利用這種樣本間的結(jié)構(gòu)性。其次,當(dāng)不同 query 對(duì)應(yīng)不同數(shù)量的 docs 時(shí),整體 loss 將會(huì)被對(duì)應(yīng) docs 數(shù)量大的 query 組所支配,前面說過應(yīng)該每組 query 都是等價(jià)的。損失函數(shù)也沒有 model 到預(yù)測(cè)排序中的位置信息。因此,損失函數(shù)可能無(wú)意的過多強(qiáng)調(diào)那些不重要的 docs,即那些排序在后面對(duì)用戶體驗(yàn)影響小的 doc。
代表算法:
基于神經(jīng)網(wǎng)絡(luò)的排序算法 RankProp、基于感知機(jī)的在線排序算法 Prank(Perception Rank)/OAP-BPM 和基于 SVM 的排序算法。推薦中使用較多的 Pointwise 方法是 LR、GBDT、SVM、FM 以及結(jié)合 DNN 的各種排序算法。
工作場(chǎng)景:
如果在推薦場(chǎng)景中,一般會(huì)選擇下單或者點(diǎn)擊為正樣本,曝光未點(diǎn)擊為負(fù)樣本。樣本構(gòu)造簡(jiǎn)單,天然標(biāo)注,并且優(yōu)化時(shí),也是單點(diǎn)優(yōu)化,訓(xùn)練模型速度快。
Pairwise:Pairwise排序是將同一個(gè)查詢中兩個(gè)不同的item作為一個(gè)樣本,主要思想是把rank問題轉(zhuǎn)換為二值分類問題?;诙诸惖乃惴ā?/strong>缺點(diǎn):如果人工標(biāo)注包含多有序類別,那么轉(zhuǎn)化成 pairwise preference 時(shí)必定會(huì)損失掉一些更細(xì)粒度的相關(guān)度標(biāo)注信息。2、doc pair 的數(shù)量將是 doc 數(shù)量的二次,從而 pointwise 類方法就存在的 query 間 doc 數(shù)量的不平衡性將在 pairwise 類方法中進(jìn)一步放大。3、pairwise 類方法相對(duì) pointwise 類方法對(duì)噪聲標(biāo)注更敏感,即一個(gè)錯(cuò)誤標(biāo)注會(huì)引起多個(gè) doc pair 標(biāo)注錯(cuò)誤。4、pairwise 類方法僅考慮了 doc pair 的相對(duì)位置,損失函數(shù)還是沒有 model 到預(yù)測(cè)排序中的位置信息。5、pairwise 類方法也沒有考慮同一個(gè) query 對(duì)應(yīng)的 doc pair 間的內(nèi)部依賴性,即輸入空間內(nèi)的樣本并不是 IID 的,違反了 ML 的基本假設(shè),并且也沒有充分利用這種樣本間的結(jié)構(gòu)性。
基于 SVM 的 Ranking SVM 算法、基于神經(jīng)網(wǎng)絡(luò)的 RankNet 算法和基于 Boosting 的 RankBoost 算法。
Anime 數(shù)據(jù)集
Anime 是一個(gè)公開的推薦數(shù)據(jù)集,包含 73 516 名用戶對(duì) 12 294 部動(dòng)漫的 7 813 738 條評(píng)分?jǐn)?shù)據(jù).該數(shù)據(jù) 集包含 3 個(gè)分類:用戶 id、動(dòng)漫 id 和用戶對(duì)動(dòng)漫的評(píng)分,其中,評(píng)分范圍為 1~10.為了緩解數(shù)據(jù)集稀疏問 題,對(duì)數(shù)據(jù)集進(jìn)行過濾處理,過濾后的數(shù)據(jù)集包含 8 289 個(gè)用戶對(duì) 6 335 部動(dòng)漫的 2 964 160 個(gè)評(píng)分。
這里,我們采用隱式反饋的數(shù)據(jù),所以需要把顯式評(píng)分?jǐn)?shù)據(jù)轉(zhuǎn)化為隱式數(shù)據(jù).即:對(duì)于 MovieLens 數(shù)據(jù)來說, 將評(píng)分矩陣中有評(píng)分記錄的 1~5 的值記為 1,沒有評(píng)分記錄的記為 0.同時(shí)選取每個(gè)用戶最近一次的交互記錄作為測(cè)試樣本,并和隨機(jī)抽樣的 99 個(gè)未交互的樣本組合成測(cè)試數(shù)據(jù)集,其余的數(shù)據(jù)作為訓(xùn)練樣本組成訓(xùn)練集.對(duì) Anime 數(shù)據(jù)集做同樣處理。

參考田震,潘臘梅,尹樸,王睿.深度矩陣分解推薦算法[J].軟件學(xué)報(bào),2021,32(12):3917-3928.DOI:10.13328/j.cnki.jos.006141.
Hong-Jian Xue, Xin-Yu Dai, Jianbing Zhang, Shujian Huang, and Jiajun Chen. 2017. Deep matrix factorization models for recommender systems. In Proceedings of the 26th International Joint Conference on Artificial Intelligence (IJCAI’17), Carles Sierra (Ed.). AAAI Press 3203-3209.