MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems

1 论文地址和代码

论文地址:https://keg.cs.tsinghua.edu.cn/jietang/publications/KDD21-Huang-et-al-MixGCF.pdf
代码地址:https://github.com/huangtinglin/MixGCF

2 推荐系统的介绍

近年来,图神经网络(GNN)被用于改进协同过滤推荐系统。通过将用户和项目的交互建模为图,GNN能够将图结构信息融合进嵌入中,以提高推荐性能。典型的基于GNN的推荐模型有PinSage、NGCF和LightGCN,它们已在Web规模的应用中取得了显著的成功。
负采样问题。

  • 在GNN-based推荐系统中,负采样是一项关键任务。负采样是指从未与用户交互的项目中挑选样本作为负样本,用于训练模型。然而,传统的负采样方法通常使用均匀分布来采样负样本,这可能导致模型的学习过程过于简单,不能有效地提升模型性能。
  • 为了提高负样本的质量,研究者们尝试了基于PageRank分数的采样、重新设计正负样本的分布等方法,然而这些方法主要集中在图的离散空间,忽视了GNN在嵌入空间中的邻域聚合过程。

3 贡献

本文提出了一种新的负采样策略,称为MixGCF。与传统方法不同,MixGCF通过生成硬负样本来提高模型的训练难度,而不是直接从数据中采样真实的负样本。它从数据增强和度量学习中汲取灵感,利用基于GNN的推荐模型合成负样本。
MixGCF设计了两种混合策略:正混合和跳跃混合。在正混合中,负样本的嵌入通过与正样本的信息混合来“污染”;在跳跃混合中,通过对多个负样本进行采样,并通过邻居的跳跃聚合生成合成负样本。
本文的贡献如下:

  • 提出合成负样本而不是直接从数据中采样负样本以改进基于GNN的推荐系统的想法。
  • 提出一个通用的 MixGCF 框架,其中包含 hop 混合和正混合策略,可以直接用于基于 GNN 的推荐模型。
  • MixGCF 性能优越,提出的负采样技术性能优越

4 预备知识

4.1 用于推荐的图神经网络

推荐系统的输入包括一组用户 U = { u } \mathcal{U}=\{u\} U={u},项目 V = { v } \mathcal{V}=\{v\} V={v},和用户的隐式反馈 O + = { ( u , v + ) ∣ u ∈ U , v + ∈ V } O^+=\{(u,v^+)|u\in\mathcal{U},v^+\in\mathcal{V}\} O+={(u,v+)uU,v+V},其中每对表示用户 u u u和项目 v + v^+ v+之间 的交互。目标是估计用户对项目的偏好。

GNN-based CF models 完成了这一目标,主要思想是根据用户的多跳邻居来测量用户 u u u对项目 v v v的偏好。其内积用于量化偏好,即 y ^ ( u , v ) = e u ∗ ⊤ e v ∗ . \hat{y}(u,v)=\mathrm{e}_{u}^{*\top}\mathrm{e}_{v}^{*}. y^(u,v)=euev.,接下来,我们简单介绍一下基于GNN的CF的过程,包括聚合、池化及其负采样优化。

聚合(Aggregation)。每个用户和项目的初始嵌入向量分别为 e u \mathbf{e}_{u} eu e v \mathbf{e}_{v} ev,以Light-GCN为 例,其聚合过程为:
e u ( l + 1 ) = ∑ i ∈ N u 1 ∣ N u ∣ ∣ N i ∣ e i ( l ) , e v ( l + 1 ) = ∑ j ∈ N v 1 ∣ N v ∣ ∣ N j ∣ e j ( l ) . ( 1 ) \mathbf{e}_{u}^{(l+1)}=\sum_{i\in N_{u}}\frac{1}{\sqrt{|N_{u}||N_{i}|}}\mathbf{e}_{i}^{(l)} , \mathbf{e}_{v}^{(l+1)}=\sum_{j\in N_{v}}\frac{1}{\sqrt{|N_{v}||N_{j}|}}\mathbf{e}_{j}^{(l)}.\quad(1) eu(l+1)=iNuNu∣∣Ni 1ei(l),ev(l+1)=jNvNv∣∣Nj 1ej(l).(1)

  • e u ( l ) , e v ( l ) \mathbf{e}_u^{(l)},\mathbf{e}_v^{(l)} eu(l),ev(l)是用户 u u u和项目 v v v在第 l l l层的GNN嵌入
  • N u \mathcal{N}_{u} Nu表示与用户 u u u交互的项目集
  • N v \mathcal{N}_{v} Nv表示与项目 v v v交互的用户集

为简单起见,我们在以下部分中使用 e ( l ) \mathrm{e}^{(l)} e(l)作为第 l l l层嵌入。

池化(Pooling)。基于GNN 的CF模型通常采用池化操作来生成用户和项目的最终表示,这可以帮助避免过度平滑并确定节点子图信息在不同范围内的重要性。
在最后一层 l l l,使用池化函数生成最终的用户和项目表示 e u ∗ \mathbf{e}_u^* eu e v ∗ \mathbf{e}_v^* ev,。

例如,LightGCN 使用基于总和的池化:
e u ∗ = ∑ l = 0 L λ l e u ( l ) , e v ∗ = ∑ l = 0 L λ l e v ( l ) , ( 2 ) \mathbf{e}_u^*=\sum\limits_{l=0}^L\lambda_l\mathbf{e}_u^{(l)},\mathbf{e}_v^*=\sum\limits_{l=0}^L\lambda_l\mathbf{e}_v^{(l)},\quad(2) eu=l=0Lλleu(l),ev=l=0Lλlev(l),(2)
例如,NGCF使用concat 的池化
e u ∗ = e u ( 0 ) ∣ ∣ ⋯ ∣ ∣ e u ( L ) , e v ∗ = e v ( 0 ) ∣ ∣ ⋯ ∣ ∣ e v ( L ) , ( 3 ) \mathbf{e}_u^*=\mathbf{e}_u^{(0)}||\cdots||\mathbf{e}_u^{(L)},\mathbf{e}_v^*=\mathbf{e}_v^{(0)}||\cdots||\mathbf{e}_v^{(L)},\quad(3) eu=eu(0)∣∣∣∣eu(L),ev=ev(0)∣∣∣∣ev(L),(3)

负采样优化(Optimization with Negative Sampling)。学习排序的任务是为用户提供项目的排名列表(假设用户喜欢的项目比其他项目排名更高)。

然而,通常情况下,用户的偏好无法完全从明确的反馈中得到。我们只能得到一些隐式反馈,比如用户点击、浏览、购买等行为(正向观察数据),这些行为只能告诉我们哪些物品是用户感兴趣的(即正样本)。但是,哪些物品用户不感兴趣(即负样本)则是无法直接知道的。
一种直接的解决方法是假设用户会更喜欢已观察到的物品(正样本),而不喜欢那些未观察到的物品(负样本),但是物品的数量非常大,直接考虑所有未观察的物品非常不现实,通常采用“负采样”技术,即随机选择一部分未观察到的物品作为负样本,用来训练模型。

BPR损失(Bayesian Personalized Ranking),BPR损失函数是其中一种常见的优化目标,公式如下:
max ⁡ ∏ v + , v − ∼ f S ( u ) P u ( v + > v − ∣ Θ ) ( 4 ) \max\prod_{v^+,v^-\sim f_{\mathrm{S}}(u)}P_u(v^+>v^-|\Theta)\quad(4) maxv+,vfS(u)Pu(v+>v∣Θ)(4)

  • v + v^{+} v+ v − v^{-} v分别表示正项目和负项目
  • P u ( a > b ) P_{u}(a>b) Pu(a>b)表示用户 u u u相较于 b b b项目更喜欢 a a a项目
  • f S ( u ) f_{\mathrm{S}}(u) fS(u)是负采样的分布,通常是一个均匀分布,即从所有未观察过的物品中随机选择
  • Θ \Theta Θ是模型参数,表示我们需要通过训练来优化的参数。

这个式子的目标是最大化所有可能的正负样本对的乘积。 P u ( v + > v − ∣ Θ ) P_{u}(v^{+}>v^{-}|\Theta) Pu(v+>v∣Θ)表示用户 u u u更喜欢 v + v^{+} v+而不是 v − v^{-} v的概率,我们需要优化 Θ \Theta Θ模型参数,来使得 P u ( v + > v − ∣ Θ ) P_{u}(v^{+}>v^{-}|\Theta) Pu(v+>v∣Θ)尽可能大,进而使乘积尽可能大。

5 MIXGCF

5.1 简介

MixGCF 是一种适用于基于 GNN 的推荐系统的负采样通用算法。它可以直接集成到现有的基于 GNN 的推荐算法中,例如 LightGCN 和 NGCF。MixGCF 提出了一种基于图结构合成信息丰富(且虚假的)负项目的方法,用于训练基于 GNN 的协同过滤推荐模型。

5.2 模型框架

在这里插入图片描述
如上图,MixGCF的框架, e ( l ) \mathrm{e}^{(l)} e(l)表示节点 e e e在第 l l l层的嵌入, e ′ ( l ) \mathbf{e}^{\prime(l)} e(l) 表示通过positive mixing生成的第 l l l层的嵌入。

5.3 Positive Mixing

在MixGCF的框架中,通过其嵌入 e v − \mathrm{e}_{v^{-}} ev伪造负样本 v i − v_{i}^{-} vi,其步骤如下:

第一步:选择 M \text{M} M个负样本项,形成候选集 M \mathcal{M} M,其中 M \text{M} M会远小于数据集中项目的数量。这些 M \text{M} M个负样本项可以形成一个大小为 M × ( L + 1 ) M\times(L+1) M×(L+1)的候选负嵌入集 E = { e v m ( l ) } \mathcal{E}=\{\mathbf{e}_{v_{m}}^{(l)}\} E={evm(l)}
第二步:将正样本信息 e v + \mathbf{e}_{v^{+}} ev+注入到负样本嵌入 E \mathcal{E} E中。对于每个候选负嵌入 e v m ( l ) ∈ E \mathrm{e}_{v_{m}}^{(l)}\in\mathcal{E} evm(l)E,positive mixing operation的公式如下:
e ′ v m ( l ) = α ( l ) e v + ( l ) + ( 1 − α ( l ) ) e v m ( l ) , α ( l ) ∈ ( 0 , 1 ) , ( 5 ) \mathbf{e'}_{v_m}^{(l)}=\alpha^{(l)}\mathbf{e}_{v^+}^{(l)}+(1-\alpha^{(l)})\mathbf{e}_{v_m}^{(l)},\alpha^{(l)}\in(0,1),\quad(5) evm(l)=α(l)ev+(l)+(1α(l))evm(l),α(l)(0,1),(5)

  • α ( l ) \alpha^{(l)} α(l)是每一跳 l l l的混合系数
  • 注意:如果混合系数是从贝塔分布 B e t a ( β , β ) \mathrm{Beta}(\beta,\beta) Beta(β,β)中采样的,这对模型的泛化能力有很大影响
  • 我们使用从(0,1)分布采样的混合系数

ε ′ \varepsilon^{\prime} ε是负样本候选集 M \text{M} M的增强嵌入集,正混合的两个作用是:

  • 向负样本中注入正信息来增强样本,这有助于使优化算法更好地学习决策边界
  • 通过随机混合系数引入随机不确定性,增强了模型的泛化能力

5.4 Hop Mixing

利用正混合增强的候选负项的嵌入 E ′ = { e ′ v m ( l ) } \mathcal{E}^{\prime} = \{\mathrm{e'}_{v_{m}}^{(l)}\} E={evm(l)},提出了跳混合技术来生成合成的负项 v − v^{-} v和嵌入 e v − \mathbf{e}_{v^{-}} ev,跳混合的主要思想是利用gnn中的分层聚合过程。

对于每一层 l ( 0 ≤ l ≤ L ) l\left(0\leq l\leq L\right) l(0lL),我们从 ε ′ ( l ) \varepsilon^{\prime(l)} ε(l)中采样一个候选负嵌入 e v x ′ ( l ) ( 1 ≤ x ≤ M ) \textrm{e}_{v_{x}}^{\prime(l)}(1\leq x\leq M) evx(l)(1xM),其中 ε ′ ( l ) \varepsilon^{\prime(l)} ε(l)包含了候选负样本项所有层的负嵌入。
L=2 \textit{L=2} L=2为例,从 ε ′ ( l ) \varepsilon^{\prime(l)} ε(l)采样 e ′ v a ( 0 ) , e ′ v b ( 1 ) , e ′ v c ( 2 ) \mathrm{e'}_{v_a}^{(0)},\mathrm{e'}_{v_b}^{(1)},\mathrm{e'}_{v_c}^{(2)} eva(0),evb(1),evc(2) a , b , c a,b,c a,b,c可以相同。

跳跃混合的想法是将所有 L + 1 L+1 L+1嵌入组合起来,生成(伪)负样本 v − v^{-} v的嵌入 e v − \mathbf{e}_{v^{-}} ev,公式如下:
e v − = f p o o l ( e ′ v x ( 0 ) , ⋯   , e ′ v y ( L ) ) , ( 6 ) \mathbf{e}_{v^-}=f_{\mathrm{pool}}\bigg(\mathbf{e'}_{v_x}^{(0)},\cdots,\mathbf{e'}_{v_y}^{(L)}\bigg),\quad(6) ev=fpool(evx(0),,evy(L)),(6)

  • 这里的池化操作是与当前基于GNN的推荐器中相同的池化操作。

公式6引出的问题

跳跃混合的核心问题是如何在每一层 l l l有效地从 ε ′ ( l ) \varepsilon^{\prime}(l) ε(l)采样嵌入 e ′ v x ( l ) ( 1 ≤ x ≤ M ) ⋅ \mathrm{e'}_{v_{x}}^{(l)}\stackrel{\cdot}{(1\leq x\leq M)} evx(l)(1xM)。期望损失 J ( θ ∗ ) J(\theta^{*}) J(θ)和经验损失 J ( θ T ) J(\theta_{T}) J(θT)之间的最优参数的 e u T e v \mathrm{e}_u^T\mathrm{e}_v euTev的预期风险满足:
E [ ∣ ∣ ( θ T − θ ∗ ) u ∣ ∣ 2 ] = 1 T ( 1 p d ( v ∣ u ) − 1 + 1 K p n ( v ∣ u ) − 1 K ) , ( 7 ) \mathbb{E}\left[||(\theta_T-\theta^*)_u||^2\right]=\frac{1}{T}(\frac{1}{p_d(v|u)}-1+\frac{1}{Kp_n(v|u)}-\frac{1}{K}),\quad(7) E[∣∣(θTθ)u2]=T1(pd(vu)11+Kpn(vu)1K1),(7)

  • p d ( v ∣ u ) , p n ( v ∣ u ) p_d(v|u),p_n(v|u) pd(vu),pn(vu)分别表示估计的目标用户对项目的正分布和负分布。
  • θ T \theta_{T} θT是训练后的模型参数。
  • θ ∗ \theta^{*} θ是最优的理论参数。
  • ( θ T − θ ∗ ) u (\theta_T-\theta^*)_u (θTθ)u是模型参数在用户 u u u上的误差。
  • E [ ∣ ∣ ( θ T − θ ∗ ) u ∣ ∣ 2 ] \mathbb{E}\left[||(\theta_T-\theta^*)_u||^2\right] E[∣∣(θTθ)u2]是误差的二范数(欧几里得距离)的平方的期望值,也就是说,它衡量了模型参数在用户 u u u上的偏差。

T T T K K K选定时,预期风险就只依赖于 p d ( v ∣ u ) p_d(v|u) pd(vu) p n ( v ∣ u ) p_n(v|u) pn(vu),但如果 p d ( v ∣ u ) p_d(v|u) pd(vu) p n ( v ∣ u ) p_n(v|u) pn(vu)成正比(例如, p n ( v ∣ u ) = α p d ( v ∣ u ) p_n(v|u)=\alpha p_d(v|u) pn(vu)=αpd(vu)),那么可以让预期风险只取决于 p d ( v ∣ u ) p_d(v|u) pd(vu)。而有着高内积分数的user-item之间的交互概率可以被准确估计

基于上述理论,负采样的建议方法是:

  1. 根据估计的正分布选择负样本
  2. 用内积分数来近似正分布并选择分数最高的候选样本,即负抽样也尽量选择负候选集中内积最大的user-item
  3. 这也称为hard negative select strategy

我的理解是:

  • 理想的负样本应该是那些“难以区分”的负样本,即与正样本非常相似的负样本。这样,模型就能更好地学习如何区分正负样本。
  • 用户与物品的内积得分越高,表示用户对物品的兴趣越强。因此,高内积得分的负样本通常是那些与正样本(真实的交互样本)非常相似的负样本

hard negative select strategy在第 l l l层的实现为:
e ′ v x ( l ) = arg ⁡ max ⁡ e ′ v m ( l ) ∈ E ( l ) f Q ( u , l ) ⋅ e ′ v m ( l ) , ( 8 ) \mathbf{e'}_{v_{x}}^{(l)}=\arg\max_{\mathbf{e'}_{v_{m}}^{(l)}\in\mathcal{E}^{(l)}}f_{\mathbb{Q}}(u,l)\cdot\mathbf{e'}_{v_{m}}^{(l)},\quad(8) evx(l)=argevm(l)E(l)maxfQ(u,l)evm(l),(8)

  • 上述公式我认为应该是 e v m ′ ( l ) ∈ ε ′ ( l ) e_{v_{m}}^{\prime(l)}\in\varepsilon^{\prime(l)} evm(l)ε(l)
  • ⋅ · 是内积运算
  • f Q ( u , l ) f_{\mathrm{Q}}(u,l) fQ(u,l) 是查询映射,返回的是第 l l l跳目标用户 u u u相关的嵌入

该函数依赖于用于推荐的GNN的池化模块,主流的池化模块有基于和的池化操作和基于连接的池化操作(公式2和公式3)。因此,目标用户 e u \mathbf{e}_u eu和合成负嵌入 e v − \mathrm{e}_{v^{-}} ev有两种选择:

  • Sum-based pooling: e u ⋅ e v − = ∑ l = 0 L λ l e u ⋅ e v − ( l ) \mathbf{e}_{u}\cdot\mathbf{e}_{v^{-}}=\sum_{l=0}^{L}\lambda_{l}\mathbf{e}_{u}\cdot\mathbf{e}_{v^{-}}^{(l)} euev=l=0Lλleuev(l)
  • Concat-based pooling: e u ⋅ e v − = ∑ l = 0 L e u ( l ) ⋅ e v − ( l ) \mathbf{e}_{u}\cdot\mathbf{e}_{v^{-}}=\sum_{l=0}^{L}\mathbf{e}_{u}^{(l)}\cdot\mathbf{e}_{v^{-}}^{(l)} euev=l=0Leu(l)ev(l)

为了使得公式8中的选择过程和GNN推荐系统中使用的池化保持一致,我们让 f Q ( u , l ) = e u f_{Q}(u,l)=\mathbf{e}_{u} fQ(u,l)=eu用于sum-based pooling,让 f Q ( u , l ) = e u ( l ) f_{Q}(u,l)=\mathbf{e}_{u}^{(l)} fQ(u,l)=eu(l) 用于concat-based pooling。

  • sum-based pooling最终的用户嵌入是通过将各层节点嵌入的加权求和得到的, e u = ∑ l = 0 L λ l e u ( l ) \mathbf{e}_u=\sum\limits_{l=0}^L\lambda_l\mathbf{e}_u^{(l)} eu=l=0Lλleu(l),让 e u \mathbf{e}_u eu参与运算即可
  • concat-based pooling则是每一层的用户嵌入是拼接起来的 e u = e u ( 0 ) ∣ ∣ ⋯ ∣ ∣ e u ( L ) \mathbf{e}_u=\mathbf{e}_u^{(0)}||\cdots||\mathbf{e}_u^{(L)} eu=eu(0)∣∣∣∣eu(L),为了确保查询映射函数与这种拼接的方式一致,则需要每一层的嵌入都参与运算。

5.5 Optimization with MixGCF

然后使用公式4中的BPR Loss作为损失函数(只不过加了对数 l n ln ln,将乘法改为加法的形式),公式如下:
L B P R = ∑ ( u , v + ) ∈ O + ln ⁡ σ ( e u ⋅ e v − − e u ⋅ e v + ) , ( 9 ) e v − ∼ f M i x G C F ( u , v + ) \begin{aligned}\mathcal{L}_{\mathrm{BPR}}&=\sum_{(u,v^{+})\in O^{+}}\ln\sigma(\mathbf{e}_{u}\cdot\mathbf{e}_{v^{-}}-\mathbf{e}_{u}\cdot\mathbf{e}_{v^{+}}),\quad(9)\\&\mathbf{e}_{v^{-}}\sim f_{\mathrm{MixGCF}}(u,v^{+})\end{aligned} LBPR=(u,v+)O+lnσ(eueveuev+),(9)evfMixGCF(u,v+)

  • σ ( ⋅ ) \sigma(\cdot) σ()是sigmod函数
  • O + O^{+} O+是正反馈集合
  • e v − ∼ f M i x G C F ( u , v + ) \mathbf{e}_{v^{-}}\sim f_{\mathrm{MixGCF}}(u,v^{+}) evfMixGCF(u,v+)表示 e v − \mathrm{e}_{v^{-}} ev由所提出的MixGCF方法合成。
  • e u ⋅ e v − − e u ⋅ e v + \mathbf{e}_u\cdot\mathbf{e}_{v^-}-\mathbf{e}_u\cdot\mathbf{e}_{v^+} eueveuev+结果为负数,说明模型已经学到用户对正物品的偏好较高,则 l n σ ( ⋅ ) ln\sigma(\cdot) l()的值更小,从而损失函数更小

5.6 算法流程

在这里插入图片描述

cst-yolo是一种基于改进版yolov7的新颖的血细胞检测方法。YOLO(You Only Look Once)是一种基于深度学习的目标检测算法,它将目标检测问题转化为单次前向传递过程,能够更快速地检测目标。 cst-yolo在yolov7的基础上进行了改进,主要体现在以下几点。首先,对于血细胞的特征提取,cst-yolo采用了一种新的卷积神经网络结构。这种网络结构利用了深层次的特征融合和特征重用,能够更准确地提取血细胞的特征信息。 其次,cst-yolo在目标检测过程中引入了注意力机制。该机制可以帮助网络更加关注血细胞相关的区域,在目标检测时提高准确率和召回率。 另外,cst-yolo还采用了一种新的损失函数,用于引导网络的训练过程。这个损失函数结合了目标检测任务的特点,能够更好地指导网络学习血细胞的检测。 最后,为了提高cst-yolo的检测性能,研究者还进行了大量的实验和优化工作。他们在多个公开的血细胞数据集上进行了测试,结果显示,cst-yolo相比于传统方法,在准确率和召回率上都有了显著提升。 综上所述,cst-yolo是一种基于改进版yolov7的血细胞检测方法。通过引入新的网络结构、注意力机制和损失函数的优化,以及大量的实验和优化工作,cst-yolo在血细胞检测任务中取得了较好的性能表现。这种方法有望为血液相关疾病的早期诊断和治疗提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值