搜索推荐炼丹笔记:融合GNN、图谱、多模态的推荐
說到推薦系統(tǒng),就不得不面對(duì)數(shù)據(jù)稀疏和冷啟動(dòng)問題,怎么解決呢?美團(tuán)這篇論文《Multi-Modal Knowledge Graphs for Recommender Systems》說,我們不僅要加數(shù)據(jù),而且是各種類型的都加。很多論文提出了用知識(shí)圖譜作為推薦系統(tǒng)的輔助信息,而忽視了文本和圖像,美團(tuán)這篇論文,是第一個(gè)把知識(shí)圖譜,多模態(tài),attention都用來構(gòu)建推薦系統(tǒng)的。模型模型也很霸氣,叫MKGAT。GNN,知識(shí)圖譜,多模態(tài),推薦體系統(tǒng)在這篇論文里應(yīng)有盡有。
知識(shí)圖譜與推薦系統(tǒng)
知識(shí)圖譜也算是火了很久,也已經(jīng)廣泛應(yīng)用于學(xué)術(shù)界,工業(yè)界。知識(shí)圖譜能給推薦系統(tǒng)提供豐富的特征和信息,有效的緩解了數(shù)據(jù)稀疏和冷啟動(dòng)。然而圖片和文本會(huì)對(duì)推薦效果產(chǎn)生重大影響。舉個(gè) ,在看一部電影前,用戶傾向于看海報(bào)和影評(píng)。在選擇吃什么前,都會(huì)在大眾點(diǎn)評(píng)上瀏覽各種美食圖片。所以美團(tuán)覺得,把這些多模態(tài)數(shù)據(jù)融入知識(shí)圖譜,會(huì)對(duì)推薦系統(tǒng)產(chǎn)生很大的正面影響。一個(gè)簡(jiǎn)單的多模態(tài)知識(shí)圖譜如下圖:
這張圖,其實(shí)是很難作為推薦系統(tǒng)的輸入的,所以往往是通過GNN等方式,學(xué)習(xí)圖上每個(gè)實(shí)體的embedding,然后把和推薦上下文相關(guān)實(shí)體的embeding發(fā)送給下游輔助模型學(xué)習(xí)。學(xué)習(xí)多模態(tài)知識(shí)圖譜的表達(dá),有兩種方法:
- 基于特征的方法:把多模態(tài)信息作為實(shí)體額外的信息,然而這需要數(shù)據(jù)源中每個(gè)實(shí)體都有多模態(tài)相關(guān)信息。
- 基于實(shí)體的方法:把各種多模態(tài)信息,都當(dāng)作一個(gè)單獨(dú)的實(shí)體,和其他實(shí)體建立聯(lián)系。如上圖"Toy Story" 和"電影海報(bào)"的關(guān)系是有一張圖片。基于實(shí)體的方法就是分別用遷移模型和CNN等方法學(xué)習(xí)3元祖(h,r,t)的embedding,h為head,r為relation,t為tail。上圖就有很多三元祖(Toy Story, has image, 海報(bào)),(Toy Story, director, John Lasseter)等等。
論文提到,基于實(shí)體的方法關(guān)注點(diǎn)是實(shí)體直接的聯(lián)系,而非多模態(tài)數(shù)據(jù),因此需要更顯示的表達(dá)多模態(tài)信息相關(guān)實(shí)體,這時(shí)候MKGAT隆重登場(chǎng)。
問題定義
一個(gè)簡(jiǎn)單的知識(shí)圖譜,就是由節(jié)點(diǎn)和邊構(gòu)成,G=(V,E)。從上圖可知,這是個(gè)有向圖,一條邊r表達(dá)了head和tail的關(guān)系 ,如(Toy Story, actor, Tom Hanks)。多模態(tài)知識(shí)圖譜中,圖片文本就成了一等公民,成為了圖中的實(shí)體。
聯(lián)合知識(shí)圖譜(collaborative knowledge graph),如下圖:
eu表示用戶實(shí)體,ei表示item實(shí)體,綠色點(diǎn)就是多模態(tài)的實(shí)體,紫色點(diǎn)就是一般的實(shí)體。這張圖箭頭有實(shí)線,有虛線。實(shí)線表示某個(gè)用戶對(duì)某個(gè)實(shí)體產(chǎn)生了某種交互(點(diǎn)擊,購買等),虛線表示各種非人實(shí)體之間其他關(guān)系。這篇論文的輸入就是上圖,輸出是用戶會(huì)和某個(gè)item交互的概率。
MKGAT
先看下整體模型架構(gòu):
MKGAT可以拆解為兩個(gè)子模塊,多模態(tài)embeding模塊和推薦模塊。在介紹各個(gè)子模塊前,我們先介紹兩個(gè)小的模塊:
- 多模態(tài)圖譜實(shí)體編碼器: 給不同類型實(shí)體編碼
- 多模態(tài)圖譜注意力層:用注意力機(jī)制,融合所有鄰居節(jié)點(diǎn)的信息,學(xué)習(xí)新實(shí)體的embedding。
多模態(tài)embeding把聯(lián)合知識(shí)圖譜作為輸入,充分利用上面提到的兩個(gè)小模塊,去學(xué)習(xí)各個(gè)entity的表達(dá)。再用各個(gè)實(shí)體embeding的表達(dá),去學(xué)習(xí)圖譜之間的關(guān)系。推薦模塊充分利用知識(shí)圖譜學(xué)到的embedding ,和聯(lián)合知識(shí)圖譜去豐富用戶和items的表達(dá),從而提升推薦效果。
多模態(tài)圖譜實(shí)體編碼器其實(shí)很簡(jiǎn)單,如下圖所示:
不同類型的數(shù)據(jù)用不同的embeding,一般的實(shí)體就是直接embeding+FC,圖像就是CNN(Resnet)+FC,文本就是SIF+FC。
多模態(tài)圖譜注意力層,看過GAT論文應(yīng)該很熟悉,每個(gè)實(shí)體的embeding按照不同權(quán)重,聚合鄰居節(jié)點(diǎn)。然而GAT忽視了KG節(jié)點(diǎn)直接關(guān)系是不同的,所以論文對(duì)此做了改進(jìn)。如下圖所示:
假設(shè)有個(gè)實(shí)體h,我們要學(xué)習(xí)(h,r,t),在transE模型中認(rèn)為h+r=t,但是實(shí)體h連接了很多多模態(tài)鄰居節(jié)點(diǎn),我們可以融合這些鄰居信息去豐富h,最終得到eagg,如下公式所示:
傳播層:Nh就是h和所有鄰居節(jié)點(diǎn)形成的三元祖,e(h,r,t)是三元祖的embeding,前面乘的是該三元祖的attention分?jǐn)?shù)。如下定義
融合層:得到eagg后如何融合原本實(shí)體的向量eh呢?論文給出了兩種方法:
加法融合:先對(duì)eh做線性變換到公共空間,然后直接相加(借鑒殘差網(wǎng)絡(luò))
concat融合:
傳播層和融合層在知識(shí)圖譜中可以多次操作,以挖掘更深的信息,比如我們可以對(duì)鄰居的鄰居做傳播融合,得到鄰居的embeding后在做一次傳播融合,得到該實(shí)體的embeding。
得到embeding后,就要確定目標(biāo)函數(shù)了,該文用了一個(gè)pairwise ranking loss,其中t'是隨機(jī)采樣的實(shí)體,不滿足(h,r,t')的關(guān)系,如下式所示:
推薦模塊
上一節(jié)只是把embeding學(xué)好了,但我們最終目標(biāo)是給用戶推薦商品。在推薦模塊中,attention層依然可以復(fù)用,去融合鄰居節(jié)點(diǎn)的信息。
對(duì)于一個(gè)用戶(知識(shí)圖譜中的一個(gè)實(shí)體),他已經(jīng)有一個(gè)向量e0,我們可以通過他的鄰居,用attention的方式,再給他生成另一個(gè)向量e1,用他鄰居和他鄰居的鄰居再生成向量e2,依此類推,最后把這些向量concat在一起,就是用戶最終向量。推薦的item同理,如下式:
最終得到eu*和ei*后,直接點(diǎn)積再接BPR loss即可,如下式子:
實(shí)驗(yàn)
對(duì)比了目前一些算法,該MKGAT表現(xiàn)無論是在recall指標(biāo)還是ndcg,都優(yōu)于現(xiàn)有算法。
論文還提到,多模態(tài)相比于沒有多模態(tài)的圖譜,對(duì)推薦效果的提升也是顯而易見的。
更多干貨,請(qǐng)關(guān)注微信公眾號(hào):煉丹筆記總結(jié)
以上是生活随笔為你收集整理的搜索推荐炼丹笔记:融合GNN、图谱、多模态的推荐的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐算法炼丹笔记:排序模型CTR点击率预
- 下一篇: 一石二鸟:推荐系统多目标任务建模方法