天天看點

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

  今天很認真的看了一下來自Hanyang University的Dong-Kyu Chae發表在CIKM2018上的一篇論文《CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks》,這篇論文将GAN利用在推薦的領域上,說明了已有的IRGAN和GraghGAN在推薦上應用的缺點,提出了基于評分向量生成的推薦算法,下面我們一起來閱讀這篇論文吧!

論文連結如下 http://delivery.acm.org/10.1145/3280000/3271743/p137-chae.pdf?ip=222.178.10.178&id=3271743&acc=ACTIVE%20SERVICE&key=BF85BBA5741FDC6E%2E4C4B77574FA1A7CF%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35&__acm__=1559923957_b44ba94b534ddf5d55ce80f9c0745c50

1 推薦系統準備知識

1.1 符号表示

  首先了解一點點推薦系統的基本知識和表示方法,如果有很好的推薦系統基礎的人可以直接跳過這一段,表示和其他推薦相關論文的表示比較類似。我直接把原文中的CF-MODEL的準備知識截圖過來,用紅框依次表示的就是

U ->代表所有使用者, u1 表示使用者1,以此類推,um表示使用者m

I ->代表所有項目, I1 表示項目1,以此類推,In表示項目n

Iu->項目的使用者對他的評分向量

R->評分矩陣,其中rui 代表使用者u對項目i的評分

rui(^)代表使用者u對項目i的預測評分

Θ代表推薦模型的參數

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

1.2 評分的表示形式

一般來說,如果推薦系統的評分是五分制,那麼評分一般為1,2,3,4,5

如果推薦系統的評分是看使用者是否有過點選或者購買記錄,那就是0和1。

本文是選擇的0和1.

2 生成式對抗網絡(GANs)

2.1 最原始的GANs

最原始的GANs如果大家不了解可以去看看别的部落格好好了解一下,這對于了解這篇論文十分重要,本文隻簡單來說,GANs分為兩部分,一個是生成模型,一個是判别模型,生成模型就是努力地生成與真實樣本非常類似的樣本去迷惑判别器,判别模型就是努力區分真實樣本和虛假樣本。整個目标函數列出來

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

2.2 GANs在推薦上的應用

在以往的時間裡,GANs在推薦上的應用其實并不多,主要是IRGAN和GraghGAN,這兩種方式比較雷同,接下來簡單介紹一下IRGAN的思想:

在IRGAN中,生成器的目标就是生成一個與使用者相關的推薦項目清單,而判别器去區分這些項目是真實的項目還是虛假的項目。下面給出公式計算表示:

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

S∅(u,i)是使用者u買項目ik的機率,P整個式子就是用的一個softmax函數算出u買uk的條件機率分布,

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

Sθ(u,i)反映的是使用者u和項目i的關聯程度(說實話,具體怎麼衡量的,我也不太清楚,如果知道的可以在評論中告訴我),D整個式子就是算項目i是使用者真實購買的項目的機率。

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

d和g都是矩陣分解出來的低維向量表示,(這裡如果不懂矩陣分解的同學0.0隻有麻煩再去搜搜矩陣分解(matrix factorization)),db的偏置項。

最終的目标函數為:

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

因為生成器部分不能接受判别器部分的梯度,是以使用政策梯度下降的方式來解決這個問題。

3.3 IRGAN的缺點

介紹完IRGAN之後,來說說IRGAN的缺點,如圖所示,因為IRGAN是緻力于單個項目,IRGAN會生成一個項目序列,但是這個序列在C過程裡時,生成器也會生成真實項目的序列,這會讓判别器失去判别能力,比如i3也是真實的項目清單也是虛假的項目清單裡,那對于判别器來說,他就沒辦法知道i3是來自于真實項目還是虛假項目,于是判别器就開始出錯了。

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

在論文中,作者還做了相關的實驗證明這個現象,如圖所示,在前面确實性能上升了,因為生成的項目與真實項目重合度不高,但是随着epoch的上升,判别器性能開始大幅度下降,論文中還有其他的證明實驗,這裡我就不闡述了。

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

4 CFGAN的提出

4.1 CFGAN的架構

針對于3.3中的問題,作者用了一個很簡單的方法來解決,那就是不針對于項目來生成,直接生成一個使用者的評分向量Iu,對于項目來說确實很容易重合,但是對于一個評分向量來說,重合的機率就很小很小了,因為一個評分向量的次元很高。

是以對于CFGAN來說,他的生成器和判别器具體是要怎麼做呢?

對于生成器來說,它要生成一個評分向量,這個評分向量要包含很多有值的評分

對于判别器的任務,相對于IRGAN來說就沒變,隻是從判斷一個項目是否來自于真實或者生成轉變為了判斷一個評分向量。

為了更好地了解,下面直接放出圖,首先我們要把使用者特定條件向量C(看代碼其實和Eu是一個意思,即使用者的實際購買項目向量)和噪音向量Z放入生成器訓練,目的是生成虛假的使用者購買評分向量,請注意,輸入判别器中的是ru(^)和eu的相乘,eu是使用者真實有評分的向量,意思就是最後隻考慮真實有評分的次元上的差異;另一方面,把真實的評分向量和C放進判别器。OK,讓他跑吧,其他的和正常的GAN似乎沒什麼差別了。政策梯度需不需要講呢?

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

4.2 CFGAN最大的挑戰

如果要生成向量的話,在推薦系統上最難的問題就是資料太過稀疏,那對于生成器而言怎麼做到模拟真實評分向量最好呢?注意,給判别器的時候是ru與eu的乘積,那麼其實生成器生成全是1的向量,是最輕松的也能讓判别器無法判别。這樣有意義嗎?no,沒有。是以,CFGAN必須要解決這個問題。

是以,提出了一下三個步驟,

a.去随機采樣使用者評分向量中評分為0的項

b.假設這些評分為0的項是有值的(這個有點難了解,意思是之前是把這些0項當成是無意義的項,現在是把他們當成有意義的0項,就是說現在它這個項是評了分的,不過是0分)

c.讓生成器盡可能地去使輸出的向量,在采樣的向量項上接近0,在真實的評分向量上接近1。

這樣就把一些0值通過負采樣的方式考慮進了訓練過程中,好,下一節繼續講是怎麼衡量這個考慮方式的。

4.3 三種将負樣本考慮進訓練的方法

CFGAN−ZR(zero regularization)

即添加了第二項,在G生成的過程中加入了考慮那些0值的采樣樣本的變化

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

CFGAN−PM

即在訓練過程中,不僅考慮有評分的項,也考慮采樣的無評分的項

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

CFGAN−ZP

這個就是結合ZR和PM的混合。

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

最後其實就是用CFGAN-ZP作為損失函數來計算的。

4.4 CFGAN的算法流程

我覺得前面講得都很詳細了,算法應該都懂。

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

5 實驗結果

實驗的話主要是在四個資料集做的,實驗部分我不詳細介紹了,隻拿一個表來說明CFGAN的确是優于其他算法的。

CFGAN:A Generic Collaborative Filtering Framework based on Generative Adversarial Networks 詳細了解備注

繼續閱讀