深度學習推薦系統中各類流行的Embedding方法(下)

Embedding技術概覽:
在這裏插入圖片描述

對其它Embedding技術不熟悉,可以看我的上一篇文章:

深度學習推薦系統中各類流行的Embedding方法(上)地址:https://mp.weixin.qq.com/s/D57jP5EwIx4Y1n4mteGOjQ

1. Graph Embedding簡介

Word2Vec和其衍生出的Item2Vec類模型是Embedding技術的基礎性方法,二者都是建立在“序列”樣本(比如句子、用戶行爲序列)的基礎上的。在互聯網場景下,數據對象之間更多呈現的是圖結構,所以Item2Vec在處理大量的網絡化數據時往往顯得捉襟見肘,在這樣的背景下,Graph Embedding成了新的研究方向,並逐漸在深度學習推薦系統領域流行起來。

Graph Embedding也是一種特徵表示學習方式,借鑑了Word2Vec的思路。在Graph中隨機遊走生成頂點序列,構成訓練集,然後採用Skip-gram算法,訓練出低維稠密向量來表示頂點。之後再用學習出的向量解決下游問題,比如分類,或者連接預測問題等。可以看做是兩階段的學習任務,第一階段先做無監督訓練生成表示向量,第二階段再做有監督學習,解決下游問題。

總之,Graph Embedding是一種對圖結構中的節點進行Embedding編碼的方法。最終生成的節點Embedding向量一般包含圖的結構信息及附近節點的局部相似性信息。不同Graph Embedding方法的原理不盡相同,對於圖信息的保留方式也有所區別,下面就介紹幾種主流的Graph Embedding方法和它們之間的區別與聯繫。

2. DeepWalk-Graph Embedding早期技術

早期,影響力較大的Graph Embedding方法是於2014年提出的DeepWalk,它的主要思想是在由物品組成的圖結構上進行隨機遊走,產生大量物品序列,然後將這些物品序列作爲訓練樣本輸入Word2Vec進行訓練,得到物品的Embedding。因此,DeepWalk可以被看作連接序列Embedding和Graph Embedding的過渡方法。
在這裏插入圖片描述
論文《Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba》用上圖所示的方法展現了DeepWalk的算法流程。DeepWalk算法的具體步驟如下:

  • 圖(a)是原始的用戶行爲序列。
  • 圖(b)基於這些用戶行爲序列構建了物品關係圖。可以看出,物品A和B之間的邊產生的原因是用戶U1先後購買了物品A和物品B。如果後續產生了多條相同的有向邊,則有向邊的權重被加強。在將所有用戶行爲序列都轉換成物品關係圖中的邊之後,全局的物品關係圖就建立起來了。
  • 圖(c)採用隨機遊走的方式隨機選擇起始點,重新產生物品序列。
  • 將這些物品序列輸入圖(d)所示的Word2Vec模型中,生成最終的物品Embedding向量。

在上述DeepWalk的算法流程中,唯一需要形式化定義的是隨機遊走的跳轉概率,也就是到達結點 viv_{i} 後,下一步遍歷 viv_{i} 的鄰接點 vjv_{j} 的概率。如果物品關係圖是有向有權圖,那麼從節點 viv_{i} 跳轉到節點 vjv_{j} 的概率定義如下式所示。
P(vjvi)={MijjN+(vi)Mij,vjN+(vi)0,eijε P(v_{j}|v_{i}) =\left\{ \begin{aligned} \frac{M_{ij}}{\sum_{j\in N_{+}(v_{i})}^{}{M_{ij}}} &, v_{j}\in N_{+}(v_{i}) \\ 0 &, e_{ij} \notin \varepsilon \\ \end{aligned} \right.

其中 ε\varepsilon 是物品關係圖中所有邊的集合, N+(vi)N_{+}(v_{i}) 是節點 viv_{i} 所有的出邊集合, MijM_{ij} 是節點 viv_{i} 到節點 vjv_{j} 邊的權重,即DeepWalk的跳轉概率就是跳轉邊的權重佔所有相關出邊權重之和的比例。

如果物品關係圖是無向無權圖,那麼跳轉概率將是上式的一個特例,即權重 MijM_{ij} 將爲常數11,且 N+(vi)N_{+}(v_{i}) 應是節點 viv_{i} 所有“邊”的集合,而不是所有“出邊”的集合。

注意: 在DeepWalk論文中,作者只提出DeepWalk用於無向無權圖。DeepWalk用於有向有權圖的內容是阿里巴巴論文《Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba》中提出的Base Graph Embedding(BGE)模型,其實該模型就是對DeepWalk模型的實踐,本文後邊部分會講解該模型。

DeepWalk相關論文:

【1】Perozzi B, Alrfou R, Skiena S, et al. DeepWalk: online learning of social representations[C]. knowledge discovery and data mining, 2014: 701-710.

【2】Wang J, Huang P, Zhao H, et al. Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba[C]. knowledge discovery and data mining, 2018: 839-848.

3. LINE-DeepWalk的改進

DeepWalk使用DFS(Deep First Search,深度優先搜索)隨機遊走在圖中進行節點採樣,使用Word2Vec在採樣的序列上學習圖中節點的向量表示。LINE(Large-scale Information Network Embedding)也是一種基於鄰域相似假設的方法,只不過與DeepWalk使用DFS構造鄰域不同的是,LINE可以看作是一種使用BFS(Breath First Search,廣度優先搜索)構造鄰域的算法。

在Graph Embedding各個方法中,一個主要區別是對圖中頂點之間的相似度的定義不同,所以先看一下LINE對於相似度的定義。

3.1 LINE定義圖中節點之間的相似度

現實世界的網絡中,相連接的節點之間存在一定的聯繫,通常表現爲比較相似或者在向量空間中距離接近。對於帶權網絡來說,節點之間的權越大,相似度會越高或者距離越接近,這種關係稱爲一階近鄰。一階近鄰關係用於描述圖中相鄰頂點之間的局部相似度, 形式化描述爲若頂點uuvv之間存在直連邊,則邊權wuvw_{uv}即爲兩個頂點的相似度,若不存在直連邊,則一階相似度爲00。 如下圖所示,6677之間存在直連邊,且邊權較大(表現爲圖中頂點之間連線較粗),則認爲兩者相似且一階相似度較高,而5566之間不存在直連邊,則兩者間一階相似度爲00

但是,網絡中的邊往往比較稀疏,僅僅依靠一階近鄰關係,難以描述整個網絡的結構。論文中定義了另外一種關係叫做二階近鄰。例如下圖中的網絡,節點55和節點1,2,3,4{1,2,3,4}相連,節點66也和節點1,2,3,4{1,2,3,4}相連,雖然節點5566之間沒有直接聯繫,但是節點5566之間很可能存在某種相似性。舉個例子,在社交網絡中,如果兩個人的朋友圈重疊度很高,或許兩個人之間具有相同的興趣並有可能成爲朋友;在NLP中,如果不同的詞經常出現在同一個語境中,那麼兩個詞很可能意思相近。

LINE通過捕捉網絡中的一階近鄰關係和二階近鄰關係,更加完整地描述網絡。並且LINE適用於有向圖、無向圖、有權圖、無權圖。
在這裏插入圖片描述

3.2 LINE算法模型

(1)一階近鄰關係模型

一階近鄰關係模型中定義了兩個概率,一個是聯合概率,如下公式所示:
p1(vi,vj)=11+exp(uiTuj) p_1(v_i, v_j) = \frac1 {1 + exp( - \vec{u}^{T}_i \cdot \vec{ u}_j)}

其中, ui\vec{u}_{i} 是圖中節點 viv_{i} 的向量表示,上式表示節點 viv_ivjv_j 之間的相似程度,這是一個sigmoid函數。

另外一個是經驗概率,如下公式所示:
p^1(i,j)=wijW,W=(i,j)Ewij \hat{p}_1(i,j)=\frac{w_{ij}}{W} , W=\sum_{(i,j)\in E} w_{ij}

其中, wijw_{ij} 是節點 viv_ivjv_j 之間的權重。優化目標爲最小化下式:
O1=d(p^1(,),p1(,)) O_1=d(\hat{p}_1(\cdot,\cdot),p_1(\cdot,\cdot))
其中,d(,)d(\cdot,\cdot)是兩個分佈的距離,目標是期望兩個概率分佈接近,利用KL散度來計算相似性,丟掉常數項之後,得到下面公式:
O1=(i,j)Ewijlogp1(vi,vj) O_1=-\sum_{(i,j)\in E}w_{ij}\log{p_1(v_i,v_j)}
一階近鄰關係模型的優化目標就是最小化 O1O_1 。可以看到,上面這些公式無法表達方向概念,因此一階近鄰關係模型只能描述無向圖。

(2)二階近鄰關係模型

二階近鄰關係描述的是節點與鄰域的關係,每個節點有兩個向量,一個是該頂點本身的表示向量,一個是該頂點作爲其他頂點的鄰居時的表示向量,因此論文中對每個節點定義了兩個向量, ui\vec{u}_i 表示節點ii本身, uj\vec{u}_j' 是節點jj作爲鄰居的向量表示。針對每一個從節點iijj的有向邊 (i,j)(i,j),定義一個條件概率,如下式:
p2(vjvi)=exp(ujTui)k=1Vexp(ukTui) p_2(v_j|v_i)=\frac {exp(\vec{u}_j'^{T} \cdot \vec{u}_i)} {\sum_{k=1}^{|V|} exp(\vec{u}_k'^{T} \cdot \vec{u}_i)}
其中,V|V|是圖中所有的節點數量,這其實是一個softmaxsoftmax函數。同樣,還有一個經驗概率,如下式:
p^2(vjvi)=wijdi,di=kN(i)wik \hat {p}_2(v_j|v_i)=\frac {w_{ij}} {d_i}, d_i=\sum_{k\in N(i)}w_{ik}
其中, wijw_{ij} 是邊(i,j)(i,j)的邊權,did_i是從頂點viv_i出發指向鄰居節點的所有邊權之和,N(i)N(i)是從節點ii出發指向鄰居的所有邊集合。同樣需要最小化條件概率和經驗概率之間的距離,優化目標爲:
O2=iVλid(p^2(vi),p2(vi)) O_2=\sum _{i \in V}\lambda_i d(\hat p_2(\cdot |v_i), p_2(\cdot|v_i))

其中,λi\lambda_i爲控制節點重要性的因子,可以通過頂點的度數或者PageRank等方法估計得到。假設度比較高的節點權重較高,令 λi=di\lambda_i=d_i ,採用KL散度來計算距離,略去常數項後,得到公式:
O2=(i,j)Ewijlogp2(vjvi) O_2=-\sum_{(i,j) \in E} w_{ij}logp_2(v_j|v_i)
直接優化上式計算複雜度很高,每次迭代需要對所有的節點向量做優化,論文中使用Word2Vec中的負採樣方法,得到二階近鄰的優化目標,如下公式所示。從計算的過程可以看到,二階相似度模型可以描述有向圖。
O2=(i,j)Ewij(logσ(ujTui)+i=1KEvnPn(v)[logσ(unTui)]) O_2=-\sum _{(i,j) \in E} w_{ij} \cdot (log\sigma(\vec{u}'^{T}_j \cdot \vec{u}_i) + \sum _{i=1}^{K} E_{v_n\sim P_n(v)}[log \sigma(- \vec{u}'^{T}_n \cdot \vec{u}_i)])

對比一階近鄰模型和二階近鄰模型的優化目標,差別就在於,二階近鄰模型對每個節點多引入了一個向量表示。實際使用的時候,對一階近鄰模型和二階近鄰模型分別訓練,然後將兩個向量拼接起來作爲節點的向量表示。

此外有一點需要說明,在Graph Embedding方法中,例如DeepWalk、Node2Vec、EGES,都是採用隨機遊走的方式來生成序列再做訓練,而LINE直接用邊來構造樣本,這也是他們的一點區別。

LINE論文:

【1】Tang J, Qu M, Wang M, et al. Line: Large-scale information network embedding[C]//Proceedings of the 24th international conference on world wide web. 2015: 1067-1077.

4. node2vec - DeepWalk的改進

2016年,斯坦福大學的研究人員在DeepWalk的基礎上更進一步,提出了node2vec模型,它通過調整隨機遊走權重的方法使Graph Embedding的結果更傾向於體現網絡的同質性(homophily)或結構性(structural equivalence)。

4.1 node2vec的同質性和結構性

具體的講,網絡的“同質性”指的是距離相近節點的Embedding應儘量近似,如下圖所示,節點 uu 與其相連的節點 s1,s2,s3,s4s_{1},s_{2},s_{3},s_{4} 的Embedding表達應該是接近的,這就是網絡的“同質性”的體現。

“結構性”指的是結構上相似的節點Embedding應儘量近似,下圖中節點 UU 和節點 s6s_{6} 都是各自局域網絡的中心節點,結構上相似,其Embedding的表達也應該近似,這是“結構性”的體現。
在這裏插入圖片描述

爲了使Graph Embedding的結果能夠表達網絡的“結構性”,在隨機遊走過程中,需要讓遊走的過程更傾向於BFS,因爲BFS會更多地在當前節點的鄰域中游走遍歷,相當於對當前節點周邊的網絡結構進行一次“微觀掃描”。當前節點是“局部中心節點”,還是“邊緣節點”,或是“連接性節點”,其生成的序列包含的節點數量和順序必然是不同的,從而讓最終的Embedding抓取到更多結構性信息。

另外,爲了表達“同質性”,需要讓隨機遊走的過程更傾向於DFS,因爲DFS更有可能通過多次跳轉,遊走到遠方的節點上,但無論怎樣,DFS的遊走更大概率會在一個大的集團內部進行,這就使得一個集團或者社區內部的節點的Embedding更爲相似,從而更多地表達網絡的“同質性”。

但是在不同的任務中需要關注的重點不同,可能有些任務需要關注網絡的homophily,而有些任務比較關注網絡的structural equivalence,可能還有些任務兩者兼而有之。在DeepWalk中,使用DFS隨機遊走在圖中進行節點採樣,使用Word2Vec在採樣的序列學習圖中節點的向量表示,無法靈活地捕捉這兩種關係。

實際上,對於這兩種關係的偏好,可以通過不同的序列採樣方式來實現。有兩種極端的方式,一種是BFS,如上圖中紅色箭頭所示,從u出發做隨機遊走,但是每次都只採樣頂點u的直接鄰域,這樣生成的序列通過無監督訓練之後,特徵向量表現出來的是structural equivalence特性。另外一種是DFS,如上圖中藍色箭頭所示,從u出發越走越遠,學習得到的特徵向量反應的是圖中的homophily關係。

4.2 node2vec算法

那麼在node2vec算法中,是怎麼控制BFS和DFS的傾向性呢?主要是通過節點間的跳轉概率。下圖所示爲node2vec算法從節點tt跳轉到節點vv,再從節點vv跳轉到周圍各點的跳轉概率。假設從某頂點出發開始隨機遊走,第i1i-1步走到當前頂點vv,要探索第ii步的頂點xx,如下圖所示。下面的公式表示從頂點vvxx的跳轉概率,EE是圖中邊的集合,(v,x)(v, x)表示頂點vvxx之間的邊,πvx\pi_{vx} 表示從節點vv跳轉到下一個節點xx的概率,ZZ是歸一化常數。

帶偏隨機遊走的最簡單方法是基於下一個節點邊權重 wvxw_{vx} 進行採樣,即 πvx=wvx\pi _{vx} = w_{vx}ZZ是權重之和。對於無權重的網絡,wvx=1w_{vx}=1。最簡單的方式,就是按照這個轉移概率進行隨機遊走,但是無法控制BFS和DFS的傾向性。
P(ci=xci1=v)={πvxZif(v,x)E0otherwise P(c_i=x|c_{i-1}=v)=\begin{cases} \frac{\pi_{vx}}{Z} \quad if (v,x)\in E \\ 0 \quad otherwise \end{cases}
在這裏插入圖片描述
node2vec用兩個參數ppqq定義了一個二階隨機遊走,以控制隨機遊走的策略。假設當前隨機遊走經過邊(t,v)(t,v)到達頂點vv,現在要決定從節點vv跳轉到下一個節點xx,需要依據邊(v,x)(v,x)上的跳轉概率 πvx\pi_{vx} 。設πvx=αpq(t,x)wvx\pi_{vx}=\alpha_{pq}(t,x)\cdot w_{vx}wvxw_{vx}是頂點vvxx之間的邊權;αpq(t,x)\alpha_{pq}(t,x)是修正係數,定義如下:
αpq(t,x)={1p,ifdtx=01,ifdtx=11q,ifdtx=2 \alpha_{pq}(t,x)=\begin{cases} \frac{1}{p}, \quad if\quad d_{tx}=0\\1,\quad if \quad d_{tx}=1\\ \frac{1}{q},\quad if \quad d_{tx}=2 \end{cases}
上式中dtxd_{tx}表示下一步頂點xx和頂點tt之間的最短距離,只有33種情況,如果又回到頂點tt,那麼dtx=0d_{tx}=0;如果xxtt直接相鄰,那麼dtx=1d_{tx}=1;其他情況dtx=2d_{tx}=2。參數ppqq共同控制着隨機遊走的傾向性。參數pp被稱爲返回參數(return parameter),控制着重新返回頂點tt的概率。如果p>max(q,1)p > max(q,1),那麼下一步較小概率重新返回頂點tt;如果p<max(q,1)p < max(q,1),那麼下一步會更傾向於回到頂點tt,node2vec就更注重表達網絡的結構性。參數qq被稱爲進出參數(in-out parameter),如果q>1q>1,那麼下一步傾向於回到tt或者tt的臨近頂點,這接近於BFS的探索方式;如果q<1q<1,那麼下一步傾向於走到離tt更遠的頂點,接近於DFS尋路方式,node2vec就更加註重表達網絡的同質性。因此,可以通過設置ppqq來控制遊走網絡的方式。所謂的二階隨機遊走,意思是說下一步去哪,不僅跟當前頂點的轉移概率有關,還跟上一步頂點相關。在論文中試驗部分,作者對ppqq的設置一般是22的指數,比如{14,12,1,2,4}\{ \frac{1}{4}, \frac{1}{2}, 1, 2, 4\}

node2vec這種靈活表達同質性和結構性的特點也得到了實驗的證實,通過調整參數ppqq產生了不同的Embedding結果。下圖中的上半部分圖片就是node2vec更注重同質性的體現,可以看到距離相近的節點顏色更爲接近,下圖中下半部分圖片則更注重體現結構性,其中結構特點相近的節點的顏色更爲接近。
在這裏插入圖片描述

4.3 node2vec在推薦系統中的思考

node2vec所體現的網絡的同質性和結構性在推薦系統中可以被很直觀的解釋。同質性相同的物品很可能是同品類、同屬性,或者經常被一同購買的商品,而結構性相同的物品則是各品類的爆款、各品類的最佳湊單商品等擁有類似趨勢或者結構性屬性的商品。毫無疑問,二者在推薦系統中都是非常重要的特徵表達。由於node2vec的這種靈活性,以及發掘不同圖特徵的能力,甚至可以把不同node2vec生成的偏向“結構性”的Embedding結果和偏向“同質性”的Embedding結果共同輸入後續的深度學習網絡,以保留物品的不同圖特徵信息。

node2vec論文:

【1】Grover A, Leskovec J. node2vec: Scalable feature learning for networks[C]//Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining. 2016: 855-864.

5. EGES - Graph Embedding最佳實踐

2018 年,阿里巴巴公佈了其在淘寶應用的Embedding方法 EGES(Enhanced Graph Embedding with Side Information)算法,其基本思想是Embedding過程中引入帶權重的補充信息(Side Information),從而解決冷啓動的問題。

淘寶平臺推薦的三個問題:

  • 可擴展性(scalability):已有的推薦算法(CF、Base-Content、DL)可以在小數據集上有不錯效果,但是對於10億用戶和20億商品這樣海量的數據集上效果差。
  • 稀疏性(sparsity):用戶僅與小部分商品交互,難以訓練準確的推薦模型。
  • 冷啓動(cold start):物品上新頻繁,然而這些商品並沒有用戶行爲,預測用戶對這些商品的偏好是十分具有挑戰性的。

現在業界針對海量數據的推薦問題通用框架是分成兩個階段,即matchingranking。在matching階段,我們會生成一個候選集,它的items會與用戶接觸過的每個item具有相似性;接着在ranking階段,我們會訓練一個深度神經網絡模型,它會爲每個用戶根據他的偏好對候選items進行排序。論文關注的問題在推薦系統的matching階段,也就是從商品池中召回候選商品的階段,核心的任務是計算所有item之間的相似度。

爲了達到這個目的,論文提出根據用戶歷史行爲構建一個item graph,然後使用DeepWalk學習每個item的embedding,即Base Graph Embedding(BGE)。BGE優於CF,因爲基於CF的方法只考慮了在用戶行爲歷史上的items的共現率,但是對於少量或者沒有交互行爲的item,仍然難以得到準確的embedding。爲了減輕該問題,論文提出使用side information來增強embedding過程,提出了Graph Embedding with Side information (GES)。例如,屬於相似類別或品牌的item的embedding應該相近。在這種方式下,即使item只有少量交互或沒有交互,也可以得到準確的item embedding。在淘寶場景下,side information包括:category、brand、price等。不同的side information對於最終表示的貢獻應該不同,於是論文進一步提出一種加權機制用於學習Embedding with Side Information,稱爲Enhanced Graph Embedding with Side information (EGES)

5.1 基於圖的Embedding(BGE)

在這裏插入圖片描述
該方案是 DeepWalk 算法的實踐,具體流程如下:

  • 首先,我們擁有上億用戶的行爲數據,不同的用戶,在每個 Session 中,訪問了一系列商品,例如用戶 u2 兩次訪問淘寶,第一次查看了兩個商品 B-E,第二次產看了三個商品 D-E-F。
  • 然後,通過用戶的行爲數據,我們可以建立一個商品圖(Item Graph),可以看出,物品A,B之間的邊產生的原因就是因爲用戶U1先後購買了物品A和物品B,所以產生了一條由A到B的有向邊。如果後續產生了多條相同的有向邊,則有向邊的權重被加強。在將所有用戶行爲序列都轉換成物品相關圖中的邊之後,全局的物品相關圖就建立起來了。
  • 接着,通過 Random Walk 對圖進行採樣,重新獲得商品序列。
  • 最後,使用 Skip-gram 模型進行 Embedding 。

Base Graph Embedding 與 DeepWalk 不同的是:通過 user 的行爲序列構建網絡結構,並將網絡定義爲有向有權圖。 其中:根據行爲的時間間隔,將一個 user 的行爲序列分割爲多個session。session分割可以參考Airbnb這篇論文《Real-time Personalization using Embeddings for Search Ranking at Airbnb》。

5.2 使用Side Information的GE(GES)

通過使用BGE,我們能夠將items映射到高維向量空間,並考慮了CF沒有考慮的用戶序列關係。但是我們依然沒有解決冷啓動的問題。爲了解決冷啓動問題,我們使用邊信息( category, shop, price, etc)賦值給不同的item。因爲邊信息相同的兩個item,理論而言會更接近。通過DeepWalk方案得到item的遊走序列,同時得到對應的邊信息(category,brand,price)序列。然後將所有序列放到Word2Vec模型中進行訓練。針對每個 item,將得到:item_embedding,category_embedding,brand_embedding,price_embedding 等 embedding 信息。爲了與之前的item embedding區分開,在加入Side information之後,我們稱得到的embedding爲商品的aggregated embeddings。商品 的aggregated embeddings爲:
Hv=1n+1s=0nWvs H_v = \frac{1}{n+1}\sum_{s=0}^{n}W_{v}^{s}
對上式做一個簡單的解釋:針對每個 item,將得到:item_embedding,category_embedding,brand_embedding,price_embedding 等 embedding 信息。將這些 embedding 信息求均值來表示該 item的Embedding。

需要注意的一點是,item 和 side information(例如category, brand, price等) 的 Embedding 是通過 Word2Vec 算法一起訓練得到的。 如果分開訓練,得到的item_embedding和category_embedding(brand_embedding,price_embedding)不在一個向量空間中,做運算無意義。即:通過 DeepWalk 方案得到 item 的遊走序列,同時得到對應的(category,brand,price)序列。然後將所有序列數據放到Word2Vec模型中進行訓練。

5.3 增強型GES(EGES)

GES中存在一個問題是,針對每個item,它把所有的side information embedding求和後做了平均,沒有考慮不同的side information 之間的權重,EGES就是讓不同類型的side information具有不同的權重,提出來一個加權平均的方法來聚集這些邊界embedding。
在這裏插入圖片描述
因爲每個item對其不同邊信息的權重不一樣,所以就需要額外矩陣AA來表示每個item邊信息的權重,其大小爲v(n+1)v*(n+1)vv是item的個數,nn是邊信息的個數,加11是還要考慮item自身Embedding的權重。爲了簡單起見,我們用avja_{v}^{j}表示第vv個item、第jj個類型的side information的權重。av0a_{v}^{0}表示第vv個item自身Embedding的權重。這樣就可以獲得加權平均的方法:
Hv=j=0neavjWvjj=0neavj H_v = \frac{\sum_{j=0}^{n}e^{a_{v}^{j}}W_{v}^{j}}{\sum_{j=0}^{n}e^{a_{v}^{j}}}
這裏對權重項avja_{v}^{j}做了指數變換,目的是爲了保證每個邊信息的貢獻都能大於00。權重矩陣AA通過模型訓練得到。

EGES算法應用改進的Word2Vec算法(Weighted Skip-Gram)確定模型的參數。對上圖中EGES算法簡單說明如下:

  • 上圖的Sparse Features代表 item 和 side information 的ID信息;
  • Dense Embeddings 表示 item 和 side information 的 embedding 信息;
  • α0,α1,...,αn\alpha_0,\alpha_1,...,\alpha_n 分別代表 item 和 side information 的 embedding 權重;
  • Sampled Softmax Classifier中的NN代表採樣的負樣本(見論文中的Algorithm 2 Weighted Skip-Gram描述的第8行),PP代表正樣本(某個item周邊上下n個item均爲正樣本,在模型中表示時不區分遠近);

EGES並沒有過於複雜的理論創新,但給出了一個工程上的融合多種Embedding的方法,降低了某類信息缺失造成的冷啓動問題,是實用性極強的Embedding方法。

EGES論文:

【1】Wang J, Huang P, Zhao H, et al. Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba[C]. knowledge discovery and data mining, 2018: 839-848.

6. 總結

時至今日,Graph Embedding仍然是工業界和學術界研究和實踐的熱點,除了本文介紹的DeepWalk、LINE、node2vec、EGES等主流方法,SDNE、struct2vec等方法也是重要的Graph Embedding模型,感興趣的讀者可以自己查找相關文獻進一步學習。

7. Reference

【1】《深度學習推薦系統》王喆編著。
【2】【Graph Embedding】DeepWalk:算法原理,實現和應用 - 淺夢的文章 - 知乎 https://zhuanlan.zhihu.com/p/56380812
【3】【論文筆記】DeepWalk - 陌上疏影涼的文章 - 知乎 https://zhuanlan.zhihu.com/p/45167021
【4】【Graph Embedding】LINE:算法原理,實現和應用 - 淺夢的文章 - 知乎 https://zhuanlan.zhihu.com/p/56478167
【5】Graph Embedding:從DeepWalk到SDNE - 羽刻的文章 - 知乎 https://zhuanlan.zhihu.com/p/33732033
【6】Graph Embedding之探索LINE - 張備的文章 - 知乎 https://zhuanlan.zhihu.com/p/74746503
【7】【Graph Embedding】node2vec:算法原理,實現和應用 - 淺夢的文章 - 知乎 https://zhuanlan.zhihu.com/p/56542707
【8】node2vec在工業界的應用-《當機器學習遇上覆雜網絡:解析微信朋友圈 Lookalike 算法》,地址:https://mp.weixin.qq.com/s/EV-25t2lWT2JJMLhXsz4zQ
【9】graph embedding之node2vec - 張備的文章 - 知乎 https://zhuanlan.zhihu.com/p/63631102
【10】Graph Embedding在淘寶推薦系統中的應用 - 張備的文章 - 知乎 https://zhuanlan.zhihu.com/p/70198918
【11】Graph Embedding - 阿里EGES算法 - 王多魚的文章 - 知乎 https://zhuanlan.zhihu.com/p/69069878
【12】Graph Embedding:深度學習推薦系統的"基本操作" - 顧鵬的文章 - 知乎 https://zhuanlan.zhihu.com/p/68247149
【13】論文閱讀:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba,地址:https://blog.csdn.net/Super_Json/article/details/85537938

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章