論文:

論文地址:https://arxiv.org/abs/1803.02349
論文題目:《Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba》
一 、背景
我們?cè)谇懊娴腶irbnb那篇文章里面詳細(xì)介紹了airbnb如何將list(房源)轉(zhuǎn)化為低維的embedding,并運(yùn)用這些得到的embedding運(yùn)用到搜索任務(wù)的排序模型中,取得了不錯(cuò)的效果。在很多召回任務(wù)中,embedding被當(dāng)作一個(gè)非常重要的特征去使用,例如,在youtube那邊推薦系統(tǒng)論文中,將用戶(hù)的embedding和視頻的embedding訓(xùn)練出來(lái)后就可以直接計(jì)算相似度了,并用相似度計(jì)算的結(jié)果進(jìn)行召回。
在淘寶的推薦中,主要面臨著三個(gè)技術(shù)挑戰(zhàn),分別是可擴(kuò)展性(scalability)、稀疏性(sparsity)、冷啟動(dòng)問(wèn)題(cold start)。淘寶商城中的物品數(shù)量是十億級(jí)別的,這么稀疏的情況下,迫切需要將這些高維稀疏的item轉(zhuǎn)化為低維稠密低向量。同時(shí),每天在淘寶上新的物品也是很多的,如果解決冷啟動(dòng)問(wèn)題也是關(guān)鍵?;谝陨峡紤],淘寶提出了一種圖嵌入(graph embedding)的方法來(lái)解決上面的三個(gè)問(wèn)題。
在淘寶的推薦中,面臨以下三個(gè)問(wèn)題:
可擴(kuò)展性(scalability):一些現(xiàn)有的推薦系統(tǒng)方法,在小規(guī)模數(shù)據(jù)集上效果很好,但是在想淘寶這樣的擁有十億用戶(hù)和二十億商品的數(shù)據(jù)集上,表現(xiàn)得并不好。
稀疏性(sparsity):用戶(hù)僅與非常少的商品有過(guò)交互行為,這樣的話(huà)很難精確訓(xùn)練一個(gè)推薦模型,也就是正負(fù)樣本的比例過(guò)大。
冷啟動(dòng)(cold start):在淘寶中,每個(gè)小時(shí)都有百萬(wàn)級(jí)別的新的商品上線(xiàn),這些商品沒(méi)有過(guò)用戶(hù)行為,預(yù)測(cè)用戶(hù)對(duì)這些商品的偏好是十分具有挑戰(zhàn)性的。
為了解決上面的這些問(wèn)題,淘寶也采用了業(yè)界常用的兩階段框架,第一階段稱(chēng)為匹配階段,也可以叫做召回階段,從大規(guī)模的商品集中召回一個(gè)比較小的候選集。第二階段是排序階段,對(duì)召回的候選集進(jìn)行精確排序,排序模型是一個(gè)深度神經(jīng)網(wǎng)絡(luò)模型。由于兩個(gè)階段的目標(biāo)是不同的,從而導(dǎo)致了單獨(dú)的技術(shù)解決方案。
前面提到了一般embedding都是運(yùn)用在召回階段的,youtube那篇文章就是向量召回的典范,因此本文的embedding策略也是著重于如何解決召回階段的挑戰(zhàn),其中的核心任務(wù)是根據(jù)用戶(hù)的行為計(jì)算所有物品之間的成對(duì)相似度。當(dāng)然,有了物品之間的相似度,我們就可以進(jìn)一步的得到召回的候選集并進(jìn)行排序了。在以往,我們可以通過(guò)CF(協(xié)同過(guò)濾)的方法計(jì)算物品之間的相似度,回一下CF方法,我們通過(guò)jaccard方法計(jì)算了物品之間的相似度,并且根據(jù)這個(gè)相似度進(jìn)行召回。但是協(xié)同過(guò)濾僅僅考慮了商品在交互矩陣中的共現(xiàn)性,相似度矩陣的計(jì)算要不斷的進(jìn)行更新,這也是一個(gè)比較棘手的問(wèn)題。
除了CF方法外,還有運(yùn)用圖的隨機(jī)游走策略來(lái)計(jì)算相似度。在之前的工作中,使用物品圖中的隨機(jī)游走策略,我們可以捕獲項(xiàng)目之間的高階相似性。因此,它優(yōu)于基于CF的方法。但是,要得到幾乎沒(méi)有交互作用甚至沒(méi)有交互作用的物品的準(zhǔn)確embedding仍然是一個(gè)挑戰(zhàn)。(我們將在下一篇文章中詳細(xì)介紹隨機(jī)游走,node2vec等embedding策略)。
因此,本文提出使用基于side information的圖嵌入學(xué)習(xí)方法,稱(chēng)作Graph Embedding with Side information (GES)。這里的side information你可以理解為輔助信息,比如一個(gè)商品的品牌、店鋪名、類(lèi)別等等。使用side information來(lái)學(xué)習(xí)商品的embedding的話(huà),同一個(gè)品牌或者類(lèi)別的商品應(yīng)當(dāng)更相似。但是在淘寶中,有數(shù)以百計(jì)的side information,這些side information對(duì)于商品向量的貢獻(xiàn)程度是不同的。考慮不同的side information對(duì)最終的item embedding的不同影響,這種方法稱(chēng)作Enhanced Graph Embedding with Side information (EGES)。
二 、模型結(jié)構(gòu)
在第一章里面我們提到了GES和EGES,為了作為對(duì)比還介紹了一種BGE方法,所以總共需要介紹三種方法,分別是Base Graph Embedding (BGE)、Graph Embedding with Side information (GES)和Enhanced Graph Embedding with Side information (EGES)。
2.1 Base Graph Embedding (BGE)

BGE方法可以參考上面這張圖,通過(guò)用戶(hù)的點(diǎn)擊序列構(gòu)建item graph,并用random walk的方法構(gòu)建序列,然后用skip-gram的方法訓(xùn)練出item embedding。
此外,從用戶(hù)的行為中抽取出序列表示,我們需要注意到幾點(diǎn)關(guān)鍵的地方。
一個(gè)是,如果使用用戶(hù)的全部點(diǎn)擊序列,那么對(duì)于這么多item,計(jì)算和空間成本將變得十分昂貴。
另一個(gè)是,用戶(hù)的興趣往往會(huì)隨著時(shí)間而變化。 因此實(shí)際上,我們?cè)O(shè)置了一個(gè)時(shí)間窗口,并且僅在該窗口內(nèi)選擇用戶(hù)的行為,這稱(chēng)為基于會(huì)話(huà)的用戶(hù)行為。 根據(jù)經(jīng)驗(yàn),時(shí)間窗口的持續(xù)時(shí)間為一小時(shí)。這個(gè)跟我們之前session切分方式是一樣的,切分的時(shí)間間隔一般是30min或者1h這樣。就如同上面這張圖中的u2,我們的session就切分為BE和DEF兩部分。
根據(jù)上一步,我們得到了每個(gè)用戶(hù)的session序列,接下來(lái)就是用這些session構(gòu)建帶權(quán)有向圖了。如圖中的B->E出現(xiàn)了一次,那么就會(huì)有一條從B指向E的帶權(quán)邊,同時(shí)邊的權(quán)重為1。注意到,這里是用所有用戶(hù)的session匯總起來(lái)得到一個(gè)有向帶權(quán)圖,并不是一個(gè)用戶(hù)對(duì)應(yīng)于一張圖。
在實(shí)際應(yīng)用中,需要對(duì)一些噪聲信息進(jìn)行過(guò)濾,主要有:
1)點(diǎn)擊之后用戶(hù)停留時(shí)間小于1s,這可能是用戶(hù)的無(wú)意點(diǎn)擊,需要過(guò)濾。
2)太過(guò)活躍的用戶(hù)進(jìn)行過(guò)濾,比如三個(gè)月內(nèi)購(gòu)買(mǎi)了1000件以上的商品,點(diǎn)擊了3500個(gè)以上的商品。這是為了避免活躍用戶(hù)對(duì)整個(gè)圖造成過(guò)大對(duì)影響。
3)同一個(gè)ID,但是發(fā)生變化的商品需要過(guò)濾。
構(gòu)建完帶權(quán)有向圖后,我們采用random walk的方法構(gòu)建skip-gram所需要的“句子”。

其中是item i 到item j的權(quán)重,P(vj | vi)是轉(zhuǎn)移的概率,N+是vi指向的所有item。
這樣,我們就得到了要訓(xùn)練的序列:

接下來(lái)就是我們經(jīng)典的skip-gram訓(xùn)練embedding的方法了:



這里應(yīng)該是maxmize吧,極大似然法,讓整個(gè)概率最大,后面的t是負(fù)采樣得到的負(fù)樣本。
2.2 Graph Embedding with Side information (GES)
上面的BGE方法,可以較好的學(xué)習(xí)到item embedding,但是冷啟動(dòng)問(wèn)題無(wú)法很好的解決?;诖耍岢隽薌raph Embedding with Side information方法。在電子商務(wù)中,side information是指商品的類(lèi)別,商店,價(jià)格等,它在排序階段被廣泛用作關(guān)鍵特征,而在召回階段卻很少應(yīng)用。我們可以通過(guò)在圖嵌入中加入輔助信息來(lái)緩解冷啟動(dòng)問(wèn)題。例如,優(yōu)衣庫(kù)(同一家商店)的兩個(gè)帽衫(相同類(lèi)別)可能看起來(lái)相似,并且喜歡尼康鏡頭的人也可能對(duì)佳能相機(jī)(相似類(lèi)別和相似品牌)感興趣。這意味著具有相似輔助信息的物品在嵌入空間中應(yīng)該更靠近。
為了與之前的item embedding區(qū)分開(kāi),在加入side information之后,我們稱(chēng)得到的embedding為商品的aggregated embeddings。商品v的aggregated embeddings計(jì)作Hv。aggregated embeddings的計(jì)算公式如下:

其中,是item v的item embedding,
是第s種side information的embedding,也就是將這些embedding作avg操作,然后得到aggregated embedding。
2.3 Enhanced Graph Embedding with Side information (EGES)
在GES中,aggregated embedding的計(jì)算就是所有的embedding簡(jiǎn)單的作平均,但是從現(xiàn)實(shí)中來(lái)看,每個(gè)side information 的embedding的重要性是不同的,比如商品的品牌就應(yīng)該有更大的權(quán)重,比如一個(gè)用戶(hù)喜歡購(gòu)買(mǎi)蘋(píng)果的產(chǎn)品,手機(jī)是iphone,電腦是mac,自然就能想到品牌應(yīng)該占據(jù)更大的權(quán)重。
因此,需要對(duì)上面的公式進(jìn)行改進(jìn),改為帶權(quán)重的avg:

其中,是第j個(gè)side information的embedding的權(quán)重,但是我們?yōu)榱俗屆總€(gè)side information都有貢獻(xiàn),就取了e的指數(shù)次方,其實(shí)就是softmax來(lái)計(jì)算權(quán)重。
2.4 GES和EGES的訓(xùn)練方法

直接來(lái)看這個(gè)圖,除了輸入部分跟基本的skip-gram不一樣,輸出跟skip-gram是一樣的,所以我們來(lái)解釋一下輸入部分。
輸入部分就是我們之前說(shuō)的帶權(quán)avg操作,但是權(quán)重參數(shù)a是可學(xué)習(xí)的參數(shù),這里可能論文提出的比較早,或許這里可以使用attention來(lái)操作一下。
損失函數(shù):

其中,v是中心item,u是v的上下文的item,H跟Z分別代表他們的embedding,y是label。
前面說(shuō)了a是學(xué)習(xí)的參數(shù),主要是來(lái)源于論文中的一個(gè)公式:

這里可以看到a是需要學(xué)習(xí)的參數(shù)。
同樣的其他的W的參數(shù)也是通過(guò)反向傳播學(xué)習(xí)到:

三 、實(shí)驗(yàn)結(jié)果和冷啟動(dòng)問(wèn)題
3.1 實(shí)驗(yàn)結(jié)果


當(dāng)然,肯定是EGES效果最好。
3.2 冷啟動(dòng)問(wèn)題
對(duì)于新加入的商品,我們使用其side information對(duì)應(yīng)的embedding的均值來(lái)代替它的embedding,這樣做的效果如下:

可以看到對(duì)于新加入的物品,用這種方法來(lái)代替它的embedding效果還是不錯(cuò)的。
side information的權(quán)重可視化:

可以看到,這種針對(duì)每一個(gè)item,本身的side information的權(quán)重都是不一樣的,這也是因?yàn)闄?quán)重參數(shù)a是訓(xùn)練出來(lái)的效果。