WWW2022|CPR:交叉损失消除推荐系统的Bais

WWW2022|CPR:交叉损失消除推荐系统的Bais

文章信息

Title: Cross Pairwise Ranking for Unbiased Item Recommendation

Link: http://staff.ustc.edu.cn/~hexn/papers/www22-cpr.pdf

from: WWW 2022

1.核心思想

根据他们的公式推导,发现现在的bpr优化方法,由于数据有bias(系统之前的推荐有偏好,导致产生的数据有偏差),导致bpr实际上优化的目标,在公式推导的证明上,也有偏差了。所以他们提出交叉bpr,抵消这种偏差。这么说可能不是很直观,举例来说,下面是我们希望的优化目标:

但是由于数据bias,导致实际我们在优化:

(这两个公式都是摘自文章的推导)

2.理论推导

2.1.用户购买的概率

作者认为,用户和item之间有交互,需要满足item被展示到给user,并且user喜欢item,写成概率的形式如下:
P ( Y u , i = 1 ) = P ( R u , i = 1 , O u , i = 1 ) = P ( R u , i = 1 ) P ( O u , i = 1 ∣ R u , i = 1 ) \begin{aligned} P\left(Y_{u, i}=1\right) &=P\left(R_{u, i}=1, O_{u, i}=1\right) \\ &=P\left(R_{u, i}=1\right) P\left(O_{u, i}=1 \mid R_{u, i}=1\right) \end{aligned} P(Yu,i=1)=P(Ru,i=1,Ou,i=1)=P(Ru,i=1)P(Ou,i=1Ru,i=1)
Y u i = 1 Y_{ui}=1 Yui=1代表用户u和项目i有发生交互, R u i = 1 R_{ui}=1 Rui=1代表用户u对项目i有偏好(喜欢), O u i = 1 O_{ui}=1 Oui=1代表项目i被展示过给用户u。而且作者认为,现在数据集里, R u i R_{ui} Rui O u i O_{ui} Oui是不独立的,因为现在的推荐系统会展示给用户他们喜欢的商品。

值得关注的是,他们让 s u i = l n P ( R u i = 1 ) s_{ui}=lnP(R_{ui}=1) sui=lnP(Rui=1)作为u和i之间的偏好分数,但是概率值是一个0-1之间的数,那么s就会是一个小于零的数。这个还是比较疑惑的。

2.2.Bias的证明

首先作者提出,理想的loss的实际优化目标和预期的优化目标是一致的:
s ^ u , i > s ^ u , j ⇔ s u , i > s u , j  when  L  converges.  \hat{s}_{u, i}>\hat{s}_{u, j} \Leftrightarrow s_{u, i}>s_{u, j} \text { when } \mathcal{L} \text { converges. } s^u,i>s^u,jsu,i>su,j when L converges. 
这句话看着是废话,而且我们的bpr loss就是这种形式的。但是其实作者想要说的是,我们之前使用的loss(无论是point wise 或者 pair wise)实际上和理想的优化目标是有偏差的。偏差就来自之前说的 R u i R_{ui} Rui O u i O_{ui} Oui不独立。

2.2.1.point wise loss

L B C E = − ∑ ( u , i ) ∈ D Y u , i ln ⁡ σ ( s ^ u , i ) + ( 1 − Y u , i ) ln ⁡ ( 1 − σ ( s ^ u , i ) ) \mathcal{L}_{B C E}=-\sum_{(u, i) \in \mathcal{D}} Y_{u, i} \ln \sigma\left(\hat{s}_{u, i}\right)+\left(1-Y_{u, i}\right) \ln \left(1-\sigma\left(\hat{s}_{u, i}\right)\right) LBCE=(u,i)DYu,ilnσ(s^u,i)+(1Yu,i)ln(1σ(s^u,i))

根据分类任务的原理,我们可以得到Point wise loss实际的优化目标:
{ s ^ u , i ≥ C  if  Y u , i = 1 s ^ u , i < C  if  Y u , i = 0 \left\{\begin{array}{ll} \hat{s}_{u, i} \geq C & \text { if } Y_{u, i}=1\\ \hat{s}_{u, i} < C & \text { if } Y_{u, i}=0 \end{array}\right. {s^u,iCs^u,i<C if Yu,i=1 if Yu,i=0
根据我们的模型,进行极大似然,我们实际在优化:
{ ln ⁡ P ( Y u , i = 1 ) ≥ C  if  Y u , i = 1 ln ⁡ P ( Y u , i = 1 ) < C  if  Y u , i = 0 \left\{\begin{array}{ll} \ln P\left(Y_{u, i}=1\right) \geq C & \text { if } Y_{u, i}=1 \\ \ln P\left(Y_{u, i}=1\right) < C & \text { if } Y_{u, i}=0 \end{array}\right. {lnP(Yu,i=1)ClnP(Yu,i=1)<C if Yu,i=1 if Yu,i=0
其实还是有疑惑的地方:根据上面两个公式的变形,我们可以推测出,作者让 s ^ u i = l n P ( Y u i = 1 ) \hat s_{ui}=lnP(Y_{ui}=1) s^ui=lnP(Yui=1),但是这个等式是怎么推出来的呢?

接着,根据上面的概率假设,我们对上面的公式变形:
{ s u , i + ln ⁡ P ( O u , i = 1 ∣ R u , i = 1 ) ≥ C  if  Y u , i = 1 s u , i + ln ⁡ P ( O u , i = 1 ∣ R u , i = 1 ) < C  if  Y u , i = 0 \left\{\begin{array}{ll} s_{u, i}+\ln P\left(O_{u, i}=1 \mid R_{u, i}=1\right) \geq C & \text { if } Y_{u, i}=1 \\ s_{u, i}+\ln P\left(O_{u, i}=1 \mid R_{u, i}=1\right) < C & \text { if } Y_{u, i}=0 \end{array}\right. {su,i+lnP(Ou,i=1Ru,i=1)Csu,i+lnP(Ou,i=1Ru,i=1)<C if Yu,i=1 if Yu,i=0
这明显和理想的优化目标有偏差,偏差就来自于以前推荐算法造成的bias。

2.2.2.pair wise loss

L B P R = − ∑ ( u , i , j ) ∈ D S ln ⁡ σ ( s ^ u , i − s ^ u , j ) \mathcal{L}_{B P R}=-\sum_{(u, i, j) \in \mathcal{D}_{S}} \ln \sigma\left(\hat{s}_{u, i}-\hat{s}_{u, j}\right) LBPR=(u,i,j)DSlnσ(s^u,is^u,j)

理想的优化目标:
s ^ u , i − s ^ u , j > 0 ,  if  Y u , i = 1 , Y u , j = 0 \hat{s}_{u, i}-\hat{s}_{u, j} > 0, \text { if } Y_{u, i}=1, Y_{u, j}=0 s^u,is^u,j>0, if Yu,i=1,Yu,j=0
仿照上面的推导,我们可以得到实际上的优化目标:
$$
\begin{array}{c}
s_{u, i}+\ln P\left(O_{u, i}=1 \mid R_{u, i}=1\right)-\left[s_{u, j}+\ln P\left(O_{u, j}=1 \mid R_{u, j}=1\right)\right]

0, \text { if } Y_{u, i}=1, Y_{u, j}=0
\end{array}
$$

2.3.如何消除偏差?

2.3.1.CPR Loss

L C P R = − ∑ ( u 1 , u 2 , i 1 , i 2 ) ∈ D 2 ln ⁡ σ [ 1 2 ( s ^ u 1 , i 1 + s ^ u 2 , i 2 − s ^ u 1 , i 2 − s ^ u 2 , i 1 ) ] \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] LCPR=(u1,u2,i1,i2)D2lnσ[21(s^u1,i1+s^u2,i2s^u1,i2s^u2,i1)]

2.3.2.为什么是CPR?

作者做出假设:
P ( O u , i = 1 ∣ R u , i = 1 ) = p u ⋅ p i ⋅ P ( R u , i = 1 ) α 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} P(Ou,i=1Ru,i=1)=pupiP(Ru,i=1)α
原文中说 p u , p i p_u,p_i pu,pi是user和item的偏好(propensity),看公式应该是一个概率值,但是如何得到呢?还是说是两个向量,进行内积操作?但是看后面的计算,确实是一个标量,感觉很奇怪。后面的 P ( R u , i = 1 ) α P\left(R_{u, i}=1\right)^{\alpha} P(Ru,i=1)α代表了,user越喜欢这个item,那就越有可能被展示到。

根据这个假设,我们可以把之前的point wise loss实际优化目标变形:
{ s u , i ≥ 1 1 + α ( C − ln ⁡ p u − ln ⁡ p i )  if  Y u , i = 1 , s u , i < 1 1 + α ( C − ln ⁡ p u − ln ⁡ p i )  if  Y u , i = 0. \left\{\begin{array}{ll} s_{u, i} \geq \frac{1}{1+\alpha}\left(C-\ln p_{u}-\ln p_{i}\right) & \text { if } Y_{u, i}=1, \\ s_{u, i}<\frac{1}{1+\alpha}\left(C-\ln p_{u}-\ln p_{i}\right) & \text { if } Y_{u, i}=0 . \end{array}\right. {su,i1+α1(Clnpulnpi)su,i<1+α1(Clnpulnpi) if Yu,i=1, if Yu,i=0.
同样bpr的实际优化目标也可以写成:
s u , i − s u , j > 1 1 + α ( − ln ⁡ p i + ln ⁡ p j ) ,  if  Y u , i = 1 , Y u , j = 0 s_{u, i}-s_{u, j}>\frac{1}{1+\alpha}\left(-\ln p_{i}+\ln p_{j}\right), \text { if } Y_{u, i}=1, Y_{u, j}=0 su,isu,j>1+α1(lnpi+lnpj), if Yu,i=1,Yu,j=0
此外,我们可以得到:
s u 1 , i 1 ≥ 1 1 + α ( C − ln ⁡ p u 1 − ln ⁡ p i 1 ) , s u 2 , i 2 ≥ 1 1 + α ( C − ln ⁡ p u 2 − ln ⁡ p i 2 ) s u 1 , i 2 < 1 1 + α ( C − ln ⁡ p u 1 − ln ⁡ p i 2 ) , s u 2 , i 1 < 1 1 + α ( C − ln ⁡ p u 2 − ln ⁡ p i 1 ) s_{u_1, i_1} \geq \frac{1}{1+\alpha}\left(C-\ln p_{u_1}-\ln p_{i_1}\right),s_{u_2, i_2} \geq \frac{1}{1+\alpha}\left(C-\ln p_{u_2}-\ln p_{i_2}\right) \\ s_{u_1, i_2} < \frac{1}{1+\alpha}\left(C-\ln p_{u_1}-\ln p_{i_2}\right),s_{u_2, i_1} < \frac{1}{1+\alpha}\left(C-\ln p_{u_2}-\ln p_{i_1}\right) su1,i11+α1(Clnpu1lnpi1)su2,i21+α1(Clnpu2lnpi2)su1,i2<1+α1(Clnpu1lnpi2)su2,i1<1+α1(Clnpu2lnpi1)
注意到下半段的思想我认为其实可以追溯到14年的一篇文章(Improving Pairwise Learning for Item Recommendation from Implicit Feedback)。我们根据这四个不等式,可以写出下面的不等式:
s u 1 , i 1 + s u 2 , i 2 − s u 1 , i 2 − s u 2 , i 1 > 0 ,  if  Y u 1 , i 1 = 1 , Y u 2 , i 2 = 1 , Y u 1 , i 2 = 0 , Y u 2 , i 1 = 0 s_{u_1, i_1}+s_{u_2, i_2}-s_{u_1, i_2}-s_{u_2, i_1}>0,\text { if } Y_{u_1, i_1}=1, Y_{u_2, i_2}=1,Y_{u_1, i_2}=0, Y_{u_2, i_1}=0 su1,i1+su2,i2su1,i2su2,i1>0, if Yu1,i1=1,Yu2,i2=1,Yu1,i2=0,Yu2,i1=0
我们会发现,这时候,我们导出的优化目标没有之前的bias了。

2.3.3.拓展性

可以把这种交叉loss扩展到不止两个user对。
L C P R = − ∑ k ∑ ( u 1 , … , u k , i 1 , … , i k ) ∈ D k ln ⁡ σ [ 1 k ⋅ ( s ^ u 1 , i 1 + ⋯ + s ^ u k , i k − s ^ u 1 , i 2 − ⋯ − s ^ u k , i 1 ) ] \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} LCPR=k(u1,,uk,i1,,ik)Dklnσ[k1(s^u1,i1++s^uk,iks^u1,i2s^uk,i1)]

2.4.与DNS的结合

3.实验

4.问题与思考

  1. 公式推导还是有比较疑惑的地方,但是目前认为这可能不是关键,我们需要先确定一个可用的方法,再去想他的理论解释,那么这篇文章对现阶段的我们来说有什么启发吗?交叉loss可能是有效的,另外,从别人的正样本中找自己负样本有益于收敛。
  2. 我们或许需要再次重视经典论文,找到一些inspiring的观点。现在的文章和以前的文章差别挺大的,现在都是发现一个提升点,穷尽方法、大量篇幅证明他的正确性,我们只能接受到一个信息。但是以前的经典文章中却有好多个有启发意义的点,而且还不是人家的工作重心。
  3. 理论推导部分常人难以效仿。
  4. 如果两个相似用户,U1和U2,U2交互过I1,但是U1没有交互过,那么I1应该作为一个困难负样本还是一个潜在正样本?应该是正样本,更符合CF的思想。这篇文章应该是随机选择两个User做Cross Loss,是否会存在相似用户的Item被自己当作负样本的可能性?

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值