Self-Attentive Graph Convolution Network With Latent Group Mining and Collaborative Filtering for Personalized Recommendation
论文链接:https://ieeexplore.ieee.org/document/9531473(可能需要付费下载)
Abstract
机器学习的显著进步导致了一些最先进个性化推荐算法的出现。之前的推荐算法一般都是根据用户-item评分矩阵学习用户和item的表示。然而,这种方法只考虑了用户自己的偏好,忽略了用户的社交圈的影响。该文提出了一种新的推荐算法,Self-Attentive Graph Convolution Network With Latent Group Mining and Collaborative Filtering for Personalized Recommendation,由隐群组挖掘(LGM)模块、协同嵌入(CE)模块和自注意力图卷积(SAGC)模块组成。LGM模块通过探索用户的潜在群组分析用户的社交UAN,为用户和item生成群组嵌入。CE模块使用图嵌入方法为用户和item提供语义协同嵌入。SAGC模块通过一个自注意力图卷积网络融合用户(item)协同嵌入和群组嵌入来了解他们的细粒度表示以做出评分预测。
1. INTRODUCTION
个性化推荐——基于机器学习的应用之一,已经受到工业界和学术界越来越多的关注,即根据用户之前的表现如购买或点击,估计一个用户对一个item将会展示兴趣的可能性。个性化推荐的一个基本任务是仅使用一个用户-item评分矩阵(以下简称评分矩阵)来计算用户与item之间的相似性的分数,以对item排名并生成top-n的推荐列表。例如,基于协同过滤的推荐算法(CF)利用一个评分矩阵来挖掘相似的用户评分行为以实现评分估计。
为了充分利用评分矩阵,有两种广泛使用的方法。一种是矩阵分解(MF),使用用户表示和item表示的内积来近似估计推荐的缺失评分。Yang等人将评分矩阵划分为几个局部矩阵,设计加权矩阵分解方法来融合每个局部矩阵的近似值。He等人将多层感知机和矩阵分解相结合来学习用户和item的表示。然而这些方法主要侧重于用户和item之间的显式交互,但忽略了一些隐式交互,例如 “用户
u
1
u_1
u1 - item
i
1
i_1
i1 - 用户
u
2
u_2
u2 - item
i
2
i_2
i2” ,表明
u
1
u_1
u1 可能选择
i
2
i_2
i2 ,因为和
u
1
u_1
u1 有相同偏好
i
1
i_1
i1 的
u
2
u_2
u2 此前选择了
i
1
i_1
i1。
另一种基于图的方法,首先基于一个评分矩阵构建一个用户-item二部图(以下简称二部图),然后应用各种操作,比如图卷积网络(GCN),来学习用户和item的表现。这些方法通过将显式交互和隐式交互都考虑进来解决了MF方法的问题。例如Gao等人区分了二部图上用户和item之间的显式交互和隐式交互,提出了一个用于学习用户和item表示的联合优化框架。Wang等人设计了一个新的GCN方法,在一个二部图上传播用户和item的嵌入来为了top-n推荐学习他们的表示。
然而,大多数现存的推荐方法只考虑使用用户的偏好来学习他们的表示,忽略了用户社交圈的影响。总的来说,社会性是人类最重要和最基本的属性。用户的选择不仅受他们自己的偏好驱动,还被他们的社交圈所影响。图1(a) 和 (b) 中引入了两种不同的动机。在图1(a)中,用户仅仅基于用户自己的偏好来选择item。在图1(b)中,每个用户加入了多个群组,每个群组的成员可能共同决定买一个item。例如,用户1、用户2和用户3都是群组1的成员,群组1决定买item5。因此这些用户将会买item5。在这方面,可能不仅需要分析人们自己的偏好,还需要将人们参与的群组考虑进来。出于这种考虑,提出了一个群组挖掘明星来挖掘用户的社交性。然而,由于没有用户真正的社交圈的信息,必须假设一些潜在的群体,并提出一个基于随机游走的策略来探索用户和item的潜在群组。
此外,GCN方法最初是在属性图上提出的,其中每个节点都有嵌入了具体的语义。然而,在个性化推荐任务中,每个用户节点和item节点仅通过一个one-hot嵌入来描述。为了解决这个问题,我们需要在二部图为每个节点上生成一个带有具体语义的嵌入。基于上述考虑,提出了一个模块来挖掘非属性图的节点见一些潜在语义关系,并在使用GCN方法学习其表示之前为节点提供语义嵌入。
为了解决上述两个问题,该文设计了一个具有潜在群组挖掘和协同过滤的自注意力图卷积网络(SAGLG),由三个部分组成:潜在群组挖掘(LGM)模块,协同嵌入模块(CE)和自注意力图卷积(SAGC)模块。具体来说,LGM模块被设计用来探索每个用户和每个item的潜在群组。首先根据他们的PageRank值选择一些有代表性的用户和item,利用具有重新启动的随机游走方法来获得他们最相关的用户和item来构建群组。然后基于他们的潜在群组计算用户和item的群组嵌入。在CE模块,文中建议利用图嵌入方法来生成用户节点和item节点的语义协同嵌入。最后SAGC模块将用户(item)的协同嵌入和用户(item)的群组嵌入连接起来作为该模块的输入以学习用户和item的细粒度表示,从而预测用户对item的评分。该文在现实世界数据集:MovieLens和EachMovie上进行了实验。本文贡献总结如下:
- 提出了SAGLG算法融合用户和item的协同嵌入和群组嵌入来预测用户对item的评分。
- 提出了LGM模块,用于探索用户和item的潜在群组,生成他们的群组嵌入,以便根据他们的社交圈很好地描述用户的偏好。
- 提出了CE模块通过图嵌入方法为每个用户和item生成了具有具体语义的协同嵌入。
- 提出了SAGC模块用于将协同嵌入和群组嵌入都考虑进来以学习用户和item的细粒度表示。
- 将SAGLG和SOTA算法进行比较,验证SAGLG的优越性。
文章组织结构:第二部分简要介绍了相关工作。第三部分展示SAGLG算法的细节。第四部分介绍所做实验。第五部分论文总结和一些讨论。
2. RELATED WORK
此部分回顾了基于图的推荐系统、图嵌入算法和注意力机制相关工作。
基于图的推荐方法基于所有可用实体和他们之间的交互来构建图。有两种典型的基于图的方法。第一种是基于随机游走的放啊,在图上随机游走来发现每个用户节点和每个item节点之间的路径,从而发现他们之间的关系。Lei等人提出了一个对话式推荐框架,该框架将会话转换为用户-item属性图中的一个路径,以挖掘实体之间的潜在关系。Mo等人提出了一个新的反向重启随机游走,从异构图的item节点开始游走进行事件推荐,解决了悬空节点的问题。第二种是基于图神经网络的方法,利用神经网络基于图的结构来学习每个实体的表示。Palumbo等人设计一个entity2rec算法,该算法基于交互的属性将知识图划分为若干个子图,并学习交互的特定属性表示以预测用户对item的评分。Xu等人分别通过图卷积网络将用户-item二部图转换为用户-用户同构图来学习用户的表示,item-item同构图来学习item的表示。
图嵌入方法基于图的结构来学习节点的嵌入,确保如果图上的两个节点很近,他们的表示在嵌入空间中也会很近。Grover等人提出了同构图嵌入算法,node2vec,设计了一种有随机游走来发现邻居节点,基于word2vec的框架学习节点的嵌入。Kipf等人在同构图上提出了一个新的GCN框架,融合了图的结构和实体的特征来学习实体的表示。除了在同构图上应用图嵌入外,Dong等人介绍了一个异构图的模型:metapath2vec,该模型设计了一些元路径来指导随机游走以生成每个实体的邻居,学习他们的表示来进行可解释的推荐。虽然图嵌入方法在学习节点表示方面表现出色,但很少有人能注意利用这些表示来增强推荐的性能。
注意力机制通常用于衡量用户和item的影响,捕获他们在推荐任务中的突出表现。Zhu等人利用两个不同域的信息来提高嵌入学习的质量,设计一个基于元素的注意力网络来捕获哪个域的信息是突出的。Wang等人提出一个注意力嵌入传播模型从显式和隐式数据中选择一些信息更丰富的部分,来改进用户和item的表示。Niu等人提出一个用于电子商务商店搜索的双异构图注意力网络(DHGAT),通过注意力网络分别学习查询和商店的表示。
3. THE SAGLG ALGORITHM
图2表示SAGLG算法的架构,分为三个部分:潜在群组挖掘模型发现用户和item的潜在群组来计算他们的群组嵌入;协同嵌入模块学习用户和item的协同嵌入;自注意力图卷积模块融合用户(item)的群组嵌入和协同嵌入来学习用户(item)的表示以预测用户对item的评分。
3.1 The Latent Group Mining Module
潜在群组挖掘模块是通过在二部图上基于随机游走的策略来探索潜在群组和为每个用户和item生成群组嵌入。二分图可以表示为
G
=
(
U
∪
I
,
E
)
G=(U \cup I, E)
G=(U∪I,E),其中
U
U
U 为用户集合,
I
I
I 代表item集合,
E
E
E 表示用户和item之间边的集合。具体地说,只有当用户
u
m
u_m
um 对item
i
n
i_n
in 有评分时,在
E
E
E 中有一条边
(
u
m
,
i
n
)
(u_m, i_n)
(um,in) 连接了一个用户
u
m
u_m
um 和一个item
i
n
i_n
in。
在二部图
G
G
G 中,定义了一些具有最高影响的代表性用户-item对作为构建潜在群组的锚点。为了衡量每个用户-item对的影响,使用了PageRank方法来将这个任务转换成节点收敛概率计算问题。设包含
M
M
M 个用户和
N
N
N 个item
G
G
G 的关联矩阵为
A
∈
R
M
×
N
\mathbf{A} \in \mathbb{R}^{M \times N}
A∈RM×N,其中
A
(
m
,
n
)
=
1
\mathbf{A}(m, n)=1
A(m,n)=1 表示用户
u
m
u_m
um 对item
u
n
u_n
un 有评分;其余
A
(
m
,
n
)
=
0
\mathbf{A}(m, n)=0
A(m,n)=0。设
P
U
I
\mathbf{P}_{UI}
PUI 和
P
I
U
\mathbf{P}_{IU}
PIU 表示用户和item之间的概率转移矩阵,分别由行规范矩阵
A
\mathbf{A}
A 和
A
T
\mathbf{A}^T
AT 计算得出。
在锚点选择过程中,首先分别为用户和item随机初始化两个概率向量
u
(
0
)
\mathbf{u}^{(0)}
u(0) 和
i
(
0
)
\mathbf{i}^{(0)}
i(0)。接下来在图
G
G
G 上使用随机游走算法来获得每个用户和每个item的收敛概率,计算方式如下:
u
(
t
+
1
)
=
(
1
−
α
)
⋅
P
I
U
i
(
t
)
+
α
⋅
1
∣
U
∣
\mathbf{u}^{(t+1)}=(1-\alpha)\cdot\mathbf{P}_{IU}\mathbf{i}^{(t)}+\alpha\cdot\frac{1}{\lvert U\rvert}
u(t+1)=(1−α)⋅PIUi(t)+α⋅∣U∣1
i
(
t
+
1
)
=
(
1
−
α
)
⋅
P
U
I
u
(
t
)
+
α
⋅
1
∣
I
∣
\mathbf{i}^{(t+1)}=(1-\alpha)\cdot\mathbf{P}_{UI}\mathbf{u}^{(t)}+\alpha\cdot\frac{1}{\lvert I\rvert}
i(t+1)=(1−α)⋅PUIu(t)+α⋅∣I∣1
其中
∣
U
∣
\lvert U\rvert
∣U∣ 和
∣
I
∣
\lvert I\rvert
∣I∣ 是用户和item的数量,
u
(
t
)
\mathbf{u}^{(t)}
u(t) 和
i
(
t
)
\mathbf{i}^{(t)}
i(t) 是第
t
t
t 次随机游走迭代后用户概率向量和item概率向量,
α
\alpha
α 代表随机访问的可能性。根据他们的收敛概率选择top-
K
K
K用户和top-
K
K
K item作为锚点用户和item,将用户锚点和item锚点随机组对形成一共
K
K
K个锚点。
选择
K
K
K 个锚点后,应用RWR(重启随机游走) 算法将每个用户和item分配给他们最相关的锚点以构建潜在群组。以一个锚点
(
u
a
,
i
a
)
(u_a, i_a)
(ua,ia) 为例,首先设置锚点用户
u
a
u_a
ua 作为一个查询节点来找出与它最相关的用户。对于这个查询节点,用户查询向量定义为
q
u
\mathbf{q}_u
qu,其中
q
u
(
a
)
=
1
\mathbf{q}_u(a)=1
qu(a)=1,当
j
≠
a
j\neq a
j=a 时
q
u
(
j
)
=
0
\mathbf{q}_u(j)=0
qu(j)=0。其他用户收敛概率可以如下计算:
u
(
t
+
1
)
=
(
1
−
β
)
⋅
P
I
U
i
(
t
)
+
β
⋅
q
u
\mathbf{u}^{(t+1)}=(1-\beta)\cdot\mathbf{P}_{IU}\mathbf{i}^{(t)}+\beta\cdot\mathbf{q}_u
u(t+1)=(1−β)⋅PIUi(t)+β⋅qu
i
(
t
+
1
)
=
P
U
I
u
(
t
)
\mathbf{i}^{(t+1)}=\mathbf{P}_{UI}\mathbf{u}^{(t)}
i(t+1)=PUIu(t)
其中
β
\beta
β 代表返回查询用户节点
u
a
u_a
ua 的概率,
1
−
β
1-\beta
1−β 是从当前item走到下一个用户的概率。
当两次迭代的节点概率的差值小于预先设定的阈值时,迭代终止。迭代过后,每个锚点用户获得一个用户收敛概率向量
p
u
a
=
(
p
(
u
1
)
,
⋯
,
p
(
u
N
)
)
\mathbf{p}_{u_a}=(p(u_1),\cdots,p(u_N))
pua=(p(u1),⋯,p(uN)) 其中每个元素
p
(
u
i
)
p(u_i)
p(ui) 可以视为
u
a
u_a
ua 和
u
i
u_i
ui 之间的相关分数。
通过同样的方式,设置锚点item
i
a
i_a
ia 作为重启节点,使用RWR来发现具有最高收敛概率的最相关的item。设
p
i
a
=
(
p
(
i
1
)
,
⋯
,
p
(
i
M
)
)
\mathbf{p}_{i_a}=(p(i_1),\cdots,p(i_M))
pia=(p(i1),⋯,p(iM)) 表示一个item的收敛概率向量,其中每个
p
i
a
\mathbf{p}_{i_a}
pia 表示锚点item
i
a
i_a
ia 和其他item之间的相关分数。
p
i
a
\mathbf{p}_{i_a}
pia 可以通过如下方式计算:
u
(
t
+
1
)
=
P
I
U
i
(
t
)
\mathbf{u}^{(t+1)}=\mathbf{P}_{IU}\mathbf{i}^{(t)}
u(t+1)=PIUi(t)
i
(
t
+
1
)
=
(
1
−
β
)
⋅
P
U
I
u
(
t
)
+
β
⋅
q
i
\mathbf{i}^{(t+1)}=(1-\beta)\cdot\mathbf{P}_{UI}\mathbf{u}^{(t)}+\beta\cdot\mathbf{q}_i
i(t+1)=(1−β)⋅PUIu(t)+β⋅qi
其中
q
i
\mathbf{q}_i
qi 为item查询向量:
q
i
(
a
)
=
1
\mathbf{q}_i(a)=1
qi(a)=1,当
j
≠
a
j\neq a
j=a 时
q
i
s
(
j
)
=
0
\mathbf{q}_is(j)=0
qis(j)=0。
基于相关分数,构建了两个矩阵
S
u
∈
R
K
×
M
\mathbf{S}_u\in \mathbb{R}^{K\times M}
Su∈RK×M 和
S
i
∈
R
K
×
M
\mathbf{S}_i\in \mathbb{R}^{K\times M}
Si∈RK×M,分别代表了锚点用户和其他用户之间的相关性以及锚点item和其他item的相关性。
S
u
\mathbf{S}_u
Su 的第
a
a
a 行是对于锚点用户
u
a
u_a
ua 的用户收敛概率向量,
S
i
\mathbf{S}_i
Si 的第
a
a
a 行是对于锚点item
i
a
i_a
ia 的item收敛概率向量。为了为每个锚点选择最相关的用户和item,预先设定了一个缩放控制阈值
μ
∈
(
0
,
1
)
\mu\in (0,1)
μ∈(0,1),意味着用户或item只能被分配到
μ
×
K
\mu\times K
μ×K 个组中。以用户
u
m
u_m
um 为例,将
u
m
u_m
um 定义为
S
u
\mathbf{S}_u
Su 第
m
m
m 列以元素值降序排列前
μ
×
K
\mu\times K
μ×K 个锚点的邻居。用同样的方式为item
i
n
i_n
in 选择
μ
×
K
\mu\times K
μ×K 个锚点。最后,构建
K
K
K 个潜在群组
{
g
a
=
{
(
u
,
i
)
∣
u
∈
U
a
,
i
∈
I
a
}
}
a
=
1
K
\{g_a=\{(u,i)|u\in U_a,i\in I_a\}\}^K_{a=1}
{ga={(u,i)∣u∈Ua,i∈Ia}}a=1K,其中
U
a
U_a
Ua 和
I
a
I_a
Ia 分别代表锚点
(
u
a
,
i
a
)
(u_a,i_a)
(ua,ia) 的用户邻居和item邻居。
在探索潜在群组之后,随机初始化每个潜在群组
g
j
g_j
gj 的社交嵌入
e
s
j
∈
R
d
\mathbf{e}_{s_j}\in \mathbb{R}^d
esj∈Rd。用户
u
m
u_m
um 的群组嵌入是通过平均其潜在群组的社交嵌入获得的。设
C
m
u
=
{
g
1
,
g
2
,
⋯
,
g
k
}
C^u_m=\{g_1,g_2,\cdots,g_k\}
Cmu={g1,g2,⋯,gk} 表示用户
u
m
u_m
um 属于的潜在群组的集合,用户
u
m
u_m
um 的群组嵌入
e
u
m
g
\mathbf{e}^g_{u_m}
eumg 计算如下:
e
u
m
g
=
1
∣
C
m
u
∣
∑
g
j
∈
C
m
u
e
s
j
\mathbf{e}^g_{u_m}=\frac{1}{\lvert C^u_m\rvert}\sum_{g_j\in C^u_m}\mathbf{e}_{s_j}
eumg=∣Cmu∣1gj∈Cmu∑esj
相似地,可以通过
e
i
n
g
=
1
∣
C
n
i
∣
∑
g
k
∈
C
n
i
e
s
k
\mathbf{e}^g_{i_n}=\frac{1}{\lvert C^i_n\rvert}\sum_{g_k\in C^i_n}\mathbf{e}_{s_k}
eing=∣Cni∣1gk∈Cni∑esk
得到每个item的群组嵌入
e
i
g
\mathbf{e}^g_i
eig,其中
C
n
i
=
{
g
1
,
g
2
,
⋯
,
g
l
}
C^i_n=\{g_1,g_2,\cdots,g_l\}
Cni={g1,g2,⋯,gl} 代表item
i
n
i_n
in 的潜在群组集合。
3.2 The Collaborative Embedding Module
协同嵌入模块是设计用来为用户和item提供予语义嵌入的。在这个模块中,提出使用node2vec方法生成嵌入,该嵌入使用带有偏置的随机游走从二部图中获得一些节点序列。之后将滑动窗口应用于节点序列以获得节点
v
∈
V
=
U
⋃
I
v\in V=U\bigcup I
v∈V=U⋃I 的邻居
N
s
(
v
)
\mathcal{N}_s(v)
Ns(v)。对于每个节点
v
v
v,首先随机初始化其嵌入
e
v
c
∈
R
d
\mathbf{e}^c_v\in \mathbb{R}^d
evc∈Rd。接着通过最大化如下的目标函数学习节点嵌入:
∑
v
∈
V
[
−
log
Z
v
+
∑
n
i
∈
N
s
(
v
)
e
n
i
c
⋅
e
v
c
]
\sum_{v\in V}\left[-\text{log}Z_v+\sum_{n_i\in \mathcal{N}_s(v)}\mathbf{e}^c_{n_i}\cdot\mathbf{e}^c_v\right]
v∈V∑⎣
⎡−logZv+ni∈Ns(v)∑enic⋅evc⎦
⎤
其中
Z
v
=
∑
m
∈
V
exp
(
e
m
c
⋅
e
v
c
)
Z_v=\sum_{m\in V}\text{exp}(\mathbf{e}^c_m\cdot\mathbf{e}^c_v)
Zv=∑m∈Vexp(emc⋅evc),使用随机梯度下降方法优化目标函数。最后,定义这种嵌入为用户和item的协同嵌入。
3.3 The Self-Attentive Graph Convolution Module
自注意力图卷积模块被提出用来学习用户和item的表示。这个模块融合用户(item)的协同嵌入和群组嵌入,利用自注意力机制在聚合邻居的表示时衡量不同邻居的影响。
首先分别通过串联用户的协同嵌入
e
u
c
\mathbf{e}^{c}_u
euc 和用户的群组嵌入
e
u
g
\mathbf{e}^{g}_u
eug 以及串联item的协同嵌入
e
i
c
\mathbf{e}^{c}_i
eic 和item的群组嵌入
e
i
g
\mathbf{e}^{g}_i
eig 构造一个初始用户表示
e
u
(
0
)
\mathbf{e}^{(0)}_u
eu(0) 和一个初始item表示
e
i
(
0
)
\mathbf{e}^{(0)}_i
ei(0),定义如下:
e
u
(
0
)
=
e
u
c
∣
∣
e
u
g
\mathbf{e}^{(0)}_u=\mathbf{e}^{c}_u||\mathbf{e}^{g}_u
eu(0)=euc∣∣eug
e
i
(
0
)
=
e
i
c
∣
∣
e
i
g
\mathbf{e}^{(0)}_i=\mathbf{e}^{c}_i||\mathbf{e}^{g}_i
ei(0)=eic∣∣eig
接着设计了一个
L
L
L 层的自注意力图卷积网络来聚合节点邻居和自身的表示,以生成新的节点表示。在聚合过程中,利用自注意力机制衡量节点自身和其邻居的影响力。以用户
u
u
u 为例,经过
l
l
l 层后,用户表示
u
u
(
l
)
\mathbf{u}^{(l)}_u
uu(l) 计算如下:
e
u
(
l
)
=
σ
(
m
u
←
u
(
l
−
1
)
+
∑
i
∈
N
u
m
u
←
i
(
l
−
1
)
)
\mathbf{e}^{(l)}_u=\sigma\left(\mathbf{m}^{(l-1)}_{u\leftarrow u}+\sum_{i\in \mathcal{N}_u}\mathbf{m}^{(l-1)}_{u\leftarrow i}\right)
eu(l)=σ(mu←u(l−1)+i∈Nu∑mu←i(l−1))
其中
σ
(
⋅
)
\sigma(\cdot)
σ(⋅) 为ELU激活函数,
N
u
\mathcal{N}_u
Nu 为在图
G
G
G 上用户的一跳邻居,
m
u
←
u
\mathbf{m}_{u\leftarrow u}
mu←u 和
m
u
←
i
\mathbf{m}_{u\leftarrow i}
mu←i 分别为自身和其邻居的消息表示。
具体来说,这两种消息表示的定义如下:
m
u
←
u
(
l
−
1
)
=
α
u
u
⋅
W
1
l
e
u
(
l
−
1
)
\mathbf{m}^{(l-1)}_{u\leftarrow u}=\alpha _{uu}\cdot\mathbf{W}^l_1\mathbf{e}^{(l-1)}_u
mu←u(l−1)=αuu⋅W1leu(l−1)
m
u
←
i
(
l
−
1
)
=
α
u
i
(
W
1
l
e
i
(
l
−
1
)
+
W
2
l
(
e
i
(
l
−
1
)
⊙
e
u
(
l
−
1
)
)
)
\mathbf{m}^{(l-1)}_{u\leftarrow i}=\alpha _{ui}(\mathbf{W}^l_1\mathbf{e}^{(l-1)}_i+\mathbf{W}^l_2(\mathbf{e}^{(l-1)}_i\odot\mathbf{e}^{(l-1)}_u))
mu←i(l−1)=αui(W1lei(l−1)+W2l(ei(l−1)⊙eu(l−1)))
其中
W
1
\mathbf{W}_1
W1 和
W
2
\mathbf{W}_2
W2 为可训练参数,
⊙
\odot
⊙ 为Hadamard乘积,
α
u
u
\alpha _{uu}
αuu 和
α
u
i
\alpha _{ui}
αui 是表示两种不同消息表示的影响权重的注意力得分。具体来说,注意力分数由如下的一层自注意力网络计算:
α
u
j
=
e
x
p
(
δ
(
a
[
W
3
e
u
∣
∣
W
3
e
j
]
)
)
∑
k
∈
N
u
e
x
p
(
δ
(
a
[
W
3
e
u
∣
∣
W
3
e
k
]
)
)
\alpha _{uj}=\frac{exp(\delta(\mathbf{a}[\mathbf{W}_3\mathbf{e}_u||\mathbf{W}_3\mathbf{e}_j]))}{\sum_{k\in\mathcal{N}_u}exp(\delta(\mathbf{a}[\mathbf{W}_3\mathbf{e}_u||\mathbf{W}_3\mathbf{e}_k]))}
αuj=∑k∈Nuexp(δ(a[W3eu∣∣W3ek]))exp(δ(a[W3eu∣∣W3ej]))
其中
W
3
\mathbf{W}_3
W3 和
a
\mathbf{a}
a 是可训练的参数,
δ
(
⋅
)
\delta (\cdot)
δ(⋅) 为LeakyReLU激活函数。
最后,利用平均池层来平均这个模块中每层的输出,以获得最终的用户
u
u
u 的表示
e
u
∗
\mathbf{e}^*_u
eu∗,定义如下:
e
u
∗
=
m
e
a
n
p
o
o
l
i
n
g
(
e
u
(
1
)
,
e
u
(
2
)
,
⋯
,
e
u
(
L
)
)
\mathbf{e}^*_u=meanpooling(\mathbf{e}^{(1)}_u,\mathbf{e}^{(2)}_u,\cdots,\mathbf{e}^{(L)}_u)
eu∗=meanpooling(eu(1),eu(2),⋯,eu(L))
也可以通过同样的操作计算item的最终表示
e
i
∗
\mathbf{e}^*_i
ei∗。
得到最终的用户和item表示后,使用如下的内积来计算用户在目标item上的预测评分:
y
^
(
u
,
i
)
=
e
u
∗
T
e
i
∗
\hat{y}(u,i)={\mathbf{e}^{*}_u}^T\mathbf{e}^{*}_i
y^(u,i)=eu∗Tei∗
3.4 Optimizaton
本文中,如果用户对item进行了评分,将用户-item对定义为正交互;否则将用户-item对定义为负交互。在SAGLG算法中使用贝叶斯个性化排序(Bayesian Personalized Ranking,BPR)损失来学习参数,它假设正交互的预测分数应当比负交互高。BPR损失的损失函数定义如下:
L
o
s
s
=
−
∑
m
=
1
M
∑
i
k
∈
Q
m
+
∑
i
j
∈
Q
m
−
I
n
ϕ
(
y
^
(
u
m
,
i
k
)
−
y
^
(
u
m
,
i
j
)
)
+
λ
∥
θ
∥
2
Loss=-\sum^M_{m=1}\sum_{i_k\in\mathcal{Q}^+_m}\sum_{i_j\in\mathcal{Q}^-_m}In\phi(\hat{y}(u_m,i_k)-\hat{y}(u_m,i_j))+\lambda\lVert\theta\rVert^2
Loss=−m=1∑Mik∈Qm+∑ij∈Qm−∑Inϕ(y^(um,ik)−y^(um,ij))+λ∥θ∥2
其中
Q
m
+
\mathcal{Q}^+_m
Qm+ 和
Q
m
−
\mathcal{Q}^-_m
Qm− 分别表示用户
u
m
u_m
um 正交互和负交互的集合,
λ
\lambda
λ 为控制
L
2
L_2
L2 正则化强度的参数,
ϕ
(
⋅
)
\phi(\cdot)
ϕ(⋅) 为sigmoid函数,
θ
\theta
θ 表示所有可训练的模型参数。
4. EXPERIMENT
4.1 Experiment Datasets
本文实验使用三个被广泛使用的数据集:MovieLens(MovieLens-100K 和 MovieLens-1M),EachMovie来进行实验。表1展示了三个数据集的统计数据。
4.2 Experimental Settings
4.2.1 Evaluation Metrics
基于用户在测试item上的评分为生成每个测试用户一个top-
n
n
n的推荐列表。为了在top-
n
n
n推荐任务中评估SAGLG算法的表现,使用了4个广泛使用的评估指标:P@n,HR,MAP和NDCG。以一个测试用户
u
i
u_i
ui 为例,设
L
i
\mathcal{L}_i
Li 代表该用户的top-
n
n
n推荐列表。默认设置
n
n
n=5和10。用户
u
i
u_i
ui 的正item集合定义为
H
i
\mathcal{H}_i
Hi。
P@n和MAP两个指标都不仅仅考虑了top-
n
n
n推荐列表的精确度,也专注于正item的排序。P@n计算如下:
P
@
n
=
∑
i
=
1
M
∑
j
=
1
n
I
(
L
i
(
j
)
∈
H
i
)
M
×
n
P@n=\frac{\sum^M_{i=1}\sum^n_{j=1}\mathbb{I}(\mathcal{L}^{(j)}_i\in\mathcal{H}_i)}{M\times n}
P@n=M×n∑i=1M∑j=1nI(Li(j)∈Hi)
其中
I
(
⋅
)
\mathbb{I}(\cdot)
I(⋅) 代表指示函数,
L
i
(
j
)
\mathcal{L}^{(j)}_i
Li(j) 为在top-
n
n
n推荐列表中的第
j
j
j 个item。
MAP为平均精度平均值的缩写(mean of the average precision (AP)),其中AP计算如下:
A
P
i
=
∑
n
=
1
N
P
@
n
⋅
I
(
L
i
(
n
)
∈
H
i
)
∣
H
i
∣
AP_i=\frac{\sum^N_{n=1}P@n\cdot\mathbb{I}(\mathcal{L}^{(n)}_i\in\mathcal{H}_i)}{\lvert\mathcal{H}_i\rvert}
APi=∣Hi∣∑n=1NP@n⋅I(Li(n)∈Hi)
其中
L
i
(
n
)
\mathcal{L}^{(n)}_i
Li(n) 代表在列表
L
i
\mathcal{L}_i
Li 中的第
n
n
n 个推荐item。
∣
H
i
∣
\lvert\mathcal{H}_i\rvert
∣Hi∣ 表示在测试数据集中
u
i
u_i
ui 的正item的数量。平均全部测试用户的AP指标就得到了MAP:
M
A
P
=
∑
u
i
∈
U
t
e
s
t
A
P
i
∣
U
t
e
s
t
∣
MAP=\frac{\sum_{u_i\in U^{test}}AP_i}{\lvert U^{test}\rvert}
MAP=∣Utest∣∑ui∈UtestAPi
HR为命中率,描述推荐列表是否包含用户喜欢的项目。HR计算方式如下:
H
R
=
∑
u
∈
U
h
i
t
(
L
u
,
H
u
)
∣
U
∣
HR=\frac{\sum_{u\in U}hit(\mathcal{L}_u,\mathcal{H}_u)}{\lvert U\rvert}
HR=∣U∣∑u∈Uhit(Lu,Hu)
其中当
L
u
\mathcal{L}_u
Lu 包含至少一个
H
u
\mathcal{H}_u
Hu 中的item时
h
i
t
(
⋅
)
=
1
hit(\cdot)=1
hit(⋅)=1,否则
h
i
t
(
⋅
)
=
0
hit(\cdot)=0
hit(⋅)=0。
NDCG被广泛应用于度量排序算法的表现,其通过规范化DCG计算。DCG计算如下:
D
C
G
=
∑
i
=
1
K
2
r
j
−
1
l
o
g
2
(
1
+
j
)
DCG=\sum^K_{i=1}\frac{2^{r_j}-1}{log_2(1+j)}
DCG=i=1∑Klog2(1+j)2rj−1
其中
r
j
r_j
rj 为推荐列表中第
j
j
j 个item的评分。如果一个用户买了第
j
j
j 个item,
r
j
=
1
r_j=1
rj=1,否则
r
j
=
0
r_j=0
rj=0。为了规范化DCG,应将
L
u
\mathcal{L}_u
Lu 中的item按照其评分从大到小重新排序,生成一个新的item列表
L
P
\mathcal{L}^P
LP。
L
P
\mathcal{L}^P
LP 的DCG值称作 ideal DCG,定义如下:
I
D
C
G
=
∑
i
=
1
∣
L
P
∣
2
r
j
−
1
l
o
g
2
(
1
+
j
)
IDCG=\sum^{\lvert\mathcal{L}^P\rvert}_{i=1}\frac{2^{r_j}-1}{log_2(1+j)}
IDCG=i=1∑∣LP∣log2(1+j)2rj−1
NDCG的计算方式为:
N
D
C
G
=
D
C
G
I
D
C
G
NDCG=\frac{DCG}{IDCG}
NDCG=IDCGDCG
本文利用标准的5折交叉验证来平均所有实验结果。具体来说,随机将每个数据集分成5等份。在每一折中使用其中一份作为测试集,其余为训练集。通过平均5折的结果来生成最后的结果。
4.2.2 Comparison Algorithms
- Node2vec
- ItemPop
- BPRMF
- NeuMF
- SAGLG-no:该算法与提出的SAGLG算法共享相同的神经网络和参数。SAGLG-no不是为用户和item生成一个语义嵌入,而是随机初始化他们的嵌入。
4.2.3 Parameter Setting
在潜在群组挖掘模块中,针对锚点选择定义参数
α
=
0.8
\alpha=0.8
α=0.8,
β
=
0.5
\beta=0.5
β=0.5。设置锚点数量
K
=
20
K=20
K=20,规模控制参数
μ
=
0.25
\mu=0.25
μ=0.25,意味着每个节点将被分配到5个不同的群组。在协同嵌入模块,设置节点序列长度为20,滑动窗口大小为10,学习率为0.1。在两个模块中,定义群组嵌入和协同嵌入的维度
d
d
d 均为32。
在自注意力图卷积模块中,构建了一个三层自注意力图卷积网络。所有可训练的参数都通过xavier方法初始化。在训练过程中,应用Adam优化器,定义学习率
l
r
=
0.005
lr=0.005
lr=0.005,
d
r
o
p
o
u
t
=
0.1
dropout=0.1
dropout=0.1。
4.3 Experiment Results
4.3.1 Overall Comparison
表2、表3
4.3.2 Performance of Top-n
图3
4.3.3 Ablation Studies
SAGLG-a只考虑了用户和item的协同嵌入,将他们的协同嵌入随机初始化作为自注意力图卷积网络的输入。SAGLG-g只利用了用户和item的群组嵌入作为图卷积神经网络的输入。SAGLG-no考虑了两种嵌入,但并没有通过图嵌入方式使用协同嵌入生成语义协同嵌入。图4
5. CONCUSION
本文提出了一种SAGLG算法,该算法将协同嵌入和群组嵌入一同考虑进top-
n
n
n推荐任务中。为了生成用户(item)的群组嵌入,设计了LGM模块来通过重启随机游走的方式探索每个用户和item的潜在群组。为了获得有具体语义的协同嵌入,提出利用CE模块来基于二部图挖掘用户和item之间的协同关系。此外,设计了一个自注意力图卷积网络,融合这两种嵌入来增强用户和item的表示。基于不同的真实世界的数据集的实验结果已经验证了SAGLG算法优于最先进的算法。
在本文中,SAGLG算法在个性化推荐任务中是通用的,只需要一个用户-item评分矩阵进行训练。然而在现实中,有许多复杂的附带信息会影响推荐任务,例如标签、购买时间和不同类型的用户行为。例如,如果用户在短时间内点击了两个item,这两个item之间可能会有潜在的联系。在未来,应该将评分矩阵和这些附加信息相结合,例如根据购买的时间对用户购买的item进行排序,利用序列预测的方法提高推荐性能。