RGCF:Learning to Denoise Unreliable Interactions for Graph Collaborative Filtering论文阅读
日期、期刊
** 22, July 11–15, 2022** SIGIR
背景
近年来,图神经网络( GNN )作为一种有效的协同过滤( CF )方法被成功应用于推荐系统。然而,现有的基于GNN的CF模型会受到用户-项目交互数据的干扰,严重影响了其在实际应用中的有效性和鲁棒性。虽然已有一些关于推荐系统中数据去噪的研究,但要么忽略了噪声交互对GNN消息传播的直接干预,要么在去噪时未能很好地保留推荐的多样性。
文章要解决的问题和文章创新点
- 现有的基于GNN的CF推荐系统会收到用户和项目交互数据的干扰,这严重影响了在实际应用中的有效性和鲁棒性;
- 具体而言存在的主要问题有以下两个方面:
- 先前的研究缺少在GNN学习的过程中没有直接干预表征的学习,因此,即使单个节点本身的噪声降低到一定程度,来自邻域的聚合噪声的全局影响仍然是不可控的。
- 在去噪交互数据中存在纯度(用户偏好)和多样性之间的权衡,现有方法主要强调数据去噪对纯度的影响,而较少考虑去噪带来的副作用,这往往会削弱推荐的多样性,甚至导致信息茧房。
- 本文提出了一种新的基于GCN的CF模型用于推荐系统,即RGCF,为推荐系统去除噪声。
- 首先文章通过为消息传递(图像去噪模块)识别更可靠的交互来直接改进图结构学习。其次文章通过关联从去噪的交互数据和多样性增强数据中学习到的用户偏好来进一步增强推荐的多样性。
- 简而言之具体去除噪音的流程为:1.丢弃自信认为是噪声的信息2. 为剩余链路分配可靠性权重。
- 对于多样性保持,1.文章考虑为交互图融入一个多样性增强视图,并设计了一个基于互信息最大化的辅助自监督任务;
模型
模型主要由两大部分组成:分别是去除噪声模块和保护多样性的模块;
去除噪声模块:
参数含义:
Eu表示用户的特征集合、Ei项目的特征集合、R表示用户和项目之间有没有交互的信息矩阵,类似交互图的邻接矩阵、
h
U
s
h_{U}^{s}
hUs表示
H
U
s
=
R
E
I
H_{U}^{s} =RE_{I}
HUs=REI第u个向量以此类推、
β
\beta
β超参数、I()二元指示函数、
G
~
\tilde{G}
G~去噪之后的图表示、给定用户项目交互数据R,可以从中得出用户和项目之间的交互图G
计算流程:
- 用户项目交互可靠度的计算
- 首先转换通过R将两个特征矩阵转换到统一个特征空间之中:公式如下所示
H U s = R E I , H U s = R E U H_{U}^{s} =RE_{I} ,H_{U}^{s} =RE_{U} HUs=REI,HUs=REU
- 将 h u s h_{u}^{s} hus和 h s i h_{s}^{i} hsi向量做余弦相似度,以此来表示用户u和项目I之间的交互作用的可靠度,公式如下所示:
cos ( h u s , h i s ) = h u s T h i s ∥ h u ∥ 2 ⋅ ∥ h v ∥ 2 \cos (h_{u}^{s},h_{i}^{s} )=\frac{h_{u}^{s}{^{T}} h_{i}^{s}}{\left \| h_{u} \right \|_{2} ·\left \| h_{v} \right \|_{2} } cos(hus,his)=∥hu∥2⋅∥hv∥2husThis
- 经过上述的计算之后得出的值不能够直接的作为交互作用的可靠度,因为这种也存在这负数,通过这种方式估计的交互图的边权重,可以从暗示了用户和项目之间的交互可靠度,转换公式如下所示:
s u , i = ( cos ( h u s , h i s ) + 1 ) / 2 s_{u,i} =(\cos (h_{u}^{s},h_{i}^{s} )+1)/2 su,i=(cos(hus,his)+1)/2
- 在计算完毕交互可靠度之后,将得到的交互可靠度通过以下的方式转换为交互图的权重,由此来对于去除用户和项目之间的交互噪声;
r
~
u
,
i
=
I
(
s
u
,
i
>
β
)
⋅
s
u
,
i
\tilde{r} _{u,i}= I(s_{u,i}>\beta )·s_{u,i}
r~u,i=I(su,i>β)⋅su,i
多样性增强模块
构建多样性图模块
构建的步骤包括两大步骤:随机抽样和可靠性感知选择;
- 随机采样:以概率ρ均匀地采样一组没有交互的用户-项目对,c是随机在每一个训练阶段随机采样的, C = S a m p l e ( { ( u , i ) ∣ u ∈ U , i ∈ I , r u , i = 0 ∣ ρ } ) C=Sample(\left \{ (u,i)\left | u\in U,i\in I,r_{u,i}=0 \right |\rho \right \} ) C=Sample({(u,i)∣u∈U,i∈I,ru,i=0∣ρ}),在选择候选对的时候从候选集C中通过如下公式来挑选候选的加入到交互图中;
r ¨ = I ( s u , i ∈ t o p − M ( S ) ) ⋅ s u , i \ddot{r}=I(s_{u,i}\in top-M(S) )· s_{u,i} r¨=I(su,i∈top−M(S))⋅su,i
- 保护多样性模块
给定构造的多样性增广图G,我们可以用GNN 学习相应的节点嵌入。然而,在G中添加了未观察到的相互作用,从G中学习到的嵌入很可能偏离从去噪的相互作用图G-1中学习到的嵌入,因此为了平衡建模原始图结构的准确性和建模用户偏好的多样性,我们设计了一个基于互信息最大化的辅助自监督任务来拉近两种节点表示并在两者之间进行权衡。其中讲去噪止之后的图结构信息和加入多样性保护之后的图结构信息作为MIM算法的X and Y进行计算,由于直接采用MIM算法是难以解决的,因此这里本文采用了一种对比损失的方式来对于算法进行优化,其中流程如下所示:
首先经过一个权重共享的GNN(文中使用的是LightGCN)进行计算得出新的项目和用户的表示
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
~
)
\ddot{H} _{U} ,\ddot{H} _{I} =GNN(H_{U}^{(0)} ,H_{I}^{(0)},\ddot{G})\tilde{H} _{U} ,\tilde{H} _{I} =GNN(H_{U}^{(0)} ,H_{I}^{(0)},\tilde{G})
H¨U,H¨I=GNN(HU(0),HI(0),G¨)H~U,H~I=GNN(HU(0),HI(0),G~)
优化:文中使用的是InfoNCE损失计算方法进行对于MIM算法优化,在优化中对于每一个用户来说去噪之后的特征和增加多样性之后的特征被认定的是一个anchor和positive sample,其他用户的特征表示被认为是negative sample,优化公式如下所示:
L
D
I
V
=
−
∑
u
,
v
∈
U
l
o
g
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
¨
v
/
τ
)
)
L_{DIV} =-\sum_{u,v\in U }^{} log\frac{exp(f(\tilde{h}_{u},\ddot{h}_{u}/\tau ))}{exp(f(\tilde{h}_{u},\ddot{h}_{u}/\tau ))+ {\textstyle \sum_{v\ne u}^{}exp(f(\tilde{h}_{u},\ddot{h}_{v}/\tau ))} }
LDIV=−∑u,v∈Ulogexp(f(h~u,h¨u/τ))+∑v=uexp(f(h~u,h¨v/τ))exp(f(h~u,h¨u/τ))
针对于CF的图神经网络
参数含义:
N
u
,
N
i
N_{u},N_{i}
Nu,Ni代表一层之间关于用户u和项目i、
h
~
(
i
)
k
,
h
~
(
u
)
k
\tilde{h}_{(i)}^{k} ,\tilde{h}_{(u)}^{k}
h~(i)k,h~(u)k代表用户经过k层神经网络之后的用户u和项目i的项目嵌入表示、
α
k
\alpha _{k}
αk是超参数代表每一层的重要性、
在这一部分中,
- 首先,文章使用了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 ) ~ \tilde{h} _{u}^{(k)}=\sum_{i\in N_{u} }^{} \frac{\tilde{r } _{u,i}}{ {\textstyle \sum_{j\in N_{u}}^{}\tilde{r } _{u,j}} } \tilde{h_{i}^{(k-1)} } ,\tilde{h} _{i}^{(k)}=\sum_{u\in N_{i} }^{} \frac{\tilde{r } _{u,i}}{ {\textstyle \sum_{j\in N_{i}}^{}\tilde{r } _{j,i}} } \tilde{h_{u}^{(k-1)} } h~u(k)=∑i∈Nu∑j∈Nur~u,jr~u,ihi(k−1)~,h~i(k)=∑u∈Ni∑j∈Nir~j,ir~u,ihu(k−1)~
- 在经过K层神经元的消息传播之后,最后图神经网络输出最后的表示,最后的表示形式如下所示:
h
~
u
=
∑
k
=
0
K
α
k
h
~
u
(
k
)
,
h
~
i
=
∑
k
=
0
K
α
k
h
~
i
(
k
)
\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)}
h~u=∑k=0Kαkh~u(k),h~i=∑k=0Kαkh~i(k)
训练损失函数:
L
B
P
R
=
∑
u
∈
U
∑
i
∈
N
u
∑
j
∈
I
,
i
≠
N
u
−
l
o
g
σ
(
y
^
u
,
i
−
y
^
u
,
j
)
L_{BPR} =\sum_{u\in U}^{} \sum_{i\in N_{u}}^{} \sum_{j\in I,i\ne N_{u}}^{}-log\sigma (\hat{y}_{u,i}-\hat{y} _{u,j} )
LBPR=∑u∈U∑i∈Nu∑j∈I,i=Nu−logσ(y^u,i−y^u,j)
模型训练
模型中存在两个模块,即去噪模块和,多样性保护模块,多样性保护模块中又存在一个自监督的任务,因此在模型训练的时候,采用多任务学习的策略。这里首先给出模型的损失函数如下所示:第一个损失函数加上对比损失函数乘以超参数再加上超参数乘以模型的参数(这一点我不是很明白)
L
=
L
B
P
R
+
λ
1
L
D
I
V
+
λ
2
∥
ω
∥
2
2
L=L_{BPR} +\lambda _{1}L_{ DIV} +\lambda _{2} \left \| \omega \ \right \| _{2}^{2}
L=LBPR+λ1LDIV+λ2∥ω ∥22
点
- 基于CF的GNN推荐模型在用户和项目的交互之间存在的噪声是指的是:错误/粗心的偏好选择,不可避免地会给观测到的交互数据引入噪声
- 为什么基于GNN的推荐系统都必要的需要去除在项目和用户之间的噪声?
- 因为基于GNN模型的推荐系统主要是通过项目和用户之间的交互来,确定用户和项目网络图
- 而GNN通过迭代地聚合邻域信息而采用消息传递机制,这容易放大噪声交互对表示学习的影响。
- 多任务学习策略:有多个目标函数loss同时学习的就算多任务学习。
- 同质性理论:具有相似特征或结构角色的节点比具有不同特征或结构角色的节点更有可能进行交互。
- 预测的损失函数LBPR要使用里面相减的方式来计算损失?
- 为什么最后的模型训练过程中的损失函数需要使用最后的呢个模型的参数?