SIGIR'22 推荐系统:自引导隐式反馈去噪

2022-09-19 10:35:39 浏览数 (1)

关注我们,一起学习~

title:Self-Guided Learning to Denoise for Robust Recommendation link:https://arxiv.53yu.com/pdf/2204.06832.pdf code:https://github.com/Scottdyt/SGDL from:SIGIR 2022

1. 导读

推荐系统中通常采用隐式反馈,如点击。将观察到的数据(如曝光点击)作为正样本,未观察到的作为负样本,但是隐式反馈通常是有噪声的,比如存在误点击的情况。现有的处理反馈中噪声的方法存在以下不足:

  • 他们通常无法捕获难交互难样本,不是噪声但损失值较大,即难训练)来学习全面的用户偏好;
  • 所提去噪方法无法适用于各种推荐模型,不是通用的

本文考虑推荐模型的记忆效果,提出新的去噪方法,自引导去噪学习SGDL。在训练早期(抗噪阶段)收集记忆交互,利用这些数据作为去噪信号,利用元学习指导后续训练(噪声敏感阶段)。并且可以在记忆点自动将学习阶段从记忆转换为自引导学习,通过自适应去噪调度器选择干净(没有噪声)且信息丰富的数据。

2. 先导试验

作者通过实验发现,在干净数据上,在训练前期,随着训练轮次的增加记忆率不断增加,说明训练前期模型能不断记忆干净数据中的交互,而后期则几乎不变了,对比噪声数据,后期还增加了一些,说明后期记住了一些噪声。因此作者将前期定义为抗噪阶段,即模型能够抵抗噪声,训练干净数据中的交互;后期为噪声敏感,即受噪声影响

3. 方法

image.png

3.1 阶段I:记忆化

3.1.1 记忆的交互

这个的目标是找到定义那些交互是被记忆了的。

以往的模型通常采用损失值来证明模型的记忆效果,但是损失值不足以反映学习过程,因为与推荐模型优化目标(排名)不一致,且无法从噪声交互中区分出难交互。

本文采用新的方法,基于评价指标HR,定义如果在训练轮次t商品i在用户u的排名列表里,则说明交互(u,i)在轮次t被模型记住,表示为

m_t(u,i)

。每次排名取Top-N,简单计算每个轮次的交互记忆是不稳定的,因为在早期(抗噪阶段)模型还没有被训练的很好,因此采用最近的h轮来计算,公式如下,其中

mathcal{P}_{t}^{h}(u, i)=left{m_{t-h 1}(u, i), cdots, m_{t}(u, i)right}

捕获最近h轮交互(u,i)的记忆历史。定义如果

m^h_t(u,i)

大于0.5则说明交互被模型记忆了。即:如果在最近h次训练中,交互(u,i)有超过一半的次数在模型的top-N排名中,则说明被模型记住了

m_{t}^{h}(u, i)=frac{1}{left|mathcal{P}_{t}^{h}(u, i)right|} sum_{m_{j}(u, i) in mathcal{P}_{t}^{h}(u, i)} m_{i}(u, i)

3.1.2 记忆点估计

在抗噪声期间,推荐模型不仅从干净的交互中学习到足够的信息,还从嘈杂的隐式反馈中积累了一些噪声(应该是从图1中红线比蓝线低来解释)。本节设计了两个指标来反映模型的上述两个记忆特征。

使用

M_t

表示在第t轮(epoch)时的一组记忆交互,并使用

y_{ui}^*

表示交互的真实标签,由于隐式反馈中的噪声,该标签不可用。本节提出两个基于记忆的指标,即记忆精度(MP)和记忆召回(MR),公式如下,

R_t={(u,i)in M_t:y_{ui}=y_{ui}^*}

表示真实标签与预测一致的记忆数据集,

mathcal{G}={(u,i)in D:y_{ui}=y^*_{ui}}

表示真实标签与预测一致的数据集合。MP单调递减因为首先记忆干净数据,然后逐渐记忆所有噪声交互;MR单调递增因为随着训练的进行,模型最终会记住所有干净的交互

MP=frac{|R_t|}{|M_t|}
MR=frac{|R_t|}{|mathcal{G}|}

因此,最好的记忆点

t_m

是使得MP和MR平衡的点,

MP_t=MR_t

,从而可以得到最佳的

M_{t_m}=mathcal{G}

,即干净数据,所以

t_m

可以通过下式计算得到,其中σ是噪声率。

M_{t_m}=|{(u,i)in D_t:y_{ui}=y^*_{ui}}|=(1-sigma)|D|

σ无法直接获得,可以利用干净交互和噪声交互的损失值的分布差异来估计。首先对所有训练交互的损失值进行归一化,然后用高斯混合模型GMM拟合,以对真标记和假标记样本的双峰分布进行建模,可以使用EM算法训练 GMM 模型。因此,可以通过损失分布的后验概率获得交互(u,i)有噪声的概率。因此,噪声率σ估计为下式,其中L是损失函数。

hat{sigma}=mathbb{E}_{(u, i) in mathcal{D}}left[pleft(mu mid L_{(u, i)}(theta)right]right.

当记忆的交互次数达到估计的干净数据大小(即

M_{t}ge (1-hat{sigma})D)

)时,SGDL 过渡到阶段 II。SGDL 能够估计记忆点

t_m

,并以几乎零计算开销且无需额外监督的情况下收集记忆数据

M_{t_m}

3.2 阶段II:自引导学习

3.2.1 基于记忆数据去噪

在噪声敏感时期,目标是通过对每个样本损失施加权重来增强训练的鲁棒性。在这里,考虑使用去噪信号来学习每个样本的权重,令

L_k(theta)

表示的第k个样本的损失(point-wise或pair-wise损失),

D_T

为训练数据。最优推荐模型参数θ是通过最小化以下加权损失来计算的,g()是对应的权重,本文在g()中使用包含参数ψ的单层MLP,

theta^{*}(psi)=underset{theta}{operatorname{argmax}} frac{1}{left|mathcal{D}_{T}right|} sum_{k}^{left|mathcal{D}_{T}right|} gleft(L_{k}(theta) ; psiright) L_{k}(theta)

通过下式优化ψ,其中Lm为第m个记忆的样本损失

psi^{*}=underset{w}{operatorname{argmax}} frac{1}{left|mathcal{M}_{t_{m}}right|} sum_{m}^{left|mathcal{M}_{t_{m}}right|} L_{m}left(theta^{*}(psi)right)

优化上面两个参数需要嵌套的循环,比较低效,作者基于元学习,在单循环上交替更新上面的参数,在每个迭代中分别执行下面的更新,可以和图2对照着看:

  • assumed update of θ:利用现有的ψ采用梯度下降更新θ,公式如下,
eta_1

为学习率

hat{theta}(psi)=theta-eta_{1} frac{1}{left|mathcal{D}_{T}right|} sum_{k}^{left|mathcal{D}_{T}right|} gleft(L_{k}(theta) ; psiright) nabla_{theta} L_{k}(theta)
  • update of ψ:相当于固定了θ对psi进行梯度下降
psi leftarrow psi-eta_{2} frac{1}{left|mathcal{M}_{t_{m}}right|} sum_{m}^{left|mathcal{M}_{t_{m}}right|} nabla_{psi} L_{m}(hat{theta}(psi))
  • Actual update of θ:更新完ψ之后再更新一次θ,公式还是一样的,
thetaleftarrow theta-eta_{1} frac{1}{left|mathcal{D}_{T}right|} sum_{k}^{left|mathcal{D}_{T}right|} gleft(L_{k}(theta) ; psiright) nabla_{theta} L_{k}(theta)

采用上述策略在噪声敏感期间优化推荐模型和权重函数,如图 2 所示。虽然这种策略不能保证找到全局最优值,但它在许多双层优化问题中都表现良好。

3.2.2 自适应去噪调度器

上述去噪方案依赖于记忆的数据为训练提供去噪信号。然而,由于记忆数据不可避免地会出现噪声,将它们的噪声整合会降低去噪性能。因此,本节提出了一种自适应去噪调度器,仅选择干净且信息丰富的记忆数据进行去噪学习。

将调度器定义为s,参数为

phi

,并选择两个有代表性的因素来量化每个记忆数据对去噪的贡献:

  • 第m个记忆样本的损失
L_m(theta)

其中θ是经过actual update后的。

  • 第m个记忆样本在
hat{theta}

theta

上的梯度相似性,

cos left(nabla_{hat{theta}} L_{m}(hat{theta}), nabla_{theta} L_{m}(theta)right)

这两个因素分别与第m个记忆样本的学习成果和学习过程相关。梯度相似度表征了记忆样本在模型训练中的贡献。如果梯度相似性也很大(即记忆样本的梯度方向与模型的优化一致),则较大的损失值可能代表关键的记忆样本;梯度相似度小的损失值大可能表明记忆样本有噪声。同时考虑这两个因素,制定了第m个记忆数据的采样概率为下式,此处采用LSTM作为s()函数

begin{array}{c} o_{m}=sleft(L_{m}(theta), cos left(nabla_{hat{theta}} L_{m}(hat{theta}), nabla_{theta} L_{m}(theta)right) ; phiright) \ pi_{m}=frac{exp left(o_{m} ; phiright)}{sum_{i in mathcal{M}_{t_{m}}} exp left(o_{i} ; phiright)} end{array}

由于采样过程不可微,因此采用Gumbel-Softmax进行重参数化生成可微样本,公式如下,其中

epsilon_m

从均匀分布中随机采样得到,0~1.

y_{m}=frac{exp left(log left(pi_{m}right) epsilon_{m}right) / tau}{sum_{i in mathcal{M}_{t_{m}}} exp left(log left(pi_{i}right) epsilon_{i}right) / tau}

调度器能够根据其对去噪隐式反馈的贡献来决定使用哪些记忆数据,并自适应地调整采样概率以获得更多信息的引导学习。

4. 结果

0 人点赞