歡迎大家關注我的個人微信公眾號:大大大碗面

不定期推送AI論文解讀集開發技術分享,互聯網小白,輕噴~

大大大碗面

本文發表在2018年的CIKM。在文章中,作者提出了一種新穎的基於生成對抗神經網路的協同過濾推薦技術,可以獲得更高的推薦系統準確性。具體地;文章通過一系列方法解決了傳統IRGAN存在的問題,同時針對協同過濾也進行了優化。

協同過濾推薦

協同過濾(Collaborative Filtering),是推薦演算法中最為經典的類型。它通常解決以下問題:m個物品,n個用戶的數據,只有部分用戶和部分數據之間是有評分數據的,其它部分評分是空白,此時我們要用已有的部分稀疏數據來預測那些空白的物品和數據之間的評分關係,找到較高評分的物品推薦給用戶,如下圖表示:

可以將其轉換成矩陣表示:

一般來說,協同過濾推薦分為三種類型。第一種是基於用戶(user-based)的協同過濾,第二種是基於項目(item-based)的協同過濾,第三種是基於模型(model based)的協同過濾,我們就列舉基於用戶的協同過濾進行說明:

基於用戶(user-based)的協同過濾主要考慮的是用戶和用戶之間的相似度,只要找出相似用戶喜歡的物品,並預測目標用戶對對應物品的評分,就可以找到評分較高的若干個物品推薦給用戶。

協同過濾的缺點:

  • 數據的稀疏性:一個大型的推薦系統一般具有大量的物品(Item,Location等),用戶可能買到的物品就非常少,不同用戶之間買的物品重疊性較低,這樣會導致無法找到一個用戶的偏好相似用戶。

  • 演算法的複雜度較高:演算法空間複雜度和時間複雜度隨著用戶和物品數量的增加而增加,不適合處理大量數據。

生成對抗神經網路

生成對抗神經網路(GAN:Generative Adversarial Networks)是Goodfellow在2014年提出來的,其主要靈感來自於博弈論中零和博弈的思想,應用到深度學習神經網路上來說,就是通過生成模型G(Generator)和判別模型D(Discriminator)不斷博弈,進而使G學習到數據的分布,廣泛應用於圖像、自然語言處理領域。

  • 生成模型

以隨機雜訊或類別之類的控制變數作為輸入,一般用多層神經網路實現,其輸出為生成的樣本數據,這些樣本數據和真實樣本一起送給判別模型進行訓練,讓生成的數據儘可能與真實數據相似,最小化判別模型的判別準確率。

  • 判別模型

是一個二分類器,判定一個樣本是真實的還是生成的,一般也用神經網路實現,訓練目標是最大化判別準確率,即區分樣本是真實數據還是由生成模型生成的。當這個樣本被判定為真實數據時標記為1,判定為來自生成模型時標記為0。

  • 訓練過程

在訓練時,兩個模型不斷競爭,從而分別提高它們的生成能力和判別能力隨著訓練的進行,生成模型產生的樣本與真實樣本幾乎沒有差別,判別模型也無法準確的判斷出一個樣本是真實的還是生成模型生成的,此時的分類錯誤率接近0.5,系統達到平衡,訓練結束。

IRGAN

2017年SIGIR一篇《IRGAN: A Minimax Game for Unifying Generative and Discriminative Information Retrieval Models》,提出了GAN在信息檢索領域的應用方式。信息檢索的目的是針對用戶輸入的Query,返回給對方一個合適候選文檔列表,如下圖展示:

問題定義

假定我們又一些列的query{q1,...qN}並且有一系列的文檔document結合{d1,...dM},對於一個特定的query,我們有一系列標記的真實相關的文檔,但是這個數量是遠遠小於文檔總數量M的。query和document之間潛在的概率分布可以表示為條件概率分布$p_{true}(d|q,r)$。給定一堆從真實條件分布$p_{true}(d|q,r)$觀察到的樣本,我們可以定義兩種類型的IR model。

  • 生成模型:該模型的目標是學習$p_{θ}(d|q,r)?$,使其更接近於$p_{true}(d|q,r)?$。
  • 判別模型:該模型的目標是學習$f_{Φ}(q,d)$,即盡量能夠準確的判別q和d的相關程度。

將上述的兩種IR模型結合起來做一個最大最小化的博弈:生成模型的任務是儘可能的產生和query相關的document,以此來混淆判別模型;判別模型的任務是儘可能準確區分真正相關的document和生成模型生成的document,總的目標就變成:

具體地,生成模型G為$p_θ(d|q_n,r)?$,判別模型D對d是否與q相關進行判定,通過下面的式子給出相關性得分:

同時為了解決離散數據無法通過梯度下降演算法進行優化的問題,使用強化學習中的策略梯度方法進行模型的訓練。有關更多的IRGAN的細節,大家可以閱讀原論文。

存在的問題

在論文中通過實驗作者發現,"discrete item index generation"的方法存在局限性。在實驗結果如下:

在圖中,初始化階段,生成器生成隨機的item(即上文的document),但是在判別器的「指導」下,隨著訓練的進一步進行,生成器將生成與真實情況完全相同的物品。顯然,這對判別器來說將是一個「災難」,例如圖中的物品$i_3$,它即被標記為真實數據(real),又被標記為生成數據(fake),這樣如果將其送進判別器進行判別,判別器將會產生困惑,使得判別器性能下降,之後在策略梯度迭代的過程中,判別器將向生成器提供「wrong signal」,這也將導致生成器的性能下降。

現象如圖所示:在初始的幾次迭代過程中,模型訓練正常,判別器與生成器都提升各自的性能,但是當生成器的性能趨近於極限後(即10輪迭代之後),判別器的性能突然降低,產生這樣的原因就是因為生成器生成上述$i_3$這樣矛盾的數據,使得判別器無法判斷產生的後果。在這種情況下,G和D之間的競爭過程不能在提供高質量推薦列表中產生協同效應。

CFGAN

與IRGAN將GAN運用在信息檢索相似,在協同過濾(CF)領域也可以引入GAN,將query與document的關係,遷移到user與Item中來,本文提出的模型CFGAN的結構框架如下:

模型優化

  • 為了解決IRGAN存在的問題,作者提出了「vector-wise」的方式,對於給定的用戶,生成器一次生成其購買向量(Fake Purchase Vectors);而判別器則用來判別輸入的向量是真實的數據還是生成器「偽造」的向量。
  • 文章同時指出,CFGAN與傳統的GAN的一個主要不同點是:框架重點關注那些「購買「的商品。換句話說,框架丟掉了部分生成器生成的但真實情況下用戶」沒有購買「的物品信息,這在一定程度上可以解決數據稀疏性的問題。

具體的,該操作如下:

這樣一來,該網路的Objective Function可以表示為:

CF Method

採用訓練就可以獲得我們所期望的結果了嗎?答案是否定的,在論文中,作者指出因為在推薦系統中,我們輸入的數據經常是用戶的隱式反饋數據,它是一個稀疏的單值向量。雖然通過上述的方式,生成器通過生成與購買向量類似的向量來與判別器進行博弈,但是最終生成器將訓練得到一個全1向量,這顯然不是我們想要的結果。

為了解決這個具體,作者將負採樣技術(Negative Sampling)引入其中。具體的做法是:在每次訓練迭代過程中,我們隨機選擇每個用戶的非購買項目的一部分,將其假設為負樣本,表明其相應的反饋是被觀測到的但是是負樣本(不喜歡)。 然後,我們訓練G生成用戶的購買向量,使其對應的負樣本的值接近0。圖示如下:

具體地,可以將操作分為以下三種:

  • CFGAN ? ZR (zeroreconstruction regularization)

這樣,生成模型的Loss Function則多了一部分:

  • CFGAN ? PM(partial-masking)

相應地,模型的Loss Function更改為:

  • CFGAN ? ZP(CFGAN ? ZR+ CFGAN ? PM)

將以上兩種方法混合即可。

EXPERIMENT

作者在多個公開數據集上進行實驗,獲得了較高的性能。


推薦閱讀:
相关文章