前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WWW'22「华为」CPR Loss:交叉成对排序损失对推荐系统纠偏

WWW'22「华为」CPR Loss:交叉成对排序损失对推荐系统纠偏

作者头像
秋枫学习笔记
发布2022-09-19 10:40:41
3900
发布2022-09-19 10:40:41
举报
文章被收录于专栏:秋枫学习笔记

关注我们,一起学习~

title:Cross Pairwise Ranking for Unbiased Item Recommendation link:http://staff.ustc.edu.cn/~hexn/papers/www22-cpr.pdf code:https://github.com/Qcactus/CPR from:WWW 2022

1. 导读

通常推荐系统在观察到的交互数据上优化模型,这受之前的曝光机制的影响,会存在许多偏差,如流行度偏差。本文提出了一种新的学习范式,称为交叉成对排名(CPR),在不知道曝光机制的情况下实现无偏见的推荐。对多个观察到的交互进行一次采样,并将它们的预测的组合来构成损失。

作者在文中考虑的是用户活跃度和商品的流行度对模型训练带来的偏差,本文所提方法主要就是依据一个假设:曝光概率可以分解为用户倾向(pu)、商品倾向(pi)和用户-项目相关性(P(R))(用户是否喜欢这个商品)。

P\left(O_{u, i}=1 \mid R_{u, i}=1\right)=p_{u} \cdot p_{i} \cdot P\left(R_{u, i}=1\right)^{\alpha}

文中第二节对常用损失和偏差进行了分析,CPR损失主要是通过交叉成对交互的方式从总体上消除用户活跃度和商品流行度对损失函数的影响,笔者重点介绍损失函数以及对应的采样方法,无偏性的证明主要就是证明可以去掉用户和商品相关的p,详细可见文章第三节,

2. 方法

2.1 CPR Loss

通过选择两个正样本对(用户-商品对)

(u_1,i_1)

(u_2,i_2)

来构建训练样本,

u_1 \neq u_2

,则

(u_1,i_2)

,

(u_2,i_1)

为负样本对。从而可以构建如下损失函数,其中

\mathcal{D}_{2}=\left\{\left(u_{1}, u_{2}, i_{1}, i_{2}\right) \mid Y_{u_{1}, i_{1}}=1, Y_{u_{2}, i_{2}}=1, Y_{u_{1}, i_{2}}=0, Y_{u_{2}, i_{1}}=0 \right\}

表示训练数据。

\mathcal{L}_{C P R}=-\sum_{\left(u_{1}, u_{2}, i_{1}, i_{2}\right) \in \mathcal{D}_{2}} \ln \sigma\left[\frac{1}{2}\left(\hat{s}_{u_{1}, i_{1}}+\hat{s}_{u_{2}, i_{2}}-\hat{s}_{u_{1}, i_{2}}-\hat{s}_{u_{2}, i_{1}}\right)\right]

2.2 多交互

上面提出的 CPR 损失只使用两个观察到的交互作为训练样本。可以将其扩展到 𝑘 (𝑘 ≥ 2) 交互,同时保持其无偏性,公式如下,

\begin{aligned} \mathcal{L}_{C P R} &=-\sum_{k} \sum_{\left(u_{1}, \ldots, u_{k}, i_{1}, \ldots, i_{k}\right) \in \mathcal{D}_{k}} \\ & \ln \sigma\left[\frac{1}{k} \cdot\left(\hat{s}_{u_{1}, i_{1}}+\cdots+\hat{s}_{u_{k}, i_{k}}-\hat{s}_{u_{1}, i_{2}}-\cdots-\hat{s}_{u_{k}, i_{1}}\right)\right] \end{aligned}

如下图所示为正样本对和负样本对的交互形式,

在实验中,CPR 在 𝑘 = 2, 3 时达到最佳性能,而当 k 取大于 3 的更多值时,性能无法提高。一个可能的原因是,更大的 𝑘 使训练变得不灵活——即使一些样本对已经过拟合了,但还是要一起参与训练。加上正则化得到总体损失函数如下,

\mathcal{L} = \mathcal{L}_{CPR}+\lambda (||\Theta||^2)

2.3 动态采样

如何构建样本集

D_k

在 CPR 中起着至关重要的作用。直接的方法是随机抽样:首先抽取 𝑘 个不重叠的正样本对,然后如果它们的交叉组合都是负对,则将它们作为一个样本接受,否则丢弃它们并重新抽取。这样,所有样本都以相同的概率被选中。但是考虑难样本对训练更有帮助,而易样本对模型优化贡献小,因此本文提出了CPR的动态采样策略。

该采样策略的目的就是使难样本有更高概率被采样到。算法 1 详细说明了如何动态选择一批样本。令 𝑏、𝛽 (𝛽 ≥ 1) 和 𝛾 (𝛾 > 1) 分别表示批量大小、动态采样率和选择率。

  • 首先,随机选择 𝑏𝛽𝛾 个样本,每个样本都包含 𝑘 个观察数据中的交互行为(第 2 行)。选择率 𝛾 是增加初始样本的数量,以确保在接下来的步骤中丢弃不合适的样本后,仍然可以收集到所需数量的样本。
  • 接下来,丢弃交叉组合不是负样本对的样本,并获得𝑏𝛽个有用样本(第3-6行)。
\frac{1}{k} \cdot\left(\hat{s}_{u_{1}, i_{1}}+\cdots+\hat{s}_{u_{k}, i_{k}}-\hat{s}_{u_{1}, i_{2}}-\cdots-\hat{s}_{u_{k}, i_{1}}\right)

衡量样本难度,值越小说明越困难(训练的不好,即训练起来越困难)。

image.png

3. 结果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.1 CPR Loss
  • 2.2 多交互
  • 2.3 动态采样
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档