#论文题目:Cross Pairwise Ranking for Unbiased Item Recommendation(CPR Loss:交叉成对排序损失对推荐系统纠偏)
#论文地址:http://staff.ustc.edu.cn/~hexn/papers/www22-cpr.pdf
#论文源码开源地址:https://github.com/Qcactus/CPR
#论文所属会议:WWW '22
#论文作者单位:中国科学技术大学 & 华为
一、现阶段推荐系统的主要矛盾
现阶段推荐系统主要是根据user-item的交互组成训练集节点对来进行模型的训练。这一模型受到先前暴露机制的影响,存在许多偏差,如流行度偏差。损失函数,如最常用的点态二元交叉熵和贝叶斯个性化排序,并没有考虑到观测数据中的偏差(他们只是选取了一些正样本,并将其作为训练集带入模型中进行训练,而忽视了选取正样本的公平性)。因此,基于损失优化的模型会继承数据偏差,甚至放大数据偏差。
这就意味着,曝光率大的user/item会有更大概率被观测到进而被添加到训练集中。这种选用节点对作为训练集的方法是有偏差的方法(有偏的)。例如,一些热门项目占据了越来越多的曝光机会,严重损害了小众项目的推荐质量。而难样本——小众的、曝光率低的样本往往很少能被训练集捕捉到。
二、创新点
本文提出了一种新的学习范式(Loss 损失函数),称为交叉成对排名(CPR),在不知道曝光机制的情况下实现无偏见的推荐。对多个观察到的交互进行采样计算,并将它们的预测的组合来构成训练集放到模型中进行训练。
换句话说:
- CPR的训练集的选择不受曝光机制的影响,可以客观的将难样本对和简单样本对以同样概率被选到。
- CPR是一种损失函数,此损失函数中的训练集是通过某种方式得到的。
- CPR可以替换任何方法中的损失函数,相当于换了一个内核。
三、导读
在介绍CPR方法之前,3.1和3.2解释了其他方法选择的训练集为什么是有偏的,4.2介绍了为什么本文CPR方法是无偏的。感兴趣的同学可以阅读,但是不看这三部分对方法整体理解上也无困难。
我们知道在推荐系统中定义三种类型的变量:
Yu,i (交互变量) | Ru,i (相关性变量) | Ou,i (观测变量) | |
---|---|---|---|
=1 | 用户u和商品i之间有交互 | 用户u喜欢商品i | 用户u看到了商品i |
=0 | 无交互 | 不喜欢 | 没看到 |
于是我们定义用户喜欢并且观察到该商品的时候,就会发生交互,也就是Yu,i = Ru,i × Ou,i,即:
P(Ru,i = 1)表示用户u与商品i之间的关联概率。P(Ou,i = 1 | Ru,i = 1) 是暴露概率,即项目i被用户u观察到的概率:在真实世界中,P(Ou,i = 1 | Ru,i = 1)表示受欢迎的(曝光率大)物品通常高于那些小众商品,进而增加了P(Yu,i = 1)的概率,进而使得推荐结果向着上述商品靠近。
在之前的研究中,su,i表示真正的预测相关性得分,可以用 l n ln lnP(Ru,i = 1)表示。我们用s^u,i表示预测的相关性得分,这通常是通过将用户和物品嵌入到一个交互函数(如内积或神经网络)中获得的。(划重点)
于是我们可以用训练出来的数值(s^u,i)来表示真实世界中的u和i的交互(su,i)。
3.1 点态损失的偏倚性(BCE):(拓展阅读:说明为什么BCE是有偏的)
作者证明了采用 逐点损失 这种方法是有偏差的
BCE概念:通过最小化预测差异来捕捉用户对单一商品的偏好。
式(2)中的点态损失对正样本和负样本的相关性得分进行二值分类,可以用以下不等式表示(C表示分类阈值的常数):
为了使观察到的Yu,i可能性最大化,我们定义P(Yu,i = 1):
进而将上式重写为:
我们可以看到对于受欢迎的商品来说,s^u,i值通常更高,因为它们的曝光概率往往更高。因此,逐点损失是有偏倚的,用逐点损失优化的模型更倾向于受欢迎的项目。
3.2 成对损失的偏倚性(BPR):(拓展阅读:说明为什么BPR是有偏的)
作者证明了采用 逐点损失 这种方法是有偏差的
BPR概念:鼓励积极的项目比消极的项目的预测更高。
式(3)中的两两损失使得每个用户的正对得分高于负对得分,可以用以下不等式表示:
结合式(5),我们能得到:
通过这两个不等式之间的减法,我们可以把这个排名写成成对的形式:
同理我们可以看到,s^u,i值通常更高,因为它们的曝光概率往往更高。因此,成对损失也是有偏倚的。
3.3 作者思想
作者在文中考虑的是用户活跃度和商品的流行度对模型训练带来的偏差,并提出一个设想:曝光概率可以分解为用户倾向(pu)、商品倾向(pi)和用户-项目相关性(P( R))(用户是否喜欢这个商品)。
pu表示特定用户的倾向,pi表示特定商品的倾向,P(Ru,i)a表示用户u和商品i相关性越高,所暴露的概率就越大。
但是pu和pi受到曝光率的影响,所以作者下述方法消减掉两变量,用真正的标准节点对表示loss损失函数。
四、CPR损失 & 证明为什么是无偏的
4.1 CPR损失
通过选择两个正样本对(用户-商品对)(u1, i1),(u2, i2)来构建训练样本,u1≠u2,则(u1, i2),(u2, i1)为负样本对。从而可以构建如下损失函数:
推广扩展到k个样本对,
4.2 证明无偏性 (推展阅读:为什么说CPR是无偏的)
以上面2个正样本对为例,CPR损失鼓励两对正样本对的总和高于两对负样本对的总和,这两对正对的总和由两对正对的交叉构成,即:
为了证明上述式子是无偏性的,结合式(10)、(5)我们可以得出:
两式相减,我们可以得到:
在上述假设中,我们可以得到两个正样本对和两个负样本对的不等式为:
将其相加/相减可以得到:
pu和pi都被消减下去了,证毕。
4.3 多交互
如下图所示为正样本对和负样本对的交互形式:
在实验中,CPR 在 𝑘 = 2, 3 时达到最佳性能,而当 k 取大于 3 的更多值时,性能无法提高。一个可能的原因是,更大的 𝑘 使训练变得不灵活——即使一些样本对已经过拟合了,但还是要一起参与训练。加上正则化得到总体损失函数如下,
五、动态采样
如何构建样本集Dk在 CPR 中起着至关重要的作用。直接的方法是随机抽样:首先抽取 𝑘 个不重叠的正样本对,然后如果它们的交叉组合都是负对,则将它们作为一个样本接受,否则丢弃它们并重新抽取。这样,所有样本都以相同的概率被选中。但是考虑难样本对训练更有帮助,而易样本对模型优化贡献小,因此本文提出了CPR的动态采样策略。
受DNS方法的影响(是一种用于BPR的动态负采样策略),该采样策略的目的就是使难样本有更高概率被采样到。算法 1 详细说明了如何动态选择一批样本。令 𝑏、𝛽 (𝛽 ≥ 1) 和 𝛾 (𝛾 > 1) 分别表示批量大小、动态采样率和选择率。
- 首先,随机选择 𝑏𝛽𝛾 个样本,每个样本都包含 𝑘 个观察数据中的交互行为(第 2 行)。选择率 𝛾 是增加初始样本的数量,以确保在接下来的步骤中丢弃不合适的样本后,仍然可以收集到所需数量的样本。
- 接下来,丢弃交叉组合不是负样本对的样本,并获得𝑏𝛽个有用样本(第3-6行)。
- 用Oj衡量样本难度,值越小说明越困难(训练的不好,即训练起来越困难)。
- 最后将Oj的值升序排列,取前b个作为训练集样本。
六、结果
七、附录
7.1 正负样本、难样本
- 正样本:与真实样本标签一致的样本
- (反)负样本:与真实样本标签不一致的样本
(实际上往往正样本数远远小于负样本数)
- 困难样本:预测值与实际标签误差较大的样本
- 简单样本:预测值与实际标签误差较小的样本
7.2 解释机器学习中的召回率、精确率、准确率
提升精确率是为了不错报、提升召回率是为了不漏报