1. 程式人生 > 實用技巧 >《推薦系統論文歸類總結》

《推薦系統論文歸類總結》

推薦系統論文歸類總結

本文主要記錄較新的推薦系統論文,並對類似的論文進行總結和整合。

目錄

綜述

  1. 《Deep Learning based Recommender System: A Survey and New Perspectives》
  2. 《Use of Deep Learning in Modern Recommendation System: A Summary of Recent Works》

這幾個綜述比較全面,介紹了目前的深度學習在推薦系統中的應用。

協同過濾理論

1.《Application of Dimensionality Reduction in Recommender System - A Case Study》推薦系統的維度下降技術。

這是發表於2000年的“古老”論文,該文是最早探討如何解決協同過濾資料量很大時的問題。這個論文提出了使用傳統的SVD降維的技術。

這個文章提出推薦系統可以分為兩部分:預測、推薦。預測可以使用加權和,推薦使用TopN。可能因為這個文章特別早吧,他認為推薦系統面臨的主要問題是三個:稀疏,規模,“同義詞”。當資料集稀疏的時候,皮爾遜近鄰演算法可能根本無法使用。規模很好理解。這個同義詞的意思是兩個相似的物品名字不同,推薦系統不能發現他們之間的隱相關性。同義詞問題沒看到這個文章怎麼解決的,事實上我也沒看到其他論文上如何解決這個問題,甚至已經不認為這是推薦系統要解決的問題了。

該文認為SVD的任務有兩個: 1.捕捉使用者和商品的隱層關係,允許我們計算使用者對商品打分的預測值。 2.對原始的使用者和商品關係進行降維,並且在低維空間計算鄰居。

該傳統的SVD是一種矩陣分解方法,這種方法的缺點是需要先把評分矩陣缺值補足,是一種線性代數裡的求解析解的方法。這種方法可以研究的一個點就是如何進行缺失值填補,不同的填充方法,對結果產生不同的影響。另外就是SVD降維是代表維度k值的選取,這個需要使用實驗獲得。另外,真正的預測是放線上下執行的,可以在使用者的訪問時迅速做出推薦。

總體而言,這個文章介紹了SVD如何在推薦系統中使用,並通過實驗說明了如何做預測和推薦。因為該矩陣分解方法和後來的矩陣分解差異已經很大,所以不放入後面的矩陣分解篇幅中。

2.《Amazon.com Recommendations Item-to-Item Collaborative Filtering》亞馬遜發表的基於物品的協同過濾

在 User-based 方法中,隨著使用者數量的不斷增多,在大數量級的使用者範圍內進行“最近鄰搜尋”會成為整個演算法的瓶頸。Item-based 方法通過計算項之間的相似性來代替使用者之間的相似性。對於項來講,它們之間的相似性要穩定很多,因此可以離線完成工作量最大的相似性計算步驟,從而大大降低了線上計算量,提高推薦效率。

在 Item-based 方法中,要對 A 和 B 進行項相似性計算,通常分為兩步:1)找出同時對 A 和 B 打過分的組合;2)對這些組合進行相似度計算,常用的演算法包括:皮爾森相關係數、餘弦相似性、調整餘弦相似性和條件概率等。虛擬碼如下:

3.《Item-Based Collaborative Filtering Recommendation Algorithms》影響最廣的,被引用的次數也最多的一篇推薦系統論文。

文章很長,非常詳細地探討了基於Item-based 方法的協同過濾,作為開山之作,大體內容都是很基礎的知識。文章把Item-based演算法分為兩步:

(1)相似度計算,得到各item之間的相似度

  • 基於餘弦(Cosine-based)的相似度計算
  • 基於關聯(Correlation-based)的相似度計算
  • 調整的餘弦(Adjusted Cosine)相似度計算

(2)預測值計算,對使用者未打分的物品進行預測

  • 加權求和。使用者u已打分的物品的分數進行加權求和,權值為各個物品與物品i的相似度,然後對所有物品相似度的和求平均,計算得到使用者u對物品i打分。
  • 迴歸。如果兩個使用者都喜歡一樣的物品,因為打分習慣不同,他們的歐式距離可能比較遠,但他們應該有較高的相似度 。在通過用線性迴歸的方式重新估算一個新的R(u,N).

文章很經典,沒有太難理解的部分,可以看別人的筆記:https://blog.csdn.net/huagong_adu/article/details/7362908

矩陣分解

1.《Matrix Factorization Techniques for Recommender Systems》矩陣分解,推薦系統領域裡非常經典、頻繁被引用的論文。

這個論文是推薦系統領域第一篇比較正式、全面介紹融合了機器學習技術的矩陣分解演算法(區別於傳統的SVD矩陣分解)。矩陣分解是構建隱語義模型的主要方法,即通過把整理、提取好的“使用者—物品”評分矩陣進行分解,來得到一個使用者隱向量矩陣和一個物品隱向量矩陣。

在得到使用者隱向量和物品隱向量(如都是2維向量)之後,我們可以將每個使用者、物品對應的二維隱向量看作是一個座標,將其畫在座標軸上。雖然我們得到的是不可解釋的隱向量,但是可以為其賦予一定的意義來幫助我們理解這個分解結果。比如我們把使用者、物品的2維的隱向量賦予嚴肅文學(Serious)vs.消遣文學(Escapist)、針對男性(Geared towards males)vs.針對女性(Geared towards females),那麼可以形成論文中那樣的視覺化圖片:

這種矩陣分解方法區別於傳統的SVD,這種方法不僅不需要進行缺失值填補,而且相比於線性代數裡的奇異值分解,該方法從問題的描述上就是一個最優化問題。給出目標損失函式,然後優化它。所以已經和SVD沒什麼關係了。

矩陣分解演算法具有的融合多種資訊的特點也讓演算法設計者可以從隱式反饋、社交網路、評論文字、時間因素等多方面來彌補顯示反饋資訊不足造成的缺陷,可以根據需要很容易的把公式進行改變。比如考慮到時間變化的使用者、專案的偏差,可以對預測評分函式改寫成:

關於這個文章比較詳細的解讀:論文篇:Matrix Factorization Techniques for RS矩陣分解(MATRIX FACTORIZATION)在推薦系統中的應用

2.《Feature-Based Matrix Factorization》從公式推導到優化方法,到引數更新策略講得非常詳細的一篇工程實踐論文

非常好的一篇文章,把矩陣分解講的特別詳細,強烈推薦一看。提出了基於特徵的矩陣分解模型。其實這個模型並不是一個新的大的改變,只不過是對於已有的很多矩陣分解的變體進行了一個統一的形式定義。該文章把矩陣分解分為了使用者特徵、物品特徵、全域性特徵,對這三個特徵都有相應的係數矩陣這個模型很容易地可以加上Pairwise方法,時間係數,鄰域資訊,層次資訊等。本文也給出了優化矩陣分解模型選用的方法,引數更新公式,計算加速的方法等非常詳細的說明。總體的框架如下圖。

這個矩陣分解的速度可以很快,有點類似FM,不過比FM多了全域性偏置。值得一看,一定會對矩陣分解有更深的認識。這個文章是偏向於工程實踐的,所以循序漸進地引出來每個式子。和普通的論文的佶屈聱牙相比,絕對能看懂。唯一可惜的是沒有看到公開的程式碼,如果發現了再補到這裡。

3.《Probabilistic Matrix Factorization》PMF是對於基本的FunkSVD的概率解釋版本,殊途同歸

本文要提出一個解決非常係數和不平衡的資料集的模型,解決了很多在NetFlix資料集上運用矩陣分解失敗的兩個原因: 1.沒法適用於大規模資料集 2.對於冷門的使用者很難做推薦

它假設評分矩陣中的元素Rij是由使用者潛在偏好向量Ui和物品潛在屬性向量Vj的內積決定的,並且服從以下的正態分佈:

同時,假設使用者偏好向量與物品偏好向量服從於均值為0以下的正態分佈:

對正太分佈取log,之後會發現後面的正則化項和超參與資料集分佈有關,是不變的。所以可以得到了要優化的目標方程:

所以,繞了一圈之後會發現,如果假如評分、使用者、物品的向量是正太分佈的話,那麼就能通過數學方法推匯出和SVD基本一致的目標方程,所以標題才直接取名概率矩陣分解機。這個思路很清奇,文章的後面又基於這個基本的目標方程進行了兩種改進。

4.《Regression-based Latent Factor Models》基於迴歸的隱因子模型

這個論文其實就是對《Probabilistic Matrix Factorization》進行了改進。

本文也是基於高斯先驗,但是把正太分佈的均值從0-均值改成了基於特徵的迴歸方法來計算,使得模型假設更有說服力。

優點是三個:1.一個模型同時解決了冷熱啟動問題;2.減少了使用共現物品或使用者的相關性;3.給預測提供了附加資訊,提高了準確度。

5.《Collaborative Filtering with Temporal Dynamics》加入了時間變數的協同過濾

這個論文的想法是顯然易見的:使用者給物品的打分是隨著時間變化而變化的。因此,該文在以前模型的基礎上加入了時間因素。文中對兩種推薦方法:基於鄰域的模型、隱因子模型都做了相應的改進。主要的公式是:

實際應用的模型是基於SVD++改進的。本文基於這樣的思想:使用者和物品的偏置都會隨著時間變化,使用者的隱因子也會改變,但是物品的隱因子認為是不變的。另外在思考這個問題的時候也要考慮到把時間分箱時要兼顧到粗細粒度,本文還綜合考慮了使用者喜好隨著時間的漸變和突變。因為這個文章比較全面系統,我覺得可以多看幾遍。

6.《Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model》近鄰方法+因子分解

這個文章自稱是第一篇把近鄰方法和因子分解方法融合到一起的論文。難點其實在於把近鄰方法轉換為因子分解方法相似的通過迭代更新引數進行求解的方式,而傳統的近鄰方法是基於原始資料集統計求解的、不需要迭代。

文章對最近鄰模型只做出了多個改進:模型引數通過訓練得到,加入了隱式資料,使用者偏置項使用學習得到,對鄰域個數進行了歸一化。對因子分解方法主要採用了SVD++方法。最後的融合模型如下圖,使用梯度下降更新引數。這個模型相當於三層模型的累加:基準模型+因子分解模型+最近鄰模型。

這篇解讀相當不錯:https://blog.csdn.net/fangqingan_java/article/details/50762296

7.《Leveraging Long and Short-term Information in Content-aware Movie Recommendation》幾個模型的融合

這個文章簡直好大全。MF,LSTM,CNN,GAN全都用上了。

本質是學習得到使用者和電影的隱層向量表示。學習的方式是最小化能觀測到的電影評分預測值和真實評分值的方根誤差。即MF的公式是:

另外,矩陣分解不能學到關於時間變化的使用者口味的變化,所以本文用到了LSTM。文章整體的架構如下。

因子分解機

1.《Factorization Machines》大名鼎鼎的FM

FM模型是一個可以用於大規模稀疏資料場景下的因式分解模型,這個模型的求解是線性時間複雜度的,他可以使用原始資料直接求解而不需要像SVM一樣依賴支援向量。另外FM是個通用的模型,可以在任何實數資料上使用,可以做分類和迴歸甚至能做排序等任務。

FM的思想是線上性迴歸的基礎上,增加了兩個特徵的線性組合,求解線性組合的方式是使用了矩陣分解的方式。因為如果資料本身就很稀疏,於是兩個變數的共現資料極少,但是矩陣分解使得不同的特徵對不再是完全獨立的,而它們的關聯性可以用隱式因子表示,這將使得有更多的資料可以用於模型引數的學習。目標函式如下:

上面的二次項矩陣可以通過數學進行優化,使得時間複雜度降為O(kN)。

2.《Field-aware Factorization Machines for CTR Prediction》大名鼎鼎的FFM

FFM是對FM的改進,添加了Field的概念,也就是說每個特徵歸於哪一類。假設Field有f個。那麼每個特徵都要有f個隱向量。當兩個特徵做交叉的時候,使用每個特徵與另外一個Field對應的向量求點積。這樣的話,就能保證相同Field對同一個特徵的作用是相同的,而不同Field的特徵對同一個特徵的作用是不同的。

另外,FFM不能向FM那樣使用數學優化了,所以時間複雜度是O(kN^2).

3.《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》FM的深度學習版本

這個模型基於wide & deep做了改進,首先模型包括FM和DNN部分,是個並聯結構,FM和DNN共享相同的輸入(embedding)。每個Field獨立地embedding到相同的維度,大大減少了網路引數。Field到embedding層的映射向量恰好是FM層學習到的向量。

deep FM的優點: 1)不需要任何預訓練 2)學習到了低維和高維特徵交叉 3)一個特徵embedding的共享策略來避免特徵工程

基於內容的推薦

  1. 《Content-Based Recommendation Systems》 基於內容做推薦的綜述文獻。

這個文章是篇綜述,沒有很深的理論。文章分析了資料分為了結構化的資料和非結構化的資料,然後介紹了常見的機器學習演算法,如決策樹,線性模型,kNN方法,樸素貝葉斯等等方法。很適合作為推薦系統及其相關機器學習方法的入門教材。

基於DNN的推薦

  1. 《Deep Neural Networks for YouTube Recommendations》谷歌神作,字字珠璣

Youtube推薦系統的比較老的解決方案,使用候選集生成網路和排序網路兩部分。特徵是使用者embedding和視訊embedding,加入了視訊的曝光時間等特徵作為訓練。本來聽起來是簡單的解決方案,其實裡面把推薦系統工程化的問題都一一介紹了,讓我們更清楚地知道,線下模型訓練的過程和線上服務過程分別怎麼做的,多分類問題怎麼加速等。值得仔細思考裡面的每一步做法的用意。

推薦系統架構:

候選集生成網路:

王喆對這篇文章進行了更詳細的解讀,並探討了工程化的問題:https://zhuanlan.zhihu.com/p/52169807

基於標籤的推薦

  1. 《Tag-Aware Recommender Systems: A State-of-the-art Survey》綜述。

原本以為基於標籤的推薦很簡單,其實我錯了,這個綜述我就沒看太懂。。不過基於標籤的推薦在實踐裡還是挺重要的,比如使用者給主播打的標籤可以用作推薦。

文章指出標籤的作用: 1.反映使用者的喜好 2.表達了物品的語義資訊,來幫助評估潛在的使用者質量 3.標籤之間的重複出現的情況表現了使用者的社群和物品的聚類情況。 因此,標籤可以幫助解決冷啟動問題。

綜述介紹了三種主要的基於標籤的推薦方法,因為自己沒有接觸過相關的內容,只能留給以後補了:

1.基於網路的模型

2.基於張量的模型

3.基於主題的模型(LDA)

基於自編碼器

  1. 《AutoRec: Autoencoders Meet Collaborative Filtering》
  2. 《Training Deep AutoEncoders for Collaborative Filtering》NVIDIA的文章,偏向於工程實現
  3. 《Deep Collaborative Autoencoder for Recommender Systems:A Unified Framework for Explicit and Implicit Feedback》
  4. 《Collaborative Denoising Auto-Encoders for Top-N Recommender Systems》對推薦系統的歸納很好,公式很詳細。

這幾篇文章的思想基本一樣,本質都是協同過濾。優化的目標在自編碼器的基礎上稍作修改,優化目標裡只去優化有觀測值的資料。

Item2Vec

  1. 《Item2Vec: Neural Item Embedding for Collaborative Filtering》微軟的開創性的論文,提出了Item2Vec,使用的是負取樣的skip-gram
  2. 《Item2Vec-based Approach to a Recommender System》給出了開源實現,使用的是負取樣的skip-gram
  3. 《From Word Embeddings to Item Recommendation》使用的社交網站歷史check-in地點資料預測下次check-in的地點,分別用了skip-gram和CBOW

固定視窗的skip-gram的目標是最大化每個詞預測上下文的總概率:

使用shuffle操作來讓context包含每個句子中所有其他元素,這樣就可以使用定長的視窗了。

上下文感知模型

  1. 《A Context-Aware User-Item Representation Learning for Item Recommendation》

這個文章提出,以前的模型學到的使用者和物品的隱層向量都是一個靜態的,沒有考慮到使用者對物品的偏好。本文提出了上下文感知模型,使用使用者的評論和物品總評論,通過使用者-物品對進行CNN訓練,加入了注意力層,摘要層,學習到的是使用者和物品的聯合表達。更傾向於自然語言處理的論文,和傳統的推薦模型差距比較大。

基於視覺的推薦

1.《Telepath: Understanding Users from a Human Vision Perspective in Large-Scale Recommender System》京東最近公開的推薦系統,通過研究商品的封面對人的影響進行推薦

這個文章參考大腦結構,我們把這個排序引擎分為三個元件:一個是視覺感知模組(Vision Extraction),它模擬人腦的視神經系統,提取商品的關鍵視覺訊號併產生啟用;另一個是興趣理解模組(Interest Understanding),它模擬大腦皮層,根據視覺感知模組的啟用神經元來理解使用者的潛意識(決定使用者的潛在興趣)和表意識(決定使用者的當前興趣);此外,排序引擎還需要一個打分模組(Scoring),它模擬決策系統,計算商品和使用者興趣(包括潛在興趣和當前興趣)的匹配程度。 興趣理解模組收集到使用者瀏覽序列的啟用訊號後,分別通過DNN和RNN,生成兩路向量。RNN常用於序列分析,我們用來模擬使用者的直接興趣,DNN一般用以計算更廣泛的關係,用來模擬使用者的間接興趣。最終,直接興趣向量和間接興趣向量和候選商品啟用拼接在一起,送往打分模組。打分模組是個普通的DNN網路,我們用打分模組來擬合用戶的點選/購買等行為。最終這些行為的影響通過loss回饋到整個Telepath模型中。在圖右側,還引入了類似Wide & Deep網路的結構,以增強整個模型的表達能力。

2.《Visually Explainable Recommendation》視覺化地可解釋推薦模型

這個文章放在基於視覺的推薦的原因是,比較新奇的地方在於提取了商品封面的特徵,並融合到了推薦和推薦解釋之中。本文的基礎模型使用商品的封面通過預訓練好的VGG網路轉化為影象向量。對特徵進行加權求和之後的結果與商品的向量merge,再與使用者的向量內積求總的向量結果,把該結果進行和使用者是否購買的真實資料求交叉熵,優化該Loss.文章指出該模型最後訓練的結果可以用推薦,也可以用注意力權重來做推薦解釋。

本文還提出了進一步的模型Re-VECF。該模型使用商品的使用者評論結合影象、使用者和商品作單詞預測訓練GRU。加入使用者評論的好處是可以提高推薦的表現、文字評論可能隱含著使用者對商品封面重要的偏好。該模型能更好的做出推薦結果和推薦解釋。

基於RNN的推薦

  1. 《Session-based Recommendations with Recurrent Neural Networks》 2016年的文章,GRU4Rec,使用每個會話中使用者的行為記錄進行訓練。
  2. 《Recurrent Neural Networks with Top-k Gains for Session-based Recommendations》2018年的新文章,對上文進行了優化;原理相同的

基於RNN的推薦也是源於一個樸素的假設:對於使用者的行為序列,相鄰的元素有著相近的含義。這種假設適合基於會話的推薦系統,如一次電子商務的會話,視訊的瀏覽記錄等。相對於電影推薦,基於會話的推薦系統跟看中短期內使用者的行為。

論文想法在於把一個 session 點選一系列 item 的行為看做一個序列,用來訓練一個 RNN 模型。在預測階段,把 session 已知的點選序列作為輸入,用 softmax 預測該session下一個最有可能點選的item。

這個文章裡用的是GRU,目標是優化pair-wise rank loss。

有一個不錯的論文解讀文章:http://www.cnblogs.com/daniel-D/p/5602254.html

基於圖的推薦

  1. 《Pixie: A System for Recommending 3+ Billion Items to 200+ Million Users in Real-Time》社交網站的圖推薦,2017年

本文介紹了 Pinterest 的 Pixie 系統,主要針對他們開發的隨機遊走和剪枝演算法,此外系統本身基於 Stanford Network Analysis Platform 實現。

基於樹的推薦

  1. 《Learning Tree-based Deep Model for Recommender Systems》淘寶的推薦系統,2018年最新發布

基於樹的推薦是一種比較新奇的一種推薦演算法,其設計的目的主要是解決淘寶的巨大的資料問題,給出了一種能線上服務的實時推薦系統的模型。此外,本文證明了此模型在MovieLens-20M和淘寶自己的使用者資料上的準確、召回、新奇性都比傳統方法好。

採用的資料是隱式反饋,本模型提供幾百個候選集,然後實時預測系統會進行排序策略。

樹的作用不僅僅是作為索引使用,更重要的是把海量的資料進行了層次化組織。訓練過程是如果使用者對某個物品感興趣,那麼最大化從該物品節點到根節點的每個節點的聯合概率。該路徑上的每個節點都和使用者有相關性,樹的結構從底向上表現出了使用者物品的相似性和依賴性。

如下圖所示,左側的三層全連線學習到使用者的向量表示,右側的樹結構學到了節點的表示,最後通過二分類來訓練出使用者是否對該節點感興趣。訓練的損失函式是最小化一個使用者對每個取樣了的節點的交叉熵。(樹結構類似於Hierarchical softmax,也同樣使用了負取樣等。)

公司的推薦系統的發展歷程

  1. 《Related Pins at Pinterest: The Evolution of a Real-World Recommender System》Pinterest的推薦系統發展歷程

這個推薦系統主要用到的是隨機遊走的圖演算法,Pin2Vec,Learning to Rank等方法。只介紹了思想,沒有公司和演算法。可以直接看解讀:http://blog.csdn.net/smartcat2010/article/details/75194918

  1. 2013年的時候,推薦系統主要基於Pin-Board的關聯圖,兩個Pin的相關性與他們在同一個Board中出現的概率成正比。
  2. 在有了最基本的推薦系統後,對Related Pin的排序進行了初步的手調,手調訊號包括但不侷限於相同Board中出現的概率,兩個Pin之間的主題相似度,描述相似度,以及click over expected clicks得分。
  3. 漸漸地,發現單一的推薦演算法很難滿足產品想要優化的不同目標,所以引入了針對不同產品需求生成的候選集(Local Cands),將排序分為兩部分,機器粗排,和手調。
  4. 最後,引入了更多的候選集,並且提高了排序部分的效能,用機器學習實現了實時的個性化推薦排序。

資料集

  1. 《Indian Regional Movie Dataset for Recommender Systems》提供了印度本土的電影觀看資料集

參考資料

  1. 『我愛機器學習』FM、FFM與DeepFM
  2. Factorization Machines 學習筆記

版權宣告

本文正在更新中,請謹慎轉載。

個人轉載請註明作者和倉庫地址,商業和自媒體轉載前務必聯絡作者[email protected]