阅读笔记-Enhancing Sequential Recommendation with Graph Contrastive Learning
Motivations
- 现有的方法将每个用户的交互序列进行建模,并且只利用了序列中的局部 (local) 上下文信息。这忽略了具有相似行为模式的用户之间的相关性;
- 用户行为数据非常稀疏,先前的方法通常只使用 item 预测任务来训练推荐模型。由于数据稀疏问题,这种方式不能学习适当的序列表示;
- 序列推荐模型通常基于隐式反馈序列建立,隐式反馈序列中可能包含噪声信息
Challenges
- 如何建模所有用户的交互信息从而获得全局上下文信息?
- 如何缓解数据稀疏性?
- 如何削弱噪声的影响?
Method
1. 问题定义
-
item 集合:
V\bold V
V
, 用户集合:
U\bold U
U
, 交互序列:
D\bold D
D
; -
对于每个用户
u∈
U
u\in \bold U
u
∈
U
, 使用
S=
{
v
1
,
v
2
,
.
.
.
,
v
n
}
\bold S=\{v_1,v_2,…,v_n\}
S
=
{
v
1
,
v
2
,
.
.
.
,
v
n
}
来表示它的交互序列,其中
vt
v_t
v
t
表示用户
uu
u
的第
tt
t
个交互的 item,
nn
n
表示该用户交互了多少个item ; -
嵌入表示:
-
用户
uu
u
的embedding 表示为:
Pu
∈
R
1
×
d
\bold P_u\in R^{1\times d}
P
u
∈
R
1
×
d
-
item
ii
i
的embedding 表示为:
ei
∈
R
1
×
d
\bold e_i\in R^{1\times d}
e
i
∈
R
1
×
d
-
序列
S\bold S
S
的初始embedding 表示为:
ES
(
0
)
∈
R
n
×
d
\bold E_S^{(0)}\in R^{n\times d}
E
S
(
0
)
∈
R
n
×
d
, 其中
ES
(
0
)
\bold E_S^{(0)}
E
S
(
0
)
中的第
tt
t
行表示
S\bold S
S
中的第
tt
t
个节点的 embedding -
所有item的embedding表示为:
E∈
R
∣
V
∣
×
d
\bold E\in R^{|\bold V|\times d}
E
∈
R
∣
V
∣
×
d
-
用户
-
使用
D\bold D
D
构建一个加权的 item transition 图
G\bold G
G
,提供了使用所有用户行为序列构建成的 item transition模式的全局视图,如下图所示:

图1. 一个item transition图示例
-
图
G\bold G
G
的构建遵从以下策略,以序列
S\bold S
S
为例:-
对于每个 item
vt
∈
S
v_t\in \bold S
v
t
∈
S
,如果在图
G\bold G
G
中
vt
v_t
v
t
和
v(
t
+
k
)
v_{(t+k)}
v
(
t
+
k
)
之间存在边,就更新该边的权重为:
w(
v
t
,
v
(
t
+
k
)
)
←
w
(
v
t
,
v
(
t
+
k
)
)
+
1
k
w(v_t,v_{(t+k)})\leftarrow w(v_t,v_{(t+k)})+\frac1k
w
(
v
t
,
v
(
t
+
k
)
)
←
w
(
v
t
,
v
(
t
+
k
)
)
+
k
1
, 否则就将
vt
v_t
v
t
和
v(
t
+
k
)
v_{(t+k)}
v
(
t
+
k
)
之间的边权重设为
1k
,
k
∈
{
1
,
2
,
3
}
\frac 1k,\space k\in \{1,2,3\}
k
1
,
k
∈
{
1
,
2
,
3
}
, 其中
1k
\frac 1k
k
1
表示目标节点
vt
v_t
v
t
对于第
kk
k
跳邻居
vt
+
k
v_{t+k}
v
t
+
k
的重要性。[采取了何向南老师的lightgcn中的策略] - 将图中的各条边上的权重进行归一化:
w^
(
v
t
,
v
j
)
=
w
(
v
t
,
v
j
)
(
1
d
e
g
(
v
i
)
+
1
d
e
g
(
v
j
)
)
\hat w(v_t,v_j)=w(v_t,v_j)(\frac 1 {deg(v_i)}+\frac 1{deg(v_j)})
w
^
(
v
t
,
v
j
)
=
w
(
v
t
,
v
j
)
(
d
e
g
(
v
i
)
1
+
d
e
g
(
v
j
)
1
)
其中
de
g
(
.
)
deg(.)
d
e
g
(
.
)
表示图中节点的度,注意这里的图是无向图 -
对于每个 item
2. 模型GCL4SR

-
Graph augmented sequence representation learning
-
Graph-based Augmentation
给定加权转移图
G\bold G
G
,通过数据增广为一个交互序列
S\bold S
S
构造两个增广图视图。在这项工作中,使用的是[Hamilton
et al.
, 2017] 中的高效邻域采样方法,从给定序列的大型过渡图生成增强图视图。具体来说,我们将每个节点v∈S作为中心节点,设置采样深度M为2,每步采样大小N为20,对G中的邻居进行交互采样。在抽样过程中,我们不考虑边的权重,对节点进行均匀抽样,然后在G中保留被抽样节点之间的边及其权重。对于一个特定的序列S,采用基于图的增广后,我们可以得到两个增广图视图:
GS
′
=
(
V
S
′
,
E
S
′
,
A
S
′
)
G_S^{‘}=(V_S^{‘},E_S^{‘},A_S^{‘})
G
S
′
=
(
V
S
′
,
E
S
′
,
A
S
′
)
和
GS
”
=
(
V
S
”
,
E
S
”
,
A
S
”
)
G_S^{“}=(V_S^{“},E_S^{“},A_S^{“})
G
S
”
=
(
V
S
”
,
E
S
”
,
A
S
”
)
, 其中
VS
′
,
E
S
′
,
A
S
′
V_S^{‘},E_S^{‘},A_S^{‘}
V
S
′
,
E
S
′
,
A
S
′
分别表示节点的集合、边的集合和图
GS
′
G_S^{‘}
G
S
′
的邻接矩阵,注意
GS
′
G_S^{‘}
G
S
′
和
GS
”
G_S^{“}
G
S
”
都是图
GG
G
的子图,
AS
′
,
A
S
”
A_S^{‘},A_S^{“}
A
S
′
,
A
S
”
存储式(1)中定义的边的归一化权值 -
Shared Graph Neural Networks
根据g [Hassani and Khasahmadi, 2020],使用两个具有共享参数的图神经网络对
GS
′
G_S^{‘}
G
S
′
和
GS
”
G_S^{“}
G
S
”
进行编码。以
GS
′
G_S^{‘}
G
S
′
为例,在图神经网络的第
tt
t
层的消息传递和聚合公式如下:
av
i
(
t
)
=
A
g
g
r
e
g
a
t
e
(
t
)
(
{
h
v
j
(
t
−
1
)
:
v
j
∈
N
v
i
′
}
)
,
h
v
i
(
t
)
=
C
o
m
b
i
n
e
(
t
)
(
a
v
i
(
t
)
,
h
v
i
(
t
−
1
)
)
a_{v_i}^{(t)}=Aggregate^{(t)}(\{h_{v_j}^{(t-1)}:v_j\in N_{v_i}^{‘}\}), \\ h_{v_i}^{(t)}=Combine^{(t)}(a_{v_i}^{(t)},h_{v_i}^{(t-1)})
a
v
i
(
t
)
=
A
g
g
r
e
g
a
t
e
(
t
)
(
{
h
v
j
(
t
−
1
)
:
v
j
∈
N
v
i
′
}
)
,
h
v
i
(
t
)
=
C
o
m
b
i
n
e
(
t
)
(
a
v
i
(
t
)
,
h
v
i
(
t
−
1
)
)
经过多层信息传播可以得到图
GS
′
G_S^{‘}
G
S
′
和
GS
”
G_S^{“}
G
S
”
的embedding
Hs
′
∈
R
n
×
d
H_s^{‘}\in R^{n\times d}
H
s
′
∈
R
n
×
d
和
Hs
”
∈
R
n
×
d
H_ s^{“}\in R^{n\times d}
H
s
”
∈
R
n
×
d
在本工作中,这两个gnn的实现如下。在第一层,使用图神经网络(GCN)利用增广图 的加权邻接矩阵融合节点信息。然后,进一步叠加一个GraphSage层,该层使用平 均池来聚合增广图中的高阶邻域信息。
-
Graph Contrastive Learning Objective
-
使用以下目标函数来区分相同交互序列的增广表示与其他增广表示:
L
G
C
L
(
S
)
=
∑
S
∈
D
−
l
o
g
e
x
p
(
c
o
s
(
z
S
′
,
z
S
”
)
/
τ
)
∑
K
∈
D
e
x
p
(
c
o
s
(
z
S
′
,
z
S
”
)
/
τ
)
L_{GCL}(S)=\sum_{S\in D}-log \frac {exp(cos(z_S^{‘},z_S^{“})/\tau)}{\sum_{K\in D} {exp(cos(z_S^{‘},z_S^{“})/\tau)}}
L
G
C
L
(
S
)
=
S
∈
D
∑
−
l
o
g
∑
K
∈
D
e
x
p
(
c
o
s
(
z
S
′
,
z
S
”
)
/
τ
)
e
x
p
(
c
o
s
(
z
S
′
,
z
S
”
)
/
τ
)
其中
z
S
′
z_S^{‘}
z
S
′
和
z
S
”
z_S^{“}
z
S
”
是经过pooling后的
H
s
′
H_s^{‘}
H
s
′
和
H
s
”
H_s^{“}
H
s
”
。
c
o
s
(
.
)
cos(.)
c
o
s
(
.
)
表示的是余弦相似度计算。
τ
\tau
τ
是 超参数,此处设置为0.5。
-
User-specifific gating
由于每个用户可能只对 item 的某些特定属性感兴趣,因此全局上下文信息应该是特定于 用户的。根据g [Ma
et al.
, 2019],设计了以下特定于用户的控制机制,以捕获根据用户 的个性化偏好定制的全局上下文信息:
Q
S
′
=
H
S
′
⊗
σ
(
H
S
′
W
g
1
+
W
g
2
P
u
T
)
\bold Q_S^{‘} = \bold H_S^{‘}\otimes \sigma(\bold H_S^{‘}\bold W_{g_1}+\bold W_{g_2}\bold P_u^T)
Q
S
′
=
H
S
′
⊗
σ
(
H
S
′
W
g
1
+
W
g
2
P
u
T
)
其中,
W
g
1
∈
R
d
×
1
,
W
g
2
∈
R
L
×
d
\bold W_{g_1}\in R^{d\times1}, \bold W_{g_2}\in R^{L\times d}
W
g
1
∈
R
d
×
1
,
W
g
2
∈
R
L
×
d
,
σ
\sigma
σ
是 sigmoid 函数,
⊗
\otimes
⊗
是逐元素相乘,
p
u
p_u
p
u
表示用户 的偏好。相似地,可以通过该公式计算
G
s
”
G_s^{“}
G
s
”
的全局上下文信息
Q
S
”
\bold Q_S^{“}
Q
S
”
-
Basic sequence encoder
除了序列的图增广表示外,我们还采用传统的序列模型对用户交互序列进行编码。选择SASRec [Kang and McAuley, 2018]作为骨干模型,它堆叠Transformer编码器[Vaswani等人,2017]来建模用户交互序列。给定第
(
l
−
1
)
(l-1)
(
l
−
1
)
层的节点表示
H
l
−
1
H^{l-1}
H
l
−
1
,则第
l
l
l
层Transformer编码器的输出如下:
H
l
=
F
F
N
(
C
o
n
c
a
t
(
h
e
a
d
1
,
.
.
.
,
h
e
a
d
h
)
W
h
)
h
e
a
d
i
=
A
t
t
e
n
t
i
o
n
(
H
l
−
1
W
i
Q
,
H
l
−
1
W
i
K
,
H
l
−
1
W
i
V
)
\bold H^l=FFN(Concat(head_1,…,head_h)\bold W^h) \\ head_i=Attention(\bold H^{l-1}\bold W_i^Q,\bold H^{l-1}\bold W_i^K,\bold H^{l-1}\bold W_i^V)
H
l
=
F
F
N
(
C
o
n
c
a
t
(
h
e
a
d
1
,
.
.
.
,
h
e
a
d
h
)
W
h
)
h
e
a
d
i
=
A
t
t
e
n
t
i
o
n
(
H
l
−
1
W
i
Q
,
H
l
−
1
W
i
K
,
H
l
−
1
W
i
V
)
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
s
o
f
t
m
a
x
(
Q
K
T
d
)
V
Attention(\bold Q,\bold K, \bold V)=softmax(\frac {\bold Q\bold K^T}{\sqrt d})\bold V
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
s
o
f
t
m
a
x
(
d
Q
K
T
)
V
-
Prediction layer
我们将表示
Qs
′
\bold Q_s^{‘}
Q
s
′
和
Qs
”
\bold Q_s^{“}
Q
s
”
连接起来,Transformer编码器
Hl
\bold H^l
H
l
的最后一层的embedding计算如下:
M
=
A
t
t
N
e
t
(
C
o
n
c
a
t
(
Q
S
′
,
Q
S
”
,
H
l
)
W
T
)
\bold M =AttNet(Concat(\bold Q_S^{‘},\bold Q_S^{“},\bold H^l)\bold W^T)
M
=
A
t
t
N
e
t
(
C
o
n
c
a
t
(
Q
S
′
,
Q
S
”
,
H
l
)
W
T
)
那么,给定长度为n的用户交互序列S,在(n+ 1)第一步,用户与物品的交互概率可以定 义为:
y
^
(
S
)
=
s
o
f
t
m
a
x
(
M
E
T
)
\hat y^{(S)}=softmax(\bold M\bold E^T)
y
^
(
S
)
=
s
o
f
t
m
a
x
(
M
E
T
)
-
Multi Task Learning
L
m
a
i
n
=
−
∑
S
u
∈
D
∑
k
=
1
∣
S
u
∣
−
1
l
o
g
(
y
^
(
s
u
1
:
k
)
(
v
u
k
+
1
)
)
L_{main}=-\sum_{S_u\in D}\sum_{k=1}^{|S_u|-1}log(\hat y^{(s_u^{1:k})}(v_u^{k+1}))
L
m
a
i
n
=
−
S
u
∈
D
∑
k
=
1
∑
∣
S
u
∣
−
1
l
o
g
(
y
^
(
s
u
1
:
k
)
(
v
u
k
+
1
)
)
L
=
L
m
a
i
n
+
∑
S
u
∈
D
∑
k
=
1
∣
S
u
∣
−
1
λ
1
L
G
C
L
(
s
u
1
:
k
)
+
λ
2
L
M
M
(
s
u
1
:
k
)
L=L_{main}+\sum_{S_u\in D}\sum_{k=1}^{|S_u|-1}\lambda_1L_{GCL}(s_u^{1:k})+\lambda_2L_{MM}(s_u^{1:k})
L
=
L
m
a
i
n
+
S
u
∈
D
∑
k
=
1
∑
∣
S
u
∣
−
1
λ
1
L
G
C
L
(
s
u
1
:
k
)
+
λ
2
L
M
M
(
s
u
1
:
k
)
Result
-
数据集
实验在Amazon评论数据集和Goodreads评论数据集上进行:

-
总体表现

-
消融实验
- 各个部分的重要性

- 参数敏感性研究

如图3(a)所示,抽样规模越大,推荐性能越好。对于采样深度,我们可以注意到的最佳 设置M在诗词和phone数据集上分别为4和3。此外,将d设为可获得最佳性能在诗词和 电话数据集上分别为64和96。
- 序列编码器的影响

表4显示了不同序列编码器下的GCL4SR的性能,以及骨干模型的性能。可以看到,GCL4SR-HGN、GCL4SR-GRU和GCL4SR-SAS的性能优于相应的骨干编码器模型。这说明图增强序列表示学习模块是一个通用模块,可以帮助提高现有序列推荐方法的性能。此外,GRU4Rec和SASRec的性能优于GCL4SR-HGN。这说明基本序列编码器在GCL4SR的性能中占主导地位,图增强序列表示学习模块是一个补充部分,有助于进一步提高推荐性能。
References
[Hamilton
et al.
, 2017] William L Hamilton, Rex Ying, and Jure Leskovec. Inductive representation learning on large graphs. In
NeurIPS’17
, pages 1025–1035, 2017.
[Hassani and Khasahmadi, 2020] Kaveh Hassani and Amir Hosein Khasahmadi. Contrastive multi-view representation learning on graphs. In
ICML’20
, pages 4116–4126, 2020.