自动化Debias框架,一键去除推荐系统所有Bias。

2021-06-15 15:45:59 浏览数 (1)

作者:一元,四品炼丹师

AutoDebias:Learning to Debias for Recommendation

01 简介

本文的代码已经开源,关注我们的号后台回复autodebias即可获得对应代码。

推荐系统依赖于用户行为数据,如评分和点击来建立个性化模型。然而,

  • 所收集的数据是观察性的而不是实验性的,导致了数据中的各种偏差,这些偏差显著地影响了学习模型。

大多数现有的推荐debias的工作,如反向inverse propensity scoring和imputation方法,侧重于一个或两个具体的Bias,缺乏通用性。

针对这一研究空白,我们首先从风险差异的角度分析了Bias的来源,风险差异代表了预期经验风险和真实风险之间的差异。值得注意的是,我们通过指定通用框架的一些参数,得到一个通用学习框架,很好地总结了大多数现有的debiasing策略。但是:

  • 训练数据缺乏关于数据是如何有偏的以及无偏数据是什么样子的重要信号。

本文提出利用另一个(小的)统一数据集通过元学习解决双层优化问题来优化参数的AotoDebias方法。通过理论分析,我们得到了AutoDebias的推广界,并证明了它能够获得合适的debias策略。

本文的核心贡献主要有下面2点:

  1. 从风险差异的角度统一各种Bias,并制定一个包含大多数debiasing策略的通用debiasing的框架;
  2. 提出了一种利用统一数据学习最优debiasing策略的新方法,并给出了理论保证。

02 问题定义

用户集合,商品集合,反馈集合,我们收集到的行为数据可以被表示为:

{(u_k,i_k,r_k) }_{1 le k le |D_T|}

推荐系统的目标就是,从中学习一个推荐模型来捕获用户的喜好并进行高质量的推荐。此处我们用表示预测和真实标签的误差函数,我们的目标就是学习参数化的函数,

L(f) = E_{pU(u,i,r)}[delta(f(u,i),r)]

其中为参数为的推荐模型。因为真实的risk我们无法拿到,实践中我们都是直接优化经验损失:

bar{L}_T(f) = frac{1}{|D_T|} sum_{k=1}^{|D_T|} delta(f(u_k,i_k),r_k)

推荐的Bias

Selection Bias

用户可以自由选择要评分的商品,所以观察到的评分不是所有评分的代表性样本。从风险差异的角度来看,选择偏差很容易理解——它扭曲了用户-商品对的分布 . 一般来说,倾向于具有高rating值的配对。

Conformity Bias

发生在用户倾向于表现出与组中其他人相似的行为时,即使这样做违背了他们自己的判断。

一致性偏差扭曲了标签分布,导致反馈并不总是表示用户真正的偏好,即:.

Exposure bias

发生在隐性反馈数据中,因为用户只接触到特定商品的一部分。从上述定义很难理解曝光偏差,但从风险差异的角度来看则很简单。一方面,用户在暴露商品上生成行为,使得观察到的user-item分布偏离理想. 另一方面,内隐反馈数据只观察到正反馈.此类仅为正面的数据将导致对未观察到的交互作用的解释出现歧义-它们可能由未曝光或不喜欢引起。

Position bias

当用户倾向于与推荐列表中较高位置的商品发生交互。位置偏差下的训练数据分布 会对商品显示位置敏感,不能如实反映用户偏好。而且排名的位置将影响商品暴露给用户的机会,即,. 另一方面,由于用户往往信任推荐系统,因此他们的判断也会受到位置的影响。

03 Debias框架

为了解决上述的问题,此处我们直接对经验risk函数进行重新加权:

bar{L}_T(f|w^{(1)}) = frac{1}{|D_T|} sum_{k=1}^{|D_T|} w_k^{(1)} L(f(u_k,i_k),r_k)

其中,这样每个采样的训练样本数据就得到了纠正。

E_{p_T}[bar{L}_T (f|w^{(1)})] = sum_{(u,i,r) in S_1} p_U(u,i,r) delta(f(u,i),r)

其中表示用户商品的标签子空间,满足:,,即:

p_T(u,i,r) >0, \ p_U(u,i,r) >0

如下图所示,训练数据分布只包含了区域的一部分,在其它区域没有概率,这在实践中是正常的现象,

为了缓解上述的问题,

L(f) = sum_{u in U,i in I,r in R} p_U(u,i,r) delta(f(u,i), r) \ = E_{p_T} [frac{1}{|D_T|} sum_{k=1}^{|D_T|} w_k^{(1)} delta(f(u_k,i_k), r_k))] sum_{u in U, i in I} w_{ui}^{(2)} delta(f(u,i), m_{ui}))

其中,

w_k^{(1)} = frac{p_U(u_k,i_k,r_k)}{p_T(u_k,i_k,r_k)} \ w_{ui}^{(2)} = sum_{r in R} p_U(u,i,r) I[p_T(u,i,r) = 0] \ m_{ui} = E_{pu(r|u,i)} [rI[p_T(u,i,r) = 0]] \

我们吸收过去的期望到伪标签中,即:,我们定义我们的经验损失函数如下:

bar{L}_T(f|phi) = frac{1}{|D_T|} sum_{k=1}^{|D_T|} w_k^{(1)} delta(f(u_k,i_k), r_k)) sum_{u in U, i in I} w_{ui}^{(2)} delta(f(u,i), m_{ui}))

04 AutoDebias模型

由于训练数据缺乏关于数据是如何有偏的以及无偏数据是什么样子的重要信号,因此不可能从这些数据中学习适当的减损参数。

此处我们引入uniform数据来监督debias参数学习的方法。统一数据包含一个三胞胎列表, 假设由随机日志策略收集,提供了无偏推荐性能的黄金标准证据。我们充分利用了这一证据并进行了优化,在统一数据上实现更好的性能。具体来说,学习过程可以被描述为元学习过程,包括:

  • Base learner:在训练数据的基础上,利用当前的debias参数对基础推荐模型进行了优化;
theta^*(phi) = argmin_{theta} bar{L}_T (f_{theta | phi})
  • Meta learner: 给出了学习基推荐模型 从超参数训练数据,针对统一数据上更好的推荐性能进行了优化:
phi^* = argmin_{phi} frac{1}{|D_U|} sum_{l=1}^{|D_U|} delta (f_{theta^*(phi)}(u_l,i_l),r_l)

由于统一的数据往往是在小范围内采集的,直接学习系统中的所有参数否则会导致过拟合。为了解决这个问题,可以用简洁的元模型重新参数化。这种处理方法可以减少参数的数量。此处,我们只需选择一个线性模型来实现:

w_k^{(1)} = exp(varphi_1^T[x_{uk} odot x_{ik} odot e_{rk}]) \ w_k^{(2)} = exp(varphi_2^T[x_{u} odot x_{i} odot e_{O_{ui}}]) \ m_{ui} = exp(varphi_3^T[e_{r_{ui}} odot e_{O_{ui}}] ) \

对应的AutDebias的流程如下:

05 实验

  • 从上面的实验中,我们发现AutoDebias的效果远超其它的方法。

06 小结

本文提出了一个通用的debiasing框架,它不仅可以很好地解释多个偏差及其组合,而且还免去了人类识别偏差和调整参数配置等的的工作。在数据集上的试验,也验证了该框架的有效性。

更多细节可以阅读:AutoDebias Learning to Debias for Recommendation

0 人点赞