原文:
https://dl.acm.org/doi/10.1145/3477495.3531889
摘要
现已存在的基于GNN协同过滤模型面临着一些用户-项目噪音数据,这个严重影响系统的有效性和鲁棒性。而对去噪的研究当中,他们要么是忽视GNN信息传播过程中噪音的直接影响,或者就是在去噪时直接抛弃推荐的多样性。
为了解决这个问题,作者提出了一种全新的基于GNN的协同过滤模型,Robust Graph Collaborative Filtering(RGCF),该模型将推荐过程中不可靠的交互去噪。具体来说,RGCF由一个图去噪模块graph denoising module和一个多样性保留模块diversity preserving module构成。图去噪模块通过同时采用硬去噪策略(丢弃那些确定为噪音的交互)和软去噪策略(为每一个留下来的交互分配一个可靠权重),减少GNN表示学习中噪音交互的影响。在保留多样性模块中,作者建立了一个diversity augmented graph(多样性扩充图)并且基于mutual information maximization(MIM,互信息最大化)提出一个auxiliary self-supervised task,这样是为了加强去噪后的表示以及保留推荐的多样性。这两个模块将通过多任务学习的角度来整合。
总述
RGCF由图去噪模块和多样性保留模块组成。图去噪模块目的是为了将交互数据中的噪音部分清除。首先计算用户-项目交互的可靠程度,随后基于可靠程度采取去噪硬策略和去噪软策略。多样性保留模块中,首先建立一个多样性扩充的交互图,随后基于互信息最大化MIM提出一个辅助性自监督任务,提高根据图去噪模块的表示学习能力,最终保留推荐时的多样性。作者通过在RGCF中采用多任务学习策略,整合上述两个模块。
U
=
{
u
}
,
I
=
{
i
}
分
别
表
示
可
观
察
到
的
用
户
集
合
与
项
目
集
合
交
互
数
据
标
记
为
矩
阵
R
∈
R
∣
U
∣
×
∣
I
∣
,
元
素
为
1
表
示
交
互
过
,
0
表
示
没
有
交
互
过
基
于
用
户
−
项
目
交
互
数
据
,
通
过
表
示
函
数
g
(
⋅
)
,
可
以
学
习
到
用
户
和
项
目
的
嵌
入
表
示
h
:
\mathcal{U}=\{u\},\mathcal{I}=\{i\}分别表示可观察到的用户集合与项目集合\\ 交互数据标记为矩阵R\in\mathbb{R}^{|\mathcal{U}|\times |\mathcal{I}|},元素为1表示交互过,0表示没有交互过\\ 基于用户-项目交互数据,通过表示函数g(·),可以学习到用户和项目的嵌入表示h:\\
U={u},I={i}分别表示可观察到的用户集合与项目集合交互数据标记为矩阵R∈R∣U∣×∣I∣,元素为1表示交互过,0表示没有交互过基于用户−项目交互数据,通过表示函数g(⋅),可以学习到用户和项目的嵌入表示h:
h u = g ( R , u ) , h i = g ( R , i ) (1) h_u=g(R,u),h_i=g(R,i) \tag{1}\\ hu=g(R,u),hi=g(R,i)(1)
h u ∈ R d , h i ∈ R d 分 别 是 用 户 u 和 项 目 i 的 嵌 入 表 示 h_u\in\mathbb{R}^d,h_i\in\mathbb{R}^d分别是用户u和项目i的嵌入表示 hu∈Rd,hi∈Rd分别是用户u和项目i的嵌入表示
图去噪模块
交互关系的可靠程度
作者是通过用户和项目在交互图中的结构相似度来判断他们之间关系的可靠程度的(根据homophily theory同构定理),而并非通过注意力机制来计算。
我们首先通过用户与项目的交互数据
R
∈
R
∣
U
∣
×
∣
I
∣
R\in \mathbb{R}^{|\mathcal{U}|\times |\mathcal{I}|}
R∈R∣U∣×∣I∣,构造它们的交互二部图
G
\mathcal{G}
G。然后抽取出它们的one-hop邻域节点作为它们的结构上的特征,通过这个来表示它们节点的局部拓扑信息。紧接着使用==嵌入转换矩阵
E
U
∈
R
∣
U
∣
×
d
E_U\in \mathbb{R}^{|\mathcal{U}|\times d}
EU∈R∣U∣×d和
E
I
∈
R
∣
I
∣
×
d
E_I\in \mathbb{R}^{|\mathcal{I}|\times d}
EI∈R∣I∣×d,在GNN训练过程中学习。==将用户和项目的结构特征转换到相同维度的隐藏空间:
H
U
s
=
R
E
I
,
H
I
s
=
R
T
E
U
(2)
\mathbf{H_U^s}=\mathbf{RE_I},\mathbf{H_I^s}=\mathbf{R^T E_U} \tag{2}
HUs=REI,HIs=RTEU(2)
这里,
H
U
s
∈
R
∣
U
∣
×
d
,
H
I
s
∈
R
∣
I
∣
×
d
H_U^s\in\mathbb{R}^{|\mathcal{U}|\times d},H_I^s\in\mathbb{R}^{|\mathcal{I}|\times d}
HUs∈R∣U∣×d,HIs∈R∣I∣×d是隐藏空间中用户与项目的结构特征矩阵。
h
u
s
,
h
i
s
h_u^s,h_i^s
hus,his分别是
H
U
s
,
H
I
s
H_U^s,H_I^s
HUs,HIs两个矩阵的第
i
i
i行。随后采用余弦相似度来计算它们交互关系的相似度:
c
o
s
(
h
u
s
,
h
i
s
)
=
h
u
s
T
h
i
s
∣
∣
h
u
∣
∣
2
⋅
∣
∣
h
i
∣
∣
2
(3)
cos(\mathbf{h_u^s},\mathbf{h_i^s})=\frac{{\mathbf{h_u^s}^T\mathbf{h_i^s}}}{||h_u||_2·||h_i||_2} \tag{3}
cos(hus,his)=∣∣hu∣∣2⋅∣∣hi∣∣2husThis(3)
但是计算出来的并不能直接用来作为图中的可靠程度,还需要正则化,否则可能会有负值。
s
u
,
i
=
(
c
o
s
(
h
u
s
,
h
i
s
)
+
1
)
/
2
(4)
s_{u,i}=(cos(\mathbf{h_u^s},\mathbf{h_i^s})+1)/2 \tag{4}
su,i=(cos(hus,his)+1)/2(4)
去噪交互图
现在要通过同时采用去噪硬策略和去噪软策略,我们把交互图 G \mathcal{G} G变成去噪后交互图 G ~ \tilde{\mathcal{G}} G~。图中的实体对 < u , i > <u,i> <u,i>的交互关系,它的可靠程度已通过公式(4)计算出,这个也就是去噪权重。
那么具体的去噪硬策略,就是把那些确定为噪音的交互关系在GNN信息传播过程中移除。如何来确定噪音,也就是判断该交互关系的可靠程度是否大于一个超参数
β
\beta
β。接下来的公式,就是结合了去噪硬策略与去噪软策略,重新构造交互关系
R
~
\tilde{R}
R~,同时这个交互关系也对应着去噪后交互图
G
‾
\overline{\mathcal{G}}
G:
r
~
u
,
i
=
I
(
s
u
,
i
>
β
)
⋅
s
u
,
i
(5)
\tilde{r}_{u,i}=\mathbb{I}(s_{u,i}>\beta)·s_{u,i} \tag{5}
r~u,i=I(su,i>β)⋅su,i(5)
这里
I
(
⋅
)
\mathbb{I}(·)
I(⋅)是一个二值方程,当符合括号内条件时,值为1;否则为0。这种方式既满足了去噪硬策略,又满足了去噪软策略。
CF图神经网络
现在利用GNN网络,通过信息传递来学习用户与项目的嵌入表示,大致如下:
H
~
U
,
H
~
I
=
G
N
N
(
H
U
(
0
)
,
H
I
(
0
)
,
G
~
)
(6)
\tilde{H}_U,\tilde{H}_I=GNN(H_U^{(0)},H_I^{(0)},\tilde{\mathcal{G}}) \tag{6}
H~U,H~I=GNN(HU(0),HI(0),G~)(6)
这里
H
~
U
,
H
~
I
\tilde{H}_U,\tilde{H}_I
H~U,H~I分别是用户、项目的嵌入表示,而
H
U
(
0
)
,
H
I
(
0
)
H_U^{(0)},H_I^{(0)}
HU(0),HI(0)是公式(2)中给的矩阵,作为用户、项目嵌入表示初始化的矩阵。而这GNN具体采用的哪个模型,作者采用的是LightGCN模型。那么通过聚合领域信息学习表示的具体过程如下:
h
~
u
(
k
)
=
∑
i
∈
N
u
r
~
u
,
i
∑
j
∈
N
u
r
~
u
,
j
h
~
i
(
k
−
1
)
h
~
i
(
k
)
=
∑
u
∈
N
i
r
~
u
,
i
∑
j
∈
N
i
r
~
j
,
i
h
~
u
(
k
−
1
)
(7)
\tilde{h}_u^{(k)}=\sum_{i\in\mathcal{N}_u}\frac{\tilde{r}_{u,i}}{\sum_{j\in\mathcal{N}_u}\tilde{r}_{u,j}}\tilde{h}_i^{(k-1)}\\ \tilde{h}_i^{(k)}=\sum_{u\in\mathcal{N}_i}\frac{\tilde{r}_{u,i}}{\sum_{j\in\mathcal{N}_i}\tilde{r}_{j,i}}\tilde{h}_u^{(k-1)} \tag{7}
h~u(k)=i∈Nu∑∑j∈Nur~u,jr~u,ih~i(k−1)h~i(k)=u∈Ni∑∑j∈Nir~j,ir~u,ih~u(k−1)(7)
r
~
u
,
i
\tilde{r}_{u,i}
r~u,i在公式(5)中给出。
N
u
,
N
i
\mathcal{N}_u,\mathcal{N}_i
Nu,Ni分别是用户
u
u
u和项目
i
i
i的one-hop领域节点集合。而
h
~
u
(
k
)
,
h
~
i
(
k
)
\tilde{h}_u^{(k)},\tilde{h}_i^{(k)}
h~u(k),h~i(k)分别是通过k层GNN网络学习到的用户与项目的嵌入表示。
h
~
u
(
0
)
=
h
u
s
,
h
~
i
(
0
)
=
h
i
s
\tilde{h}_u^{(0)}=h_u^s,\tilde{h}_i^{(0)}=h_i^s
h~u(0)=hus,h~i(0)=his是最初的表示。
在K层GNN网络迭代聚合之后,最终的输出为
h
~
u
,
h
~
i
\tilde{h}_u,\tilde{h}_i
h~u,h~i,通过每层学习到的表示的组合而成。
h
~
u
=
∑
k
=
0
K
α
k
h
~
u
(
k
)
,
h
~
i
=
∑
k
=
0
K
α
k
h
~
i
(
k
)
(8)
\tilde{h}_u=\sum_{k=0}^K\alpha_k\tilde{h}_u^{(k)},\tilde{h}_i=\sum_{k=0}^K\alpha_k\tilde{h}_i^{(k)} \tag{8}
h~u=k=0∑Kαkh~u(k),h~i=k=0∑Kαkh~i(k)(8)
α
l
=
1
1
+
K
\alpha_l=\frac{1}{1+K}
αl=1+K1为控制GNN第
l
l
l层权重的超参数。K等于2或者3,即GNN网络层采用两层的或者三层的。
预测
通过用户与项目的最终表示之间的点积,来求得预测评分:
y
^
u
,
i
=
h
~
u
⋅
h
~
i
(9)
\hat{y}_{u,i}=\tilde{h}_u·\tilde{h}_i \tag{9}
y^u,i=h~u⋅h~i(9)
为了训练图去噪模块,作者从没有交互过的用户-项目对抽取一些样本(负样本)作为训练数据,然后使用Bayesian Personalized Ranking(BPR)loss贝叶斯个性化排序损失作为损失函数:
L
B
P
R
=
∑
u
∈
U
∑
i
∈
N
u
∑
j
∈
I
,
j
∉
N
u
−
log
σ
(
y
^
u
,
i
−
y
^
u
,
j
)
(10)
\mathcal{L}_{BPR}=\sum_{u\in\mathcal{U}}\sum_{i\in\mathcal{N}_u}\sum_{j\in\mathcal{I},j\notin\mathcal{N}_u}-\log\sigma(\hat{y}_{u,i}-\hat{y}_{u,j})\tag{10}
LBPR=u∈U∑i∈Nu∑j∈I,j∈/Nu∑−logσ(y^u,i−y^u,j)(10)
σ
\sigma
σ为sigmoid函数。
多样性保留模块
因为去噪会弱化推荐的多样性,因此作者在训练过程中,基于去噪交互图,动态地构造额外的多样性扩充图。然后通过辅助互信息最大化MIM损失,将多样性特征注入到去噪后的用户表示中(公式8).
多样性扩充图Diversity Augmented Graph的构造
为了权衡去噪后,推荐的精度与多样性,关键思路就是将多样又可靠的边注入到去噪后的交互图 G ~ \tilde{\mathcal{G}} G~中,构造额外的多样性扩充图 G ¨ \ddot{\mathcal{G}} G¨。构造过程分为两步:①随机采样和②可靠程度感知选择。
具体一点,首先,以概率
ρ
\rho
ρ统一采样一组未交互的用户-项目对:
C
=
S
a
m
p
l
e
(
{
(
u
,
i
)
∣
u
∈
U
,
i
∈
I
,
r
u
,
i
=
0
}
∣
ρ
)
(11)
\mathcal{C}=Sample(\{(u,i)|u\in\mathcal{U},i\in\mathcal{I},r_{u,i}=0\}|\rho) \tag{11}
C=Sample({(u,i)∣u∈U,i∈I,ru,i=0}∣ρ)(11)
C = { ( u , i ) } \mathcal{C}=\{(u,i)\} C={(u,i)}是我们用来构造额外的多样性图扩充的候选用户-项目对集合。而 C \mathcal{C} C在每一轮训练当中都会重新随机生成,这样我们添加交互信息的时候能够保证多样性。
随后,我们选择高可靠程度的交互关系即用户-项目对:
r
¨
u
,
i
=
I
(
s
u
,
i
∈
t
o
p
−
M
(
S
)
)
⋅
s
u
,
i
(12)
\ddot{r}_{u,i}=\mathbb{I}(s_{u,i}\in top-M(S))·s_{u,i} \tag{12}
r¨u,i=I(su,i∈top−M(S))⋅su,i(12)
S
=
{
s
u
,
i
∣
(
u
,
i
)
∈
C
}
S=\{s_{u,i}|(u,i)\in C\}
S={su,i∣(u,i)∈C},
M
M
M是已选择用户-项目对的数目,设置
M
=
∣
R
∣
10
=
∣
C
∣
10
M=\frac{|R|}{10}=\frac{|C|}{10}
M=10∣R∣=10∣C∣。注意,不像图去噪模块直接移除交互关系中的不可靠关系,多样性保留模块会从动态的候选交互中选择一些交互关系。此时的图就是多样性扩充图,标记为
G
¨
\ddot{\mathcal{G}}
G¨。
多样性保留
给定重构多样性扩充图 G ¨ \ddot{\mathcal{G}} G¨,我们可以利用GNN学习节点嵌入(公式6)。然而从 G ¨ \ddot{\mathcal{G}} G¨学习到的嵌入表示,可能会和从去噪后的交互图 G ~ \tilde{\mathcal{G}} G~学习到的表示相矛盾。为了权衡精度与多样性,作者利用基于MIM的辅助自监督任务,将两种节点表示pull close,并且权衡这两个。
MIM基于互信息MI这个概念而提出来的,互信息表达了随机变量之间的依赖关系。
互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。
从形式上,给定两个随机变量 X X X和 Y Y Y,互信息表示通过观察Y能够获得多少关于X的信息,反之亦然。X和Y的互信息表示为 I ( X , Y ) I(X,Y) I(X,Y):
I ( X , Y ) = H ( X ) − H ( X ∣ Y ) = H ( Y ) − H ( Y ∣ X ) (13) I(X,Y)=H(X)-H(X|Y)=H(Y)-H(Y|X) \tag{13} I(X,Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)(13)
这里熵 H ( ⋅ ) H(·) H(⋅)表示随机变量中蕴含的不确定性。当用来学习图表示时,随机变量X和Y通常会对应不同的视图[Jiancan Wu, Xiang Wang, Fuli Feng, Xiangnan He, Liang Chen, Jianxun Lian,and Xing Xie. 2021. Self-supervised graph learning for recommendation. In Proceedings of the 44th International ACM SIGIR Conference on Research and**Development in Information Retrieval. 726–735]。
通过最大化节点表示的互信息,我们能够获得图的不同视图之间的相关性,并且能够识别出原始图中最重要的信息。
特别地,在该论文中有两个用户-项目交互视图,即去噪交互图
G
~
\tilde{\mathcal{G}}
G~和多样性交扩充互图
G
¨
\ddot{\mathcal{G}}
G¨。那么,基于不同交互图,作者采用权值共享的GNN(公式6,7,8)来学习用户和项目的表示:
H
~
U
,
H
~
I
=
G
N
N
(
H
U
(
0
)
,
H
I
(
0
)
,
G
~
)
H
¨
U
,
H
¨
I
=
G
N
N
(
H
U
(
0
)
,
H
I
(
0
)
,
G
¨
)
(14)
\tilde{H}_U,\tilde{H}_I=GNN(H_U^{(0)},H_I^{(0)},\tilde{\mathcal{G}}) \\ \ddot{H}_U,\ddot{H}_I=GNN(H_U^{(0)},H_I^{(0)},\ddot{\mathcal{G}}) \tag{14}
H~U,H~I=GNN(HU(0),HI(0),G~)H¨U,H¨I=GNN(HU(0),HI(0),G¨)(14)
直接最大化互信息是十分棘手的。受到前人工作InfoNCE的启发,作者采用对比损失,来优化MI的下界。具体而言,对于每一个用户
u
u
u而言,去噪表示
h
~
u
\tilde{h}_u
h~u和多样性表示扩充
h
¨
u
\ddot{h}_u
h¨u分别考虑为anchor和positive sample正样本。进一步,其他用户的多样性扩充表示就视为负样本。给出多样性保留损失:
L
D
I
V
=
−
∑
u
,
v
∈
U
log
e
x
p
(
f
(
h
~
u
,
h
¨
u
)
/
τ
)
e
x
p
(
f
(
h
~
u
,
h
¨
u
)
/
τ
)
+
∑
v
≠
u
e
x
p
(
f
(
h
~
u
,
h
¨
u
)
/
τ
)
(15)
\mathcal{L}_{DIV}=-\sum_{u,v\in\mathcal{U}}\log\frac{exp(f(\tilde{h}_u,\ddot{h}_u)/\tau)}{exp(f(\tilde{h}_u,\ddot{h}_u)/\tau)+\sum_{v\ne u}exp(f(\tilde{h}_u,\ddot{h}_u)/\tau)}\tag{15}
LDIV=−u,v∈U∑logexp(f(h~u,h¨u)/τ)+∑v=uexp(f(h~u,h¨u)/τ)exp(f(h~u,h¨u)/τ)(15)
τ
\tau
τ是temperature超参数,
f
(
⋅
,
⋅
)
f(·,·)
f(⋅,⋅)是余弦相似度函数。通过最小化上述辅助损失,我们就能加强从去噪图学习到的用户表示和从多样性扩充数据中学习到的用户表示,二者之间的相关性。
注意,这里的主要目标是为了提升用户去噪表示的多样性,而多样性扩充图只是起个辅助作用。不同于简单融合两种表示,作者采用的是,将多样性信息注入去噪节点表示。
模型训练
图去噪模块和多样性扩充图模块二者共同训练,他们的损失函数为:
L
=
L
B
P
R
+
λ
1
L
D
I
V
+
λ
2
∣
∣
Θ
∣
∣
2
2
(16)
\mathcal{L}=\mathcal{L}_{BPR}+\lambda_1\mathcal{L}_{DIV}+\lambda_2||\Theta||_2^2\tag{16}
L=LBPR+λ1LDIV+λ2∣∣Θ∣∣22(16)
λ
1
,
λ
2
=
1
e
−
5
\lambda_1,\lambda_2=1e-5
λ1,λ2=1e−5是分别用来控制多样性保留损失强度的超参数和
L
2
L_2
L2正则化,而
Θ
=
{
E
U
,
E
I
}
\Theta=\{E_U,E_I\}
Θ={EU,EI}是模型的参数集合。
通过公式(2)-(8),我们可以生成最终表示用于最后的推断。