您當前的位置:首頁 > 動漫

推薦系統中二分圖表示學習調研

作者:由 蘑菇先生 發表于 動漫時間:2022-10-30

本篇文章主要介紹圖表示學習在推薦系統中常見的user-item interaction資料上的建模。我們可以將user-item interaction data看做是關於user-item的二分圖Bipartite,這樣可以基於GNN的方法進行user和item embedding的學習。主要介紹三篇頂會文章,如下:

KDD2018,GCMC:Graph Convolutional Matrix Completion,在movie-len上的state of the art模型。

SIGIR2019,NGCF:Neural Graph Collaborative Filtering,據我所知應該是首次提出圖協同過濾的概念。

MM2019,MMGCN: Multi-modal Graph Convolution Network for Personalized Recommendation of Micro-video,多模態圖卷積網路,用於短影片的推薦。

1。 GCMC

KDD2018: Graph Convolutional Matrix Completion

1。1 Introduction

這是一篇發表在KDD2018(二作T。N。Kipf是著名的GCN的一作)的文章。將矩陣補全問題看做是關於user-item 二分圖的連結預測問題(a bipartite user-item graph with labeled edges),每種連結邊可以看做是一種label(例如多種互動行為:點選,收藏,喜歡,下載等;在評分中,1~5分可以分別看做一種label)。有點像multi-view bipartite graph。作者提出了一個差異化資訊傳遞(differentiable message passing)的概念,透過在bipartite interaction graph上進行差異化資訊傳遞來學習結點的嵌入,再透過一個bilinear decoder進行連結預測。

1。2 Formulation

給定關於使用者-物品互動資料的二分圖,

G=(\mathcal{W}, \mathcal{E}, \mathcal{R})

,其中

\mathcal{W}

是結點,包括使用者結點

u_i \in \mathcal{W}_u, i=\{1,...,N_u\}

和物品結點

v_j \in \mathcal{W}_v, j=\{1,...,N_v\}

\mathcal{W}=\mathcal{W}_u \cup \mathcal{W}_v

。 邊

(u_i ,r,v_j ) \in \mathcal{E}

代表了使用者

u_i

v_j

的互動行為型別為

r

r \in \mathcal{R}=\{1,...,R\}

。其中

R

是總的互動型別種數。這裡的互動行為原文中使用的是評分level來代表,如1~5分,則代表5種rating level,即:

R=5

推薦系統中二分圖表示學習調研

GCMC: Transform Rating matrix to Bipartite Graph, Then Learn a Graph Auto-Enocder, Finally Train using Link Prediction Loss Function

看做一個graph auto-encoders。Graph Encoder Model形如:

[Z_u ,Z_v ] = f (X_u ,X_v , M_1 , . . . , M_R)

。其中,

X_u, X_v

是使用者或物品的Feature矩陣。

M_r \in \{0, 1\}^{N_u \times N_v}

是和互動型別

r

相關的鄰接矩陣。

Z_u, Z_v

是輸出的結點嵌入。Decoder形如:

\hat{M} = (Z_u ,Z_v)

用於預測

u

v

的連結型別或評分矩陣的評分值。然後使用重構誤差最小化來訓練模型,如RMSE或交叉熵。

1。3 Models

1。3。1 Graph convolutional encoder

作者首先提出了一種針對不同rating level的sub-graph分別進行區域性圖卷積,再進行匯聚的encoder模型。這種區域性圖卷積可以看做是一種資訊傳遞(message passing),即:向量化形式的message在圖中不同的邊上進行傳遞和轉換。每種邊特定的資訊傳遞過程如下(edge-type specific message),以item

j

傳遞到 user

i

為例:

\mu_{j \rightarrow i, r}= \frac{1}{c_{ij}} W_r x_j^v \tag{1}

其中,

c_{ij}

是歸一化常數因子,如

|\mathcal{N}(u_i)|

\sqrt{|\mathcal{N}(u_i) \mathcal{N}(v_j)}

W_r

是 edge-type specific parameter matrix。

x_j^v

是item

j

初始的特徵,作者採用的是unique one-hot vector作為特徵。相當於把

x_j^v

這一資訊傳遞到了使用者結點

i

上。這樣針對每種型別的邊,可以把所有

i

的鄰域節點傳遞過來的資訊做個累加操作,

\sum_{j \in \mathcal{N}_r(u_i)}{\mu_{{j \rightarrow i} , r}}

\text{for } r = 1,2,...,R

接著需要將不同edge-type採集到的資訊進行一個匯聚,

h_i^v = \sigma \left[\text{accum}\left(\sum_{j \in \mathcal{N}_1(u_i)}{\mu_{{j \rightarrow i} , 1}},...,\sum_{j \in \mathcal{N}_r(u_i)}{\mu_{j \rightarrow i , r}},..., \sum_{j \in \mathcal{N}_R(u_i)}{\mu_{{j \rightarrow i} , R}}\right)\right] \tag{2}

上式的

\text{accum}

是一個匯聚操作,例如可以採用連線操作或求和操作,

\sigma

是啟用函式,例如Relu。 完整的式(2)稱為graph convolution layer,可以疊加多個graph convolution layer。

為了得到使用者

u_i

最終的embedding,作者加了個全連線層做了個變換:

z_{i}^u = \sigma(W h_i^u) \tag{3}

物品

v_i

的embedding和使用者

u_i

的求解是對稱的,只不過使用的是兩套引數。

作為拓展,值得一提的是,很多人忽略了歸一化因子

c_{ij}

的重要性。一種觀點是隨著GCN層數的疊加,

c_{ij}

起著embedding平滑的作用(Embedding Smoothness)。我們以二層GCN為例,從協同過濾角度來闡述這一歸一化因子的重要性(源自另一篇文章的觀點LightGCN)。此處忽略多檢視

r

以及非線性

\sigma

。令,

c_{ij}=\sqrt{|\mathcal{N}(u_i) \mathcal{N}(v_j)|}

為例,記

\boldsymbol{e}_j^{(1)}=W x_j^v

,當

x_j

為id one-hot vector時,可以認為就是item的嵌入;user同理。根據式子2,neighbor aggregation操作。我們觀察使用者

u, v

是如何產生協同過濾效果的。

\begin{aligned} \boldsymbol{e}_u^{(2)} &= \sum_{j \in \mathcal{N}_u} \frac{1}{\sqrt{|\mathcal{N}_u| \cdot  |\mathcal{N}_j}|} \boldsymbol{e}_j^{(1)}= \sum_{j \in \mathcal{N}_u} \frac{1}{\sqrt{|\mathcal{N}_u| \cdot |\mathcal{N}_j}|} (\sum_{v \in \mathcal{N}_j} \frac{1}{\sqrt{|\mathcal{N}_j| \cdot |\mathcal{N}_v|}}\boldsymbol{e}_v^{(0)}) \\ &=\sum_{j \in \mathcal{N_u}} \frac{1}{|\mathcal{N}_j|} \sum_{v \in \mathcal{N}_j} \frac{1}{\sqrt{|\mathcal{N}_u| \cdot |\mathcal{N}_v|}} \boldsymbol{e}_v^{(0)} \end{aligned} \tag{4}

可以看出如果

u

v

存在共同互動過的item

j

(從公式看,

j

u

的鄰居,

v

j

的鄰居,故

j

u, v

的co-interacted item),則

v

u

的平滑強度可以使用下述係數來表示 (the smoothness strength of v on u is measured by the coefficient),

c_{v \rightarrow u} = \frac{1}{\sqrt{|\mathcal{N}_u| \cdot |\mathcal{N}_v|}} \sum_{j \in \mathcal{N}_u \cap \mathcal{N}_v} \frac{1}{|\mathcal{N}_j|} \tag{5}

非co-interacted items對上式不起作用,故可以直接去掉,重新整理得到該係數。這個係數具備很強的可解釋性,可以從協同過濾角度來闡述second-order的近鄰

v

u

嵌入表示的影響。

co-interacted items

越多

,則

v

u

協同影響

越大,對應係數中的求和項。co-interacted items溝通了

u,v

,顯然越多,協同影響的越大。

co-interacted items本身

越不流行

,則

v

u

的影響越大,對應

1/|\mathcal{N}_j|

項。越不流行的items富含的資訊量越大。一個item很不流行,而

u,v

卻都互動過,那這個item產生的協同影響效果顯然越大越好。

v

的互動行為

越稀少

,則

v

u

的影響越大,對應求和前的

1/\sqrt{|\mathcal{N}_v|}

。越不活躍的users提供的協同訊號越重要。

u

和一個很不活躍的使用者

v

共同互動過某個item,顯然這個是很少見的情況,

v

能提供更多的協同訊號。

上述係數從衡量user similarity的協同過濾角度提供了完美的可解釋性。

1。3。2 Bilinear decoder

為了重構二分圖上的連結,作者採用了bilinear decoder,把不同的rating level分別看做一個類別。bilinear operation後跟一個softmax輸出每種類別的機率:

p(\hat{M}_{ij}=r)=\text{softmax}((z_i^u)^T Q_r z_j^v) \tag{6}

Q_r

是可訓練的edge-type r特定的引數。

則最終預測的評分是關於上述機率分佈的期望:

\hat{M_{ij}} = g(u_i ,v_j) = E_{p(\hat{M}_{ij}=r)}[r] = r p(\hat{M}_{ij}= r) \tag{7}

如果想進行大規模的推薦的話,可以基於user和item的embedding實現一個map-reduce的biinear decoder進行topk推薦。

1。3。3 Model Training

最小化 negative log likelihood of the predicted ratings

\hat{M}_{ij}

\mathcal{L} = − \sum_{i,j;Ω_{ij}=1} \sum_{r=1}^R I[M_{ij}=r] \log p(\hat{M}_{ij}=r) \tag{8}

作者在訓練過程中,還使用了一些特殊的最佳化點。

Node dropout

對特定的某個節點,隨機地將outgoing的資訊隨機drop掉。這能夠有效的提高模型的魯棒性。例如:去除掉某個結點時,模型效能不會有太大的變化。

Weight sharing

不是所有的使用者或物品在不同rating level上都擁有相等的評分數量。這會導致在區域性卷積時,

W_r

上某些列可能會比其他列更少地被最佳化。因此需要使用某種在不同的

r

之間進行引數共享的方法。

W_r = \sum_{s=1}^r T_s \tag{9}

T_s

是基礎矩陣。也就是說越高評分,

W_r

包含的

T_s

數量越多。

作者採用了一種基於基礎引數矩陣的線性組合的引數共享方法:

Q_r = \sum_{s=1}^{n_b} a_{rs} P_s \tag{10}

其中,

n_b

是基礎權重矩陣的個數,

P_s

是基礎權重矩陣。

a_{rs}

是可學習的係數。

1。3。4 Side Information

為了建模結點的輔助資訊,作者在對

h_i^u

做全連線層變換時,考慮了結點的輔助資訊:

z_{i}^u = \sigma(W h^u_i +W_2^{u,f} f_i^u), f_i^u = σ(W_1^{u,f} x_i^{u,f} + b^u) \tag{11}

即:先對特徵

x_i^{u,f}

做一個變換得到

f_i^u

。與

h^u_i

經過線性變換後加起來並激活,最終得到結點的嵌入表示。

1。3。5 Summary

總結一下整體的過程,模型的核心過程形式化如下:

\boldsymbol{z}_i^u, \boldsymbol{z}_j^v = \text{GNN-Encoder}(\mathcal{G}_{u,i}) \tag{12}

p(\hat{M}_{ij}=r)= \text{softmax}\left(\text{Bilinear-Decoder}(\boldsymbol{z}_i^u, \boldsymbol{z}_j^v)\right) \tag{13}

\mathcal{L} = − \sum_{i,j;Ω_{ij}=1} \sum_{r=1}^R I[M_{ij}=r] \log p(\hat{M}_{ij}=r) \tag{14}

\hat{M_{ij}} = g(u_i ,v_j) = E_{p(\hat{M}_{ij}=r)}[r] = r p(\hat{M}_{ij}= r) \tag{15}

先經過GNN-Encoder輸出user和item的嵌入表示(公式13),再經過Bilinear Decoder輸出屬於不同評分值的機率(公式11),最後公式(14)是關於評分多分類問題的交叉熵損失。具體預測的時候使用公式(15)預測評分,進行topk推薦。

2。 NGCF

SIGIR2019: Neural Graph Collaborative Filtering

2。1 Intuition

這是何向南教授團隊在SIGIR2019發表的一篇文章。為了解決傳統的方法主要透過user或item的pre-existing fetures的對映得到user和item的embedding,而缺乏了user和item之間重要的協同資訊(collaborative signal)這一問題,作者提出了一種新的推薦框架——神經圖協同過濾。這篇文章核心的目標問題在於如何更好的將user-item之間的協同資訊建模到user和item的emebdding表示中。

We develop a new recommendation framework Neural Graph Collaborative Filtering (NGCF),

which exploits the user-item graph structure by propagating embeddings on it。

This leads to the expressive modeling of high-order connectivity in user-item graph,

effectively injecting the collaborative signal into the embedding process in an explicit manner。

傳統的方法無法學到很好的Embedding,歸咎於缺乏對於重要的

協同資訊

顯示地進行編碼過程,這個協同資訊隱藏在user-item互動資料中,蘊含著users或者items之間的行為相似性。更具體地來說,傳統的方法主要是對ID或者屬性進行編碼得到embedding,再基於user-item interaction定義重構損失函式並進行解碼。可以看出,user-item interaction只用到瞭解碼端,而沒有用到編碼端。這樣會導致,學習到的embedding的資訊量不夠,為了更好的預測,只能依賴於複雜的interaction (decoder) function來彌補次優的embedding在預測上的不足。

The key reason is that the embedding function lacks an explicit encoding of the crucial collaborative signal,

which is latent in user-item interactions to reveal the behavioral similarity between users (or items)

To be more specific, most existing methods build the embedding function with the descriptive features

only (e。g。, ID and attributes), without considering the user-item interactions — which are only used to

define the objective function for model training。 As a result, when the embeddings are insufficient in

capturing CF, the methods have to rely on the interaction function to make up for the deficiency of suboptimal embeddings。

難就難在如何將interaction中的collaboritive signals建模到embedding的表示中。由於原始的interaction資料規模通常比較龐大,使得難以發掘出期望的collaboritive signals(distill the desired collaborative signal)。

作者在這篇文章中提出基於user-item intractions中的high-order connectivity來解決collaboritive signals的發掘和embedding的建模,做法是在user-item interaction graph structure圖結構中進行collaborative signal的編碼。

we tackle the challenge by exploiting the high-order connectivity from user-item interactions,

a natural way that encodes collaborative signal in the interaction graph structure。

關於high-order connectivity含義的視覺化如下,

u_1

的兩種視角:二分圖 和 樹

推薦系統中二分圖表示學習調研

2.2 Keys

作者設計了一個神經網路來迭代地在二部圖上進行embeddings的傳播,這可以看做是在embedding空間構建資訊流。

We design a neural network method to propagate embeddings recursively on the graph,

which can be seen as constructing information flows in the embedding space。

特別地,作者設計了一種

embedding傳播層

(embedding propagation layer),透過匯聚互動過的items或users來提煉出users或items的embeddings。進一步,透過疊加多個embedding propagation layer,可以使得embeddings來捕獲二部圖中high-order connectivities所蘊含的協同資訊。

Specifically, we devise an embedding propagation layer, which refines a user’s

(or an item’s) embedding by aggregating the embeddings of the interacted items

(or users)。 By stacking multiple embedding propagation layers, we can enforce

the embeddings to capture the collaborative signal in high-order connectivities。

2。3 Models

模型的結構如下:

推薦系統中二分圖表示學習調研

2.3.1 Embedding Layer

嵌入層,offers and initialization of user embeddings and item embeddings

\boldsymbol{E}=[\boldsymbol{e}_{u1},...,\boldsymbol{e}_{uN} \ , \ \boldsymbol{e}_{i1},...,\boldsymbol{e}_{iM}] \tag{1}

傳統的方法直接將

E

輸入到互動層,進而輸出預測值。而NGCF將

E

輸入到多層嵌入傳播層,透過在二部圖上進行嵌入的傳播來對嵌入進行精煉。

2。3。2 Embedding Propagation Layer

多層嵌入傳播層,refine the embeddings by injecting high-order connectivity relations

包括兩個步驟,Message construction和Message aggregation。這個部分和KDD2018的GCMC那篇文章是類似的描述方式。

2。3。2。1 Message Construction

對於每個user-item pair

(u,i)

, 定義從

i

u

傳遞的message如下:

\boldsymbol{m}_{u \leftarrow i}=f(\boldsymbol{e_i}, \boldsymbol{e_u}, p_{ui}) \tag{2}

其中,

\boldsymbol{m}_{u \leftarrow i}

定義為message embedding。

f(\cdot)

是message encoding function,將user和item的 embedding

\boldsymbol{e}_u, \boldsymbol{e}_i

作為輸入,並使用

p_{ui}

來控制每條邊edge

(u,i)

在每次傳播中的衰減係數。

具體的,作者使用如下message encoding function:

\boldsymbol{m}_{u \leftarrow i} = \frac{1}{\sqrt{|\mathcal{N}_u||\mathcal{N}_i|}}(\boldsymbol{W}_1 \boldsymbol{e}_i + \boldsymbol{W}_2(\boldsymbol{e}_i \odot \boldsymbol{e}_u)) \tag{3}

可以看出作者不僅考慮了message的來源

\boldsymbol{e}_i

(傳統圖卷積方法只考慮這個),還考慮了資訊來源和資訊目的地之間的關係,即

\boldsymbol{e}_i \odot \boldsymbol{e}_u

,這個element-wise product是典型的特徵互動的一種方式,值得學習。

p _u=\frac{1}{\sqrt{|\mathcal{N}_u||\mathcal{N}_i|}}

\mathcal{N}_u

是使用者

u

的1-hop neighbors。從表示學習角度:

p_{ui}

反映了歷史互動item對使用者偏好的貢獻程度。從資訊傳遞角度,

p_{ui}

可以看做是折扣係數,隨著傳播路徑長度的增大,資訊慢慢衰減(這個可以透過疊加多層,並代入到式子,會發現前面係數也是連乘在一起了,說明路徑越長,衰減越大)。

2。3。2。2 Message Aggregation

這個階段,我們將從使用者

u

的鄰居傳遞過來的資訊進行匯聚來提煉使用者

u

的嵌入表示。

\boldsymbol{e}_u^{(1)} = \text{LeakyReLU}\left(\boldsymbol{m}_{u \leftarrow u} + \sum_{i \in \mathcal{N}_u} \boldsymbol{m}_{u \leftarrow i} \right) \tag{4}

\boldsymbol{e}_u^{(1)}

是經過一層嵌入傳播層得到的提煉後的使用者

u

嵌入表示。LeakyReLU允許對於正反饋資訊和少部分負反饋資訊的編碼。

\boldsymbol{m}_{u \leftarrow u} = \boldsymbol{W}_1 \boldsymbol{e}_u

則考慮了self-connection,

\boldsymbol{W}_1

和Equation(2)中的

\boldsymbol{W}_1

是共享的。

item的嵌入表示同理可得。embedding propagation layer的好處在於顯示地挖掘 first-order connectivity資訊來聯絡user和item的表示。

得到的

\boldsymbol{e}_u^{(1)}

可以作為下一個embedding propagation layer的輸入,透過疊加多層,可以挖掘multi-hop的關聯關係。迭代式如下:

\boldsymbol{e}_u^{(l)} = \text{LeakyReLU}\left(\boldsymbol{m}^{(l)}_{u \leftarrow u} + \sum_{i \in \mathcal{N}_u} \boldsymbol{m}^{(l)}_{u \leftarrow i} \right) \tag{5}

其中,

\boldsymbol{m}^{(l)}_{u \leftarrow i} = p_{u,i}(\boldsymbol{W}^{(l)}_1 \boldsymbol{e}^{(l-1)}_i + \boldsymbol{W}_2^{(l)}(\boldsymbol{e}_i^{(l-1)} \odot \boldsymbol{e}_u^{(l-1)})) \tag{6}

\boldsymbol{m}^{(l)}_{u \leftarrow u} = \boldsymbol{W}^{l}_1 \boldsymbol{e}_u^{(l-1)} \tag{6}

進一步,作者給出了上述Equation(5), (6) 過程的矩陣表示形式,有助於實現layer-wise propagation。

\underbrace{\boldsymbol{E}^{(l)}}_{\mathbb{R}^{(N+M) \times d_l}} = \text{LeakyReLU} \left( \underbrace{(\boldsymbol{\mathcal{L}} + \boldsymbol{I})}_{\mathbb{R}^{(N+M)\times (N+M)}} \overbrace{\boldsymbol{E}^{(l−1)}}^{\mathbb{R}^{(N+M) \times d_{l-1}}} \underbrace{\boldsymbol{W}_1^{(l)}}_{\mathbb{R}^{d_{l-1} \times d_l}} + \overbrace{\boldsymbol{\mathcal{L}}}^{\mathbb{R}^{(N+M)\times (N+M)}} \underbrace{\boldsymbol{E}^{(l−1)}}_{(N+M) \times d_{l-1}} \odot \overbrace{\boldsymbol{E}^{(l−1)}}^{(N+M) \times d_{l-1}} \underbrace{\boldsymbol{W}_2^{(l)}}_{\mathbb{R}^{d_{l-1} \times d_l}} \right) \tag{7}

其中,

E^{(l)} \in \mathbb{R}^{(N +M)×d_l}

,即:把user, item的embeddings矩陣concat在一起,一起進行傳播。也就是說,上述是user,item共同進行傳播的表示形式,因此所有的矩陣都是concat在一起的形式。

作者說,

\boldsymbol{\mathcal{L}}

表示user-item interaction graph的拉普拉斯矩陣,

\boldsymbol{\mathcal{L}}=\boldsymbol{D}^{-1/2} \boldsymbol{A} \boldsymbol{D}^{-1/2}

,其中,

\boldsymbol{A} \in \mathbb{R}^{(N+M) \times (N+M)}

是鄰接矩陣,是user-item 互動矩陣和item-user互動矩陣構成的,即:

\boldsymbol{A} = \left[ \begin{array}{ccc}  \boldsymbol{0} & \boldsymbol{R} \\  \boldsymbol{R}^T & \boldsymbol{0} \ \end{array} \right]

。(但是我個人記得拉普拉斯矩陣三種方式都不是長這個樣子的,有可能這些定義之間差異很小,可能特徵根是一樣的,故也叫拉普拉斯矩陣吧,雖然和標準的拉普拉斯矩陣之間有一絲差異。本質都是一種graph operator。可參考從 Graph Convolution Networks (GCN) 談起,講的非常到位!)

這個矩陣表示形式很好理解,主要點在於,和

\boldsymbol{\mathcal{L}}

的乘法就對應於公式(5)中

\sum_{i \in \mathcal{N}_u} \boldsymbol{m}^{(l)}_{u \leftarrow i}

對鄰域節點的匯聚,其它的一目瞭然。

2。3。3 Prediction Layer

預測層,aggregates the refined embeddings from different propagation layers and outputs the affinity score of a user-item pair。

最終的嵌入表示是原始的embedding和所有嵌入傳播層得到的embedding全部concat在一起的結果。即:

\boldsymbol{e}_u^{*}= \text{concat}(\boldsymbol{e}_u^{(0)},\boldsymbol{e}_u^{(1)},...,\boldsymbol{e}_u^{(L)}) \tag{8}

\boldsymbol{e}_u^{(0)}

是初始化的embeddings。

\boldsymbol{e}_i^{*}

同理可得。

最後預測user-item互動的時候使用點乘:

\hat{y}_{\text{NGCF}}(u,i) = {\boldsymbol{e}_u^{*}}^T \boldsymbol{e}_i^{*}  \tag{9}

最後作者採用的是pairwise BPR loss進行最佳化。

Loss = − \sum_{(u,i,j) \in O}\ln \sigma(\hat{y}_{ui} − \hat{y}_{uj}) + \lambda||\Theta||_2^2  \tag{10}

其中,

O = \{(u,i, j)|(u,i) \in R^+ , (u, j)  \in R^- \}

R^+

是觀測資料,

R^-

是未觀測資料,

\Theta=  \{ \boldsymbol{E}, \{ {\boldsymbol{W}_1^{(l)} , \boldsymbol{W}_2^{(l)}\}}_{l=1}^L \}

是所有的可訓練引數。

3。 MMGCN

MM2019,MMGCN: Multi-modal Graph Convolution Network forPersonalized Recommendation of Micro-video

3。1 Intuition

這篇也是何向南團隊在頂會ACM Multimedia 2019上發表的文章。為了給內容分享平臺提供高質量的推薦,我們不僅要考慮使用者和物品的互動 (user-item interactions),還要考慮內容本身多模態的特徵 (various modalities (e。g。, visual, acoustic, and textual)。目前的多模態推薦方法主要是利用物品本身的多模態內容來豐富

item側

的表示;但是很少會利用到users和items之間的資訊互動來提升

user側

的表示,進而捕獲使用者對不同模態特徵的細粒度偏好。在這篇文章中,作者主要是想利用user-item interactions來引導每種模態下的表示學習,主要是利用了GNN的message-passing思想,來學習

modal-specific

representations of users and items。具體而言,作者將user-item interaction graph依據item的多模態特徵:影象,文字,語音切分為三個子圖,匯聚的時候不僅考慮了鄰域的拓撲結構 (可以認為是item id來表徵),還考慮了鄰域的模態特徵 (可以認為是item的feature id來表徵)。作者沒有將所有的特徵一視同仁,而是每個子圖對應一種模態特徵。

對多模態特徵的

進行區分

對於深入理解使用者的preferences有幫助:

推薦系統中二分圖表示學習調研

不同模態的特徵之間存在語義差異

。如圖1,儘管

i_1

i_2

在視覺模態空間很相似,但是在文字模態空間卻並不相似,一個是恐怖片、一個是戰爭片,主題並不一樣。如果忽視了這樣的模態差異,例如只使用視覺特徵的話,會誤導item representation。

同一個使用者對不同模態可能有不同的品味

。例如,一個使用者可能對影片某些幀的畫面感興趣,但是卻對糟糕的影片的背景音樂很失望。

不同的模態可以作為不同的角度、途徑來發掘使用者的興趣

。如圖1,如果使用者

u_1

更關注影片幀,則

i_2

更適合推薦給他,因為

i_1

i_2

在視覺模態更近似;如果

u_1

更關注文字描述,則,

i_3

更適合推薦給他,因為

i_1

i_3

在文字模態更近似。

遺憾的是,目前的工作都主要把不同的模態特徵作為整體來統一對待 (multimodal features of each item are

unified

as a

single representation

, reflecting their content similarity),缺乏對特定模態的使用者偏好的建模(modeling of

modal-specific

user preferences)。

作者希望能夠透過關注users和items在不同模態空間下的資訊互動 (focus on information interchange between users and items in multiple modalities),借鑑GNN的資訊傳播機制(information-propagation mechanism)來編碼使用者和短影片在不同模態下的high-order connectivity,進而捕獲特定模態內容下使用者的偏好 (user preference on modal-specific contents)。

3。2 Keys

為此,作者提出了a Multi-modal Graph Convolution Network (MMGCN),在不同模態下構造user-item二分圖(modality-aware bipartite user-item graph)。

一方面,從使用者角度,使用者本身的歷史互動行為items能夠反映user的個性化興趣,即從items中聚合特徵到user representation是合理的;

另一方面,從物品角度,互動過某個item的user group能夠追蹤物品之間的相似性,因此從users中聚合特徵到item presentation也是合理的。

具體而言,MMGCN

各自地

在不同的

模態子圖

(e。g, visual)下,從互動過的items聚合相應的模態特徵(e。g。, frames)到user representation,同時利用user group來提升item representation。也就是說不同模態的aggregation操作是每個子圖分開

單獨進行

的。然後每個子圖下,都會有個combination操作來combine不同模態下的user和item representation,也就是說每個子圖下的combined representation都

融合了所有模態的特徵

,combined representation又會作為該子圖的下一個GNN aggregation層的輸入,然後

繼續進行combination

。總之,aggregation和combination操作迭代執行多次,就能捕獲user和item之間多跳的鄰居資訊。最終,預測的時候可以分別concat user和item在所有子圖下的representation,並計算concat後的user和item的representations之間相似性,並進行推薦。

3。3 Models

作者不是把所有模態的資訊作為整體來統一對待,而是每種模態進行區分對待。首先基於user-item互動資料來構造二分圖,

\mathcal{G} = \{(u,i)|u \in \mathcal{U},i \in \mathcal{I}\}

,每條邊

y_{ui} = 1

對應一條user-item觀測資料。除此之外,對於每個item

i

,都有多種模態特徵,即:視覺 (visual) 、聲覺 (acoustic)、文字 (textual)。具體的,使用

m \in M = \{v,a,t\}

作為模態的indicator,

v, a, t

分別表示視覺、聲覺、文字。為了正確捕獲特定模態下的使用者偏好,作者將

\mathcal{G}

切分為三個子圖

\mathcal{G}_m, m \in M

。相比於原圖,子圖只改變了每個item結點的屬性特徵,只保留其

相對應的模態的特徵

,而整體的拓撲結構和原圖

\mathcal{G}

是一致的。例如

\mathcal{G}_v

下,只有對應的

視覺

模態特徵可以在該子圖下使用。

整體的模型結構如下所示,不同模態域的aggregation和combination分別進行,最後相加不同模態域得到的表示作為最終的表示,並透過點乘進行預測。

推薦系統中二分圖表示學習調研

3。3。1 Aggregation Layer

對於使用者來說,使用者歷史

interacted item

能夠反映使用者的興趣,故可以對items進行aggregate操作來豐富user representation;對於物品來說,互動過item的

user group

可以作為item除自身模態特徵之外的補充資訊,故可以對users進行aggregate來提升item representation。

基於message-passing機制,對

模態子圖

\mathcal{G}_m

中,任意一個user或item結點,我們採用一個匯聚函式

f(\cdot)

來量化

從鄰域結點傳播來的

資訊(representation being propagated)的影響。以user為例,匯聚得到的modal-specific表示如下:

\boldsymbol{h}_m = f(\mathcal{N}_u) \tag{1}

\mathcal{N}_u = \{j|(u, j) \in \mathcal{G}_m \}

表示子圖

\mathcal{G}_m

user結點

u

的鄰域item結點。

\boldsymbol{h}_m

捕獲了

結構化

特徵 (structural information)。

f(\cdot)

作者採用了兩種形式。

Mean Aggregation: 採用average pooling操作來匯聚modal-specific features,再加一個非線性變換。

f_{avg}(\mathcal{N}_u)=\text{LeakyRelu}(\frac{1}{|\mathcal{N_u}|}\sum_{j \in \mathcal{N_u}} \boldsymbol{W}_{1, m} \boldsymbol{j}_m) \tag{2}

\boldsymbol{j}_m \in \mathbb{R}^{d_m}

是模態

m

下item

 j

的表示。

\boldsymbol{W}_{1,m} \in \mathbb{R}^{d_m^{\prime} \times d_m}

是線性變換矩陣 (下標1只是編號,代表本文中使用的第一個引數矩陣)。平均池化操作假設了所有鄰域結點的影響是等價的。

目前的問題是,item

j

在每種模態下都有一種初始表示,究竟是根據item的模態特徵得到 (visual下根據幀影象卷積得到特徵表示;text下根據文字描述提取特徵表示),還是直接指定

|M|

個隨機的

modal-specific

嵌入呢?

答案應該是前者。對於item側,

\boldsymbol{j}_m

這個實際上就是後文提到的初始化的item intrinsic information

\boldsymbol{i}_m

,是modal pre-extracted feature。(後文實際上沒有講清楚,我是如何知道的?我是看開源的程式碼實現知道的。一開始我的理解是後者)

Max Aggregation: 使用max pooling操作來進行dimension-aware特徵選擇,

f_{max}(\mathcal{N}_u) = \text{LeakyReLU}(max_{j \in \mathcal{N}_u} \boldsymbol{W}_{1,m} \boldsymbol{j}_m) \tag{3}

這樣的好處是不同的鄰域結點的影響力不同。

item結點的aggregate操作同理。同樣的,目前的問題是每個使用者在每種模態下的初始表示是什麼?是直接指定

|M|

個隨機的modal-specific嵌入嗎?答案是的,modal-specific嵌入,但是這裡也是指後文提到的user intrinsic information

\boldsymbol{u}_m

,只不過作者用的隨機初始化的向量來表示(可能是因為缺乏user profile資訊)。

3。3。2 Combination Layer

這個層的目標是融合aggtegation layer得到的來自鄰域結點的

結構化資訊 (structural information)

\boldsymbol{h}_m

,結點

自身內在資訊 (intrinsic information)

\boldsymbol{u}_m

以及溝通不同模態的

聯絡資訊 (modality connection information)

\boldsymbol{u}_{id}

。形式化為:

\boldsymbol{u}_m^{(1)} = g(\boldsymbol{h}_m, \boldsymbol{u}_m, \boldsymbol{u}_{id}) \tag{4}

\boldsymbol{u}_m \in \mathbb{R}^{d_m}

和上述提到的

\boldsymbol{j}_m

同理,是user的初始modal-specific表示,只不過作者實際上採用的是隨機初始化方式,而

\boldsymbol{j}_m

是pre-extracted item modal-features。

\boldsymbol{u}_{id} \in \mathbb{R}^d

d

維user ID的嵌入表示,是所有模態間共享的,

作為溝通不同模態資訊的橋樑。

對於

g

函式的設計,

作者首先將

\boldsymbol{u}_m

\boldsymbol{u}_{id}

融合起來,即將

\boldsymbol{u}_m

透過非線性變換對映到

d

維空間,再加上

\boldsymbol{u}_{id}

\hat{\boldsymbol{u}}_m=\text{LeakyRelu}(\boldsymbol{W}_{2,m} \boldsymbol{u}_m) + \boldsymbol{u}_{id} \tag{5}

\boldsymbol{W}_{2,m} \in \mathbb{R}^{d \times d_m}

。這樣子變換完後,不同的模態資訊在同一個超平面上了,是可比的。

\boldsymbol{u}_{id}

的好處是溝通了不同模態表示之間的差距,同時在反向傳播的過程中,資訊可以跨模態進行傳播(the ID embedding

\boldsymbol{u}_{id}

essentially bridges the gap between modal-specific representations, and propagates information across modalities during the gradient back-propagation process。)。形象的說,例如,視覺模態

v

下的反向傳播誤差能影響

\boldsymbol{u}_{id}

\boldsymbol{u}_{id}

又能進一步影響模態

t

下的modal-specific引數。這樣就達到了不同模態之間互相聯絡。

接著將

\hat{\boldsymbol{u}}_m

\boldsymbol{h}_m

融合起來,進一步分為了兩種:

Concatenation Combination:

g_{co} (\boldsymbol{h}_m , \boldsymbol{u}_m , \boldsymbol{u}_{id}) = \text{LeakyReLU} \left(\boldsymbol{W}_{3,m} (\boldsymbol{h}_m || \hat{\boldsymbol{u}}_m)\right) \tag{6}

||

是concat操作,

\boldsymbol{W}_{3,m} \in \mathbb{R}^{d_m^{\prime} \times (d_{m}^{\prime} +d)}

Element-wise Combination:

g_{ele}(\boldsymbol{h}_m , \boldsymbol{u}_m , \boldsymbol{u}_{id}) = \text{LeakyReLU}(\boldsymbol{W}_{3,m} \boldsymbol{h}_m + \hat{\boldsymbol{u}}_m) \tag{7}

\boldsymbol{W}_{3,m} \in \mathbb{R}^{d \times d^{\prime}_m}

。加法即element-wise feature interaction between two representation。而concat中兩種表示之間獨立。

l

層的combination layer的輸出,即

g

的輸出,對於user,作者用

\boldsymbol{u}_m^{(l)}

表示;對於item,作者用

\boldsymbol{i}_m^{(l)}

表示。

3。3。3 Recursion Formula

疊加多層aggregation layer和combination layer,遞推式子如下:

\boldsymbol{h}_m^{(l)}=f(\mathcal{N}_u), \boldsymbol{u}_m^{(l)} = g(\boldsymbol{h}_m^{(l)} , \boldsymbol{u}_m^{(l-1)} , \boldsymbol{u}_{id}) \tag{8}

此處有個關鍵性的描述段落,指明瞭每個變數的含義,尤其是

\boldsymbol{u}_m

,原文講的比較清楚,由於很重要,先摘錄下來。

where

\boldsymbol{u}_m

is the representation generated from the previous layer,

memorizing

the information from her

(l − 1)

-hop neighbors。

\boldsymbol{u}_m^{(0)}

is set as

\boldsymbol{u}_m

at the initial iteration。 Wherein, user

u

is associated with trainable vectors

\boldsymbol{u}_m

\forall m \in M

, which are

randomly initialized

; whereas, item

i

is associated with pre-extracted features

\boldsymbol{i}_m

\forall m \in M

。 As a result,

\boldsymbol{u}_m^{(l-1)}

characterizes the user preferences on item features

in modality

m

, and considers the influence of modality interactions that reflect the

underlying relationships

between modalities。

注意上述加粗的部分,對於user來說,初始化的intrinsic information

\boldsymbol{u}_m^{(0)}

使用隨機初始化的modal-specific

\boldsymbol{u}_m

;對於item來說,初始化的intrinsic information

\boldsymbol{i}_m^{(0)}

使用預先提取的

模態特徵

\boldsymbol{j_m}

(原文寫的是

\boldsymbol{i_m}

,我結合了開原始碼,個人認為是筆誤)。

\boldsymbol{u}_m^{(l)}

構成:

融合了從

item

側匯聚到的modal m-specific

模態資訊

\boldsymbol{h}^{(l)}

自身的modal-specific資訊

\boldsymbol{u}_m^{(l-1)}

(第

l-1

的combination layer的輸出,類似

self-connection

操作)

跨模態的聯絡資訊

\boldsymbol{u}_{id}

因此作者說

\boldsymbol{u}_m^{(l-1)}

不僅刻畫了使用者對於模態

m

下item特徵的偏好,還考慮了跨模態之間的互動資訊的影響力。

以user為例

,可以看出,隨著GNN層數的增加,

\boldsymbol{h}_m^{(l)} , \boldsymbol{u}_m^{(l-1)}

是迭代的形式,

\boldsymbol{u}_{id}

是共享不變的。

\boldsymbol{u}_m^{(l)}

的迭代形式公式8交代的很清楚。而

\boldsymbol{m}^{(l)}

的迭代形式,作者沒有說明清楚,實際上

\boldsymbol{h}_m^{(l)}

是關於

\boldsymbol{i}_m^{(l-1)}

的函式,即

item側

l-1

的combination layer的輸出,更準確的遞推式,

\boldsymbol{h}_m^{(l)}=f(\mathcal{N}_u, \boldsymbol{i}_m^{(l-1)})

進一步可以觀察下作者在github的程式碼實現,核心forward,

推薦系統中二分圖表示學習調研

MMGCN核心Forward程式碼

可以重點關注下

x

,初始是features;第一層輸出的

x

作為第二層的輸入。

3。3。4 Model Prediction

上述總共疊加了

L

層。最後,作者累加了所有模態下最後一個GNN層的輸出,作為user或item最終的表示,

\boldsymbol{u}^{\star} = \sum_{m \in M}\boldsymbol{u}_m^{(L)},\ \ \  \boldsymbol{i}^{\star} = \sum_{m \in M}\boldsymbol{i}_m^{(L)} \tag{9}

預測user-item pair的話,使用二者點乘形式進行預測,

{\boldsymbol{u}^{\star}}^T \boldsymbol{i}^{\star}

最後作者使用和NGCF一樣的BPR Loss進行最佳化。不再累贅。

3。4。 Experiment

在實驗部分作者使用了頭條資料集tiktok,快手資料集Kwai,movie-lens進行實驗。頭條資料集3種模態都有,快手只有文字和影象。movie-lens作者手動爬取了youtube的預告片,並用resnet50提取關鍵幀的特徵,使用FFmpeg抓取聲音片斷並用VGGish提起聲音特徵,使用Sentence2Vector從文字描述中提取特徵。這個工作量是真大。

另外,作者評估的時候,對於測試集中每個正樣本observed user-item pair,隨機抽了1000個unobserved user-item pairs作為負樣本,然後用precision@k, recall@k, ndcg@k進行評估。這個是可取的,但是很多方法都是在全域進行評估,即,所有的unobserved user-item pairs全部作為負樣本,這樣的評估顯然更客觀,也更有說服力。

作者視覺化使用者對同1個item的不同模態的特徵的偏好不一致性也值得學習。透過分析學習到的item的多模態降維表示,並抽取部分使用者互動過的item,看互動過的item的降維表示的分佈情況,例如,在視覺模態下,互動過的item比較分散,說明這些items的封面/幀/影象差異較大;而文字模態下,互動過的item表示向量點比較集中。則說明了使用者對視覺模態沒有太多的偏好,不是對其興趣起決定性作用;而對文字域的模態有典型的偏好,例如喜歡看浪漫主題的電影。如下圖中的user 1,左圖視覺域點分佈很分散;右圖文字域集中在war和romance主題。相反,有的人可能很關注視覺模態,比如愛看封面美女的電影,那麼其視覺模態下的表示就很集中;而可能這些電影主題差異很大,即文字模態下很分散。

推薦系統中二分圖表示學習調研

3。5。 Discussion

作者沒有討論引數複雜度。這裡面有非常多的引數。尤其是針對每個user和item的modal-specific引數,即帶

m

下標的引數,尤其是user側,如

\boldsymbol{u}_m^{0}

,全域性的

\boldsymbol{u}_{id}

。我個人對此保持疑惑,因為在大規模的推薦系統中,user的數量非常多,而互動資料又非常稀疏。給每個user都分配如此多的引數,很多引數估計都得不到很好的學習,同時訓練速度也很慢。可能user側也需要引入profile資訊比較好。另外,不是所有的items都有豐富的模態特徵,大部分items可能缺乏模態特徵,即,不同子圖的拓撲結構可能會因為結點缺失相應的特徵而導致不相同,這種情況下如何處理呢?

4. Extensions

除了上述三個工作,關於二分圖表示學習的最新工作還包括:

LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation,將non-linear和feature transformation去掉,只增加一組權重係數來weighted aggregate不同gcn層輸出的嵌入為最終的嵌入,大大簡化了模型,反而在推薦效能上有提升。這個工作雖然簡單,但挺有意思的,有很多intuition和Interpretability的觀點,對於理解GCN如何更好的應用於推薦系統挺有幫助的。

AAAI2020, Revisiting Graph based Collaborative Filtering: A Linear Residual Graph Convolutional Network Approach,同樣討論了去掉non-linear的好處,使用多層的gcn時,透過代入迭代式,可以將不同層的多個feature transformation matrices約減為1個feature transformation matirx,大大減少了引數量。同時討論了殘差方法,傳統的方法一般只使用最後一層GCN層輸出的user 和 item embedding進行點乘預測評分。而使用殘差方法,預測評分的時候,所有的gcn層都一起預測評分,下一個gcn層去預測前一個層剩餘的評分殘差。這種方式等價於將所有層輸出的embedding concat在一起作為final embedding後,再進行點乘預測,也就是NGCF中的預測方法滿足了殘差預測。直覺來源在於,一方面,疊加gcn layer等價於使用拉普拉斯平滑 (graph operator),故傳統方法疊加太多的層的時候,會導致over smoothness問題,故不宜疊加太多,一般1~2層最優。另一方面,0層的時候等價於BPR方法(使用BPR Loss時),也能夠得到非常好的預測結果,所以層數低已經具備非常強的能力了。因此可以讓後面的gcn層只去預測前面層的殘差,這樣可以使得層數更深時效果不減。透過觀察發現使用殘差預測時,深層輸出的embedding不會過於平滑,因此預測效果更好。

這兩個工作主要借鑑了ICML2019: Simplifying Graph Convolutional Networks,討論瞭如何簡化GCN,使得更好的應用在推薦系統中二分圖的表示學習。

5。 Summary

關於圖二分圖的挖掘,是推薦系統中的核心問題之一。傳統的圖表示學習直接對二部圖進行挖掘是有問題的。個人認為傳統的graph embedding在建模時實際上很依賴於graph的手動構造,連邊權重的合理設定,且沒有把二分圖中的collaborative signals直接建模到結點的embedding表示中,而只是透過目標函式來間接引導。而二分圖的構建是基於原始資料的,沒有連邊權重,且資料過於稀疏,蘊含在二分圖中的協同資訊是非常隱晦的和難以挖掘的,故傳統的圖表示學習方法很難處理。本篇文章中介紹的三個工作基於message passing正規化的GNN來挖掘二分圖,將collaborative signals直接建模到embedding中,這是非常值得借鑑的。另外,這幾篇文章的github都有原始碼,值得學習和實踐。

References

KDD2018,GCMC:Graph Convolutional Matrix Completion SIGIR2019,NGCF:Neural Graph Collaborative Filtering

MM2019,MMGCN: Multi-modal Graph Convolution Network for Personalized Recommendation of Micro-video

LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation

Github, GCMC, Source Code Github, NGCF, Source Code

Github, MMGCN, Source Code

AAAI2020, Revisiting Graph based Collaborative Filtering: A Linear Residual Graph Convolutional Network Approach

ICML2019: Simplifying Graph Convolutional Networks

最後,歡迎大家關注我的微信公眾號,蘑菇先生學習記。會定期推送關於演算法的前沿進展和學習實踐感悟。

推薦系統中二分圖表示學習調研

標簽: item  user  模態  embedding  互動