推薦系統(tǒng)遇上深度學(xué)習(xí)(三十八)--CFGAN:一種基于GAN的協(xié)同過濾推薦框架

本文論文題目:《CFGAN: A Generic Collaborative Filtering Framework based on Generative Adversarial Networks》
本文論文下載地址:https://dl.acm.org/citation.cfm?doid=3269206.3271743

1、背景

使用GAN來進(jìn)行推薦谓谦,之前已經(jīng)有過IRGAN和GraphGAN的方法。

關(guān)于IRGAN七问,可以參考文章:http://www.reibang.com/p/d151b52e57f9

對(duì)于GraphGAN肠虽,論文本身針對(duì)于鏈接預(yù)測(cè)問題,可以擴(kuò)展到推薦系統(tǒng)中,其最主要的貢獻(xiàn)在于將圖表示成寬度優(yōu)先的樹勺爱,并提出了graph softmax的方法,感興趣的同學(xué)可以閱讀下原文:https://arxiv.org/abs/1711.08267

但是這兩種方法都存在discrete item index generation的問題讯检。我們首先來解釋一下琐鲁,什么是discrete item index generation卫旱。

discrete item index generation
對(duì)于IRGAN和GraphGAN來說,生成器G是基于概率围段,生成一個(gè)單獨(dú)的項(xiàng)目ID或者ID列表顾翼,并通過強(qiáng)化學(xué)習(xí)中策略梯度的方式進(jìn)行訓(xùn)練。在判別器的“指導(dǎo)”下奈泪,隨著訓(xùn)練的進(jìn)行适贸,生成器G將生成與真實(shí)情況完全相同的項(xiàng)目ID。但是涝桅,這對(duì)判別器來說并不友好拜姿,同一個(gè)物品,它有可能既被標(biāo)記為真實(shí)數(shù)據(jù)(real)冯遂,又被標(biāo)記為生成數(shù)據(jù)(fake)蕊肥,如下圖的i3:

這樣如果將其送進(jìn)判別器進(jìn)行判別,判別器將會(huì)產(chǎn)生困惑蛤肌,使得判別器性能下降壁却,之后在策略梯度迭代的過程中,判別器將向生成器提供錯(cuò)誤的信號(hào)裸准,自己的性能也開始降低展东。下面的實(shí)驗(yàn)結(jié)果展示了這一點(diǎn):

現(xiàn)象如圖所示:在初始的幾次迭代過程中,判別器與生成器的性能都逐漸提升狼速,但隨著實(shí)驗(yàn)的進(jìn)行琅锻,判別器的性能突然降低,產(chǎn)生這樣的原因便是同一物品被標(biāo)記為不同類別的情況向胡。在這種情況下恼蓬,G和D之間的競(jìng)爭(zhēng)過程也失去了原本的意義,推薦效果也存在局限僵芹。

2处硬、模型框架

針對(duì)上面的問題,作者從原始的GAN出發(fā)拇派。提出了一種vector-wise的訓(xùn)練方式荷辕。

我們都知道,最開始的GAN是用于圖像生成的件豌,G生成的是圖像的向量疮方,D直接判斷這些向量是否是真實(shí)的圖片。當(dāng)G生成的是向量時(shí)茧彤,該向量可能非常與真實(shí)向量所接近骡显,但與真實(shí)向量一模一樣的概率卻非常小,因此D被迷惑的概率也是非常小的。

在CFGAN中惫谤,G生成的是向量是什么呢壁顶?這里我們稱其為購(gòu)買向量purchase vector。這個(gè)也很好理解溜歪,假設(shè)我們有基于隱式反饋得到的用戶-物品購(gòu)買矩陣若专,那么從用戶角度來說,購(gòu)買向量便是矩陣中的一行蝴猪,若用戶與物品有過購(gòu)買(其實(shí)不一定是購(gòu)買调衰,也可以認(rèn)為是有過交互,不過本文統(tǒng)一認(rèn)為為1的地方是用戶對(duì)物品有過購(gòu)買行為)拯腮,該位置為1窖式,如果沒有購(gòu)買,該位置是空(不是0)动壤,從物品角度來說萝喘,購(gòu)買向量便是矩陣中的一列,若物品被用戶購(gòu)買過琼懊,該位置為1阁簸,如果沒有購(gòu)買過,該位置是空(不是0)哼丈。

因此启妹,下面我們首先介紹從用戶角度出發(fā)的CFGAN模型的設(shè)計(jì),然后可以遷移到從物品角度出發(fā)的CFGAN框架醉旦。

2.1 整體框架

CFGAN的整體框架如下:

生成器G的設(shè)計(jì)
生成器的輸入包含兩部分饶米,一是用戶向量c,另一個(gè)是噪聲向量z车胡。經(jīng)過生成器的多層神經(jīng)網(wǎng)絡(luò)后檬输,輸出用戶購(gòu)買向量。向量中每一個(gè)值代表用戶與物品交互的概率匈棘。非常巧妙的是丧慈,這里對(duì)輸出的購(gòu)買向量增加了一個(gè)mask。即圖中下面的部分:

mask向量eu中主卫,用戶交互過的地方為1逃默,沒有交互過的地方為0,為什么要加入mask呢簇搅?首先完域,為0的地方并不代表用戶不喜歡,其次瘩将,用戶沒有購(gòu)買過的物品筒主,在乘上0之后关噪,其實(shí)是訓(xùn)練的時(shí)候丟掉了這些節(jié)點(diǎn),因?yàn)槌松?之后乌妙,梯度永遠(yuǎn)為0,是不會(huì)反向傳播回去的建钥;同時(shí)藤韵,如果把真實(shí)購(gòu)買向量對(duì)應(yīng)位置設(shè)置為0的話,判別器在這些地方也是沒有損失的熊经。這與傳統(tǒng)的矩陣分解方法是非常類似的泽艘,即用用戶購(gòu)買過的地方去訓(xùn)練,隨后預(yù)測(cè)用戶對(duì)未購(gòu)買過的物品的評(píng)分镐依。

判別器D的設(shè)計(jì)
判別器將用戶真實(shí)的購(gòu)買向量和G生成的購(gòu)買向量進(jìn)行混合匹涮,盡可能地將真實(shí)向量識(shí)別成real,將生成的向量識(shí)別成fake槐壳。這里同樣需要輸入用戶向量c然低。

模型訓(xùn)練
生成器的損失函數(shù)為:

判別器的損失函數(shù)為:

2.2 框架改進(jìn)

ok,你是否覺得上述的模型講的很有道理务唐,近乎完美了呢雳攘?答案是否定的。咱想想看枫笛,如果生成器想要騙過判別器吨灭,非常簡(jiǎn)單就可以做到。因?yàn)闆]有交互過的物品經(jīng)過mask之后會(huì)變成0刑巧,那么生成器只要生成全1的向量不就可以了嘛喧兄。所以說,只用用戶購(gòu)買過的物品啊楚,是不夠的吠冤,還得通過負(fù)采樣的技術(shù),增加一定的負(fù)樣本特幔。即在每次訓(xùn)練迭代過程中咨演,我們隨機(jī)選擇每個(gè)用戶的未購(gòu)買過物品的一部分,將其假設(shè)為負(fù)樣本蚯斯, 然后在訓(xùn)練生成器生成購(gòu)買向量的時(shí)候薄风,使其對(duì)應(yīng)的負(fù)樣本的值接近0。那么如何結(jié)合負(fù)采樣技術(shù)拍嵌,論文中提出了三種方式:zero- reconstruction regularization (named CFGAN?ZR)遭赂、partial-masking (named CFGAN?PM)、hybrid of the two (named CFGAN?ZP)横辆。接下來撇他,我們分別介紹三種方式:

CFGAN?ZR

ZR的方式,就是通過負(fù)采樣得到一定比例的負(fù)樣本,對(duì)于這些負(fù)樣本困肩,我們希望預(yù)測(cè)的分?jǐn)?shù)越接近于0越好划纽。此時(shí)G的優(yōu)化目標(biāo)變?yōu)椋?/p>

可以看到,對(duì)于ZR方式锌畸,前面部分的損失函數(shù)是沒有變動(dòng)的勇劣,即我們沒有對(duì)mask進(jìn)行修改。后面相當(dāng)于增加了一個(gè)正則項(xiàng)潭枣,避免全1的結(jié)果出現(xiàn)比默。

CFGAN?PM

PM的方式,就是對(duì)mask進(jìn)行修改盆犁,放開一些用戶沒有購(gòu)買過的物品命咐,這樣,D在計(jì)算損失的時(shí)候會(huì)把這部分為交互過的部分加入谐岁,同時(shí)可以反向傳播回G中醋奠,因此G不僅學(xué)習(xí)到在用戶在購(gòu)買過的物品上要得到接近1的輸出,還會(huì)學(xué)習(xí)到在沒有購(gòu)買過的部分物品上要得到接近0的輸出翰铡。此時(shí)G和D的損失函數(shù)變?yōu)椋?/p>

CFGAN?ZP

ZP的方式便是上面兩種方式的結(jié)合钝域,G的損失函數(shù)變?yōu)椋?/p>

完整的CFGAN-ZP的過程如下:

2.3 遷移到物品角度

遷移到物品角度,非常簡(jiǎn)單锭魔,G的生成目標(biāo)變?yōu)樯晌锲返馁?gòu)買向量例证,D的目標(biāo)變?yōu)榕袆e物品的真實(shí)購(gòu)買向量和G生成的物品購(gòu)買向量。結(jié)合負(fù)采樣的話迷捧,同樣分為ZR织咧、PM和ZP三種方法。

這樣漠秋,我們其實(shí)一共得到了六種方法笙蒙,從用戶角度出發(fā),我們有uCFGAN_ZR,uCFGAN_PM,uCFGAN_ZP,從物品角度出發(fā)庆锦,我們有iCFGAN_ZR,iCFGAN_PM,iCFGAN_ZP捅位。后面我們將對(duì)比這六種方法的實(shí)驗(yàn)效果。

3搂抒、模型實(shí)驗(yàn)

模型實(shí)驗(yàn)主要關(guān)注于三個(gè)問題:
1)CFGAN模型應(yīng)用于推薦任務(wù)艇搀,效果如何?
2)CFGAN模型使用時(shí)求晶,最佳的參數(shù)設(shè)置為多少焰雕?
3)與目前state-of-the-art方法比較,CFGAN能夠帶來多大的提升芳杏?

實(shí)驗(yàn)選取的數(shù)據(jù)集包括以下四個(gè):

接下來矩屁,我們看下結(jié)果辟宗。

3.1 模型的有效性

該部分的實(shí)驗(yàn)效果如下:

對(duì)比我們之前看到的IRGAN和GraphGAN的效果,CFGAN相較于IRGAN準(zhǔn)確率提升了72.6%吝秕,較GraphGAN提升了104.3%泊脐。

3.2 超參數(shù)設(shè)置對(duì)于模型的影響

這里主要的超參數(shù)包括ZR和PM方式中,負(fù)樣本的比例烁峭,以及ZR方式中晨抡,正則項(xiàng)系數(shù)α。結(jié)果如下:

3.3 與目前主流推薦方法的比較

這里選取的推薦方法有ItemPop则剃、BPR、FISM如捅、CDAE棍现、IRGAN和GraphGAN。而CFGAN選擇iCFGAN?ZP方式镜遣。對(duì)比結(jié)果如下:

可以看到己肮,CFGAN在各個(gè)數(shù)據(jù)集上,都有明顯的效果提升悲关。

4谎僻、總結(jié)

本文介紹了一種通過GAN來進(jìn)行推薦任務(wù)的新思路,與之前結(jié)合強(qiáng)化學(xué)習(xí)的思路如IRGAN和GraphGAN不同寓辱,CFGAN更接近于GAN模型艘绍,G生成的是用戶或者物品的購(gòu)買向量,D的梯度可以反向傳播回給G秫筏。該方法解決了IRGAN和GraphGAN中存在的discrete item index generation問題诱鞠,取得了非常好的實(shí)驗(yàn)效果。值得大家閱讀这敬!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末航夺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子崔涂,更是在濱河造成了極大的恐慌阳掐,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冷蚂,死亡現(xiàn)場(chǎng)離奇詭異缭保,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)帝雇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門涮俄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尸闸,你說我怎么就攤上這事彻亲≡谐” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵苞尝,是天一觀的道長(zhǎng)畸肆。 經(jīng)常有香客問我,道長(zhǎng)宙址,這世上最難降的妖魔是什么轴脐? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮抡砂,結(jié)果婚禮上大咱,老公的妹妹穿的比我還像新娘。我一直安慰自己注益,他們只是感情好碴巾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丑搔,像睡著了一般厦瓢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啤月,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天煮仇,我揣著相機(jī)與錄音,去河邊找鬼谎仲。 笑死浙垫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的强重。 我是一名探鬼主播绞呈,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼间景!你這毒婦竟也來了佃声?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤倘要,失蹤者是張志新(化名)和其女友劉穎圾亏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體封拧,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡志鹃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泽西。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曹铃。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捧杉,靈堂內(nèi)的尸體忽然破棺而出陕见,到底是詐尸還是另有隱情秘血,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布评甜,位于F島的核電站灰粮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏忍坷。R本人自食惡果不足惜粘舟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佩研。 院中可真熱鬧柑肴,春花似錦、人聲如沸旬薯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袍暴。三九已至,卻和暖如春隶症,著一層夾襖步出監(jiān)牢的瞬間政模,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工蚂会, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淋样,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓胁住,卻偏偏與公主長(zhǎng)得像趁猴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子彪见,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353