天天看點

Socially-Aware Self-Supervised Tri-Training for Recommendation

SEPT

Socially-Aware Self-Supervised Tri-Training for Recommendation

ABSTRACT

自監督學習(Self-supervised learning, SSL)可以從原始資料中自動生成真實樣本。

現有的大多數基于SSL方法的做法是:丢棄原本的節點\邊對原始資料圖進行幹擾,生成新的資料視圖,然後對不同的視圖進行基于自判别的對比學習,學習泛化表示;

這個方案下,兩個不同視圖的節點之間隻建立了一個雙射映射,這意味着忽略了來自其他節點的自監督信号;

由于在推薦系統中廣泛觀察到的同源性,文章認為來自其他節點的監督信号也極有可能利于推薦系統的學習;

文章提出了一種綜合了tri-training的通用社會性感覺SSL架構。該架構首先使用使用者社交資訊來增強使用者資料視圖

在多視圖編碼的tri-training下,該架構在擴充視圖的基礎上建構了三圖編碼器,并利用其他兩個編碼器産生的來自其他使用者的自監督信号來改進每個編碼器;

INTRODUCTION

文章使用user-user和user-item互動中的三元結構來擴充兩個補充資料視圖,并将它們分别解釋為描述使用者在擴大社交圈和将所需項目分享給朋友方面的興趣。

技術上,首先在三個視圖上建構三個非對稱圖形編碼器,其中兩個僅用于學習使用者表示并給出僞标簽,而另一個處理使用者-項目視圖的編碼器,還承擔生成推薦的任務。對社交網絡和使用者-項目互動圖進行動态擾動,以此建立一個未标記的樣本集。遵循tri-training的機制,在每個十七,在其他兩個視圖上的編碼器為目前視圖的每個使用者預測未标記示例集中最可能的語義正示例。該架構通過提出的基于鄰域區分的對比學習,最大化目前視圖中标記使用者的表示與示例集之間的一緻性,進而精化使用者表示。

随着所有編碼器在此過程中疊代改進,生成的僞标簽也變得更具有資訊性,反過來又遞歸地是編碼器受益。是以,與隻使用自區分SSL機制增強的推薦編碼器相比,使用者項目視圖上的推薦編碼器變得更強。

由于tri-training基于相同資料源的互補視圖來學習自監督信号,是以将其指令為自監督tri-training。

2 RELATED WORK

2.1 Graph Neural Recommendation Models

2.2 Self-Supervised Learning in RS

3 PROPOSED FRAMEWORK

SEPT, SElf-suPervised Tri-training framework

3.1 Preliminaries

3.1.1 Notations

使用兩個圖,分别為:使用者-項目互動圖\(\mathcal{G}_r\),使用者社交網絡\(\mathcal{G}_s\)

\(\mathcal{U}=\{u_1,u_2,\ldots,u_m\}(|\mathcal{U}|=m)\)表示\(\mathcal{G}_r\)和\(\mathcal{G}_s\)中的使用者節點

\(\mathcal{I}=\{i_1,i_2,\ldots,i_n\}(|\mathcal{I}|=n)\)表示\(\mathcal{G}_r\)中的項目節點

\(R\in \mathbb{R}^{m\times n}\)是\(\mathcal{G}_r\)的二進制矩陣

\(S\in \mathbb{R}^{m\times m}\)表示社交鄰接矩陣,這個矩陣是二進制和對稱的

\(P\in \mathbb{R}^{m\times d}\)和\(Q\in \mathbb{R}^{n\times d}\)分别表示使用者和項目的embeddings

3.1.2 Tri-Training

3.2 Data Augmentation

3.2.1 View Augmentation

推薦系統中廣發觀察到的同質性,即,使用者和項目有許多相似的對應物。為了捕獲同質性以進行自監督,文章利用使用者社交關系來進行資料擴充,因為社交網絡通常被認為是同質性的反映(具有相似偏好的使用者更有可能在社交網絡中建立連接配接,反之亦然)

下圖是SEPT的示意圖:

Socially-Aware Self-Supervised Tri-Training for Recommendation

在社交推薦系統中,通過對齊使用者-項目互動圖\(\mathcal{G}_r\)和社交網絡\(\mathcal{G}_s\),可以獲得兩種類型的三角形:

  • 三個互相社交連接配接的使用者(例如,上圖中的\(u_1,u_2,u_4\))
  • 具有相同購買物品的兩個社交連接配接使用者(例如,上圖中的\(u_1,u_2,i_1\))

前者在社會上被解釋為通過擴大社交圈來描述使用者的興趣,後者則是描述使用者在與朋友分享所需物品方面的興趣。

可以把這兩種三角形視為加強的紐帶,因為如果兩個人在現實生活中有共同的朋友或共同的興趣,他們更有可能有密切的關系

上述兩種類型的三角形可以用矩陣乘法的形式有效地提取出來。讓\(A_f\in \mathbb{R}^{m\times m}\),\(A_s\in \mathbb{R}^{m\times m}\)表示結合了兩種類型三角關系的鄰接矩陣,計算公式如下:

\[A_f=(SS)\odot S,\quad A_s=(RR^\top)\odot S.\qquad(1)

\]

乘法\(SS(RR^\top)\)通過共享好友(項目),累計連接配接兩個使用者的路徑數。哈達瑪積\(\odot S\)使得這些paths變成三角形形式。\(\odot S\)保證\(A_f,A_s\)是關系S的子集。因為\(A_f,A_s\)不是二進制矩陣,公式(1)可以看成一種特殊的情況:在有R的補充資訊的S上進行bootstrap采樣。

  • bootstrap sampling:是生成一系列bootstrap僞樣本,每個樣本是初始資料有放回抽樣

給定\(A_f,A_s\)作為S和R的擴充,就有了三個視圖從不同的角度描述了使用者的偏好,并提供了一個融合tri-training和SSL的場景。将三個視圖命名為:

  • preference view(使用者-項目互動圖),用R表示
  • friend view(三角形社交關系),用\(A_f\)表示
  • sharing view(三角形使用者項目關系),用\(A_s\)表示

3.2.2 Unlabeled Example Set

為了進行tri-training,需要一個位标記的樣本集,遵循已有的工作,以一定機率\(\rho\)丢棄邊,來擾動原始圖,進而建立一個損壞圖,從中學習到的使用者描述被用作未标記的樣例。公式如下:

\[\tilde{\mathcal{G}}=(\mathcal{N}_r\cup \mathcal{N}_s,m\odot(\varepsilon_r\cup \varepsilon_s)),\qquad (2)

其中\(\mathcal{N}_r,\mathcal{N}_s\)是節點,\(\varepsilon_r,\varepsilon_s\)是\(\mathcal{G}_r,\mathcal{G}_s\)的邊,\(m\in \{0,1\}^{|\varepsilon_r\cup \varepsilon_s|}\)是mask向量來去除邊。

  • \(\mathcal{G}=(\mathcal{W},\mathcal{\varepsilon},\mathcal{R})\)是圖的表示形式,\(\mathcal{W}\)是節點,\(\varepsilon\)是邊,\(\mathcal{R}\)是關系

在這裡對\(\mathcal{G}_r,\mathcal{G}_s\)都進行擾動,因為在前面提到的兩個增強視圖都包含了社交資訊。

3.3 SEPT:Self-Supervised Tri-Training

3.3.1 Architecture

利用增強的視圖和未标記的樣本集,按照tri-training的設定建構了三個encoder。在體系結構上,提出的自監督訓練架構可以是模型無關的,進而可以推廣到其他的圖神經推薦模型。文章使用了LightGCN作為編碼器的基本結構,編碼器的定義如下:

\[Z=H(E,\mathcal{V})

其中,H是encoder,\(Z\in \mathbb{R}^{m\times d}\) or \(\mathbb{R}^{(m+n)\times d}\)表示節點的最終表示。E具有相同的size,表示最底層的初始節點embeddings,\(\mathcal{V}\in \{R,A_s,A_f\}\)是三個視圖中任一個。

SEPT是非對稱的,\(H_f,H_s\)分别工作在friend view和sharing view,有兩個作用:

  • 學習使用者表示
  • 給出僞标簽

\(H_r\)工作在preference view,承擔推薦的任務,進而學習使用者和項目表示

\(H_r\)是主要編碼器,\(H_f,H_s\)是輔助編碼器。這三個編碼器都使用LightGCN。此外,為了從擾動圖\(\tilde{\mathcal{G}}\)中學習未标記示例的表示,需要另外一個encoder,但它僅用于圖卷積。

3.3.2 Constructing Self-Supervision Signals

通過對三個視圖執行圖卷積,encoder學習三組使用者表示。由于每個視圖反映了使用者偏好的不同方面,自然會從其他兩個視圖中尋找監督資訊,以改進目前視圖的encoder。給定一個使用者,文章使用來自其他兩個視圖的使用者表示來預測其在未标記示例集中的語義正示例,以偏好視圖中的使用者u為例,标簽表示為:

\[y_{u+}^s=Softmax(\phi(\tilde{Z},z_u^s)),\quad y_{u+}^f=Softmax(\phi(\tilde{Z},z_u^f)),\qquad (4)

其中\(\phi\)是cosine操作,\(z_u^s,z_u^f\)是\(H_s,H_f\)學習的使用者u表示,\(\tilde{Z}\)是圖卷積獲得的無标簽示例集中的使用者表示,$$表示在相應視圖中每個使用者在語義上是正例的預測機率。

tri-training機制下,隻有\(H_s,H_f\)都同意将使用者标記為正樣本時,才标記,于是公式如下:

\[y_{u+}^r=\frac{1}{2}(y_{u+}^s+y_{u+}^f),\qquad (5)

有了這些機率,可以選擇置信度最高的K個陽性樣本,公式如下:

\[\mathcal{P}_{u+}^r=\{\tilde{Z}_k|k\in Top-K(y_{u+}^r),\tilde{Z}\sim \tilde{\mathcal{G}} \},\qquad (6)

在每次疊代中,對于不用的使用者表示,使用随機邊丢棄來重建\(\tilde{\mathcal{G}}\)。SEPT為每個視圖中的每個使用者動态地在該資料擴充上生成正的僞标簽。然後,将這些标簽用作監督信号,以此精化底層的embeddings

3.3.3 Contrastive Learning

有了生成的僞标簽,在SEPT中開發了鄰居區分對比學習方法來實作自監督。

在給定某個使用者的情況下,要求他的節點表示與\(\mathcal{P}_{u+}\)中已标記的使用者表示保持一緻,并最小化其節點表示與未标記的使用者表示之間的一緻性。使用者判别的思想是:給出目前視圖的一個使用者u,正向僞标簽是這個使用者u在另外兩個視圖的鄰居或者潛在鄰居,那麼應該在目前的視圖中把這些積極的配對,因為不同的觀點之間存在同質性。這可以通過鄰居-分歧對比學習來完成。具體實作采用以前的研究成果,InfoNCE,公式如下:

\[\mathcal{L}_{ssl}=-\mathbb{E}\sum_{v\in \{r,s,f\}}[log\frac{\sum_{p\in \mathcal{P}_{u+}^v}\psi(z_u^v,\tilde{z}_p)}{\sum_{p\in \mathcal{P}_{u+}^v}\psi(z_u^v,\tilde{z}_p)+\sum_{j\in U/\mathcal{P}_{u+}^{v}}\psi(z_u^v,\tilde{z}_j)}],\qquad (7)

其中\(\psi(z_u^v,\tilde{z}_p)=exp(\phi(z_u^v\cdot \tilde{z}_p)/\tau),\phi(\cdot):\mathbb{R}^d\times \mathbb{R}^d\longmapsto \mathbb{R}\)是判别函數,\(\tau\)是方法判别效果的參數(\(\tau=0.1\)時效果最好)。相比自判别,使用鄰居判别能夠使用來自其他使用者的監督信号。

當隻使用一個正向示例,并且如果\(\tilde\)中使用者在\(y_{u+}\)對自己有最高置信度時,鄰居判别退化成自我判别。但是當正例的數量足夠時,這兩種方法可以一起使用。

實驗訓練過程中,沒有将僞标簽添加到鄰接矩陣中用于後續的圖卷積。相反,采用軟而靈活的方式通過互資訊最大化來指導使用者表示。有兩個好處:

  • 重建鄰接矩陣耗時長
  • 早期的僞标簽不會提供資訊,重複使用會誤導模型

3.4 Optimization

SEPT包含兩個任務:

  • recommendation
  • neighbor-discrimination based on contrastive learning

    BPR損失函數如下:

\[\mathcal{L}_r=\sum_{i\in \mathcal{I}(u),i\notin \mathcal{I}(u)}-log\sigma(\hat{r}_{ui}-\hat{r}_{uj})+\lambda \|E\|_2^2,\qquad (8)

其中\(\mathcal{I}(u)\)是與u有互動的項目,\(\hat{r}_{ui}=P^\top_uQ_i\),P和Q從\(Z^r\)中獲得,\(\lambda\)控制\(L_2\)正則化的系數。

SEPT的訓練過程有兩個階段:

  • 初始化
  • 聯合學習

    首先通過優化\(\mathcal{L}_r\),使用推薦任務來預熱模型,獲得較好的embeddings後,自監督tri-training訓練開始進行,作為輔助任務統一為聯合學習目标,提高推薦任務的效果,聯合學習的總體目标如下:

\[\mathcal{L}=\mathcal{L}_r+\beta \mathcal{L}_{ssl}

3.4 Discussion

4 EXPERIMENTAL RESULTS

4.1 Experimental Settings

使用的資料集如下:

Socially-Aware Self-Supervised Tri-Training for Recommendation

Baselines

  • LightGCN
  • DiffNet++
  • MHCN

Metrics

  • Precision@10
  • Recall@10
  • NDCG@10

Settings

4.2 Overall Performance Comparison

表2展示了不同層數的實驗效果,如下:

Socially-Aware Self-Supervised Tri-Training for Recommendation

表3中所有方法都采用了兩層設定,如下:

Socially-Aware Self-Supervised Tri-Training for Recommendation

4.3 Self-Discrimination v.s. Neighbor-Discrimination

SEPT中,産生的正向示例會包括:

  • 使用者自身
  • 未标記的樣本集

此部分探究使用者的自判别和沒有使用者自身的鄰居判别。SEPT-SD表示自判别,SEPT-ND表示沒有使用者自身的鄰居判别。實驗結果如下圖:

Socially-Aware Self-Supervised Tri-Training for Recommendation

4.4 View Study

此部分研究兩個增強視圖的貢獻,"Friend" or "Sharing"表示對應的視圖被分離,實驗結果如下圖:

Socially-Aware Self-Supervised Tri-Training for Recommendation

4.5 Parameter Sensitivity Analysis

實驗中使用到的超參數有三個:

  • \(\beta\)來控制自監督tri-training的貢獻
  • K,是正向示例的數量
  • \(\rho\)來控制邊丢棄率

關于參數的影響如下圖:

Socially-Aware Self-Supervised Tri-Training for Recommendation
Socially-Aware Self-Supervised Tri-Training for Recommendation
Socially-Aware Self-Supervised Tri-Training for Recommendation