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=1∣Ru,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,j⇔su,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)∈D∑Yu,ilnσ(s^u,i)+(1−Yu,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,i≥Cs^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=1∣Ru,i=1)≥Csu,i+lnP(Ou,i=1∣Ru,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)∈DS∑lnσ(s^u,i−s^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,i−s^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)∈D2∑lnσ[21(s^u1,i1+s^u2,i2−s^u1,i2−s^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=1∣Ru,i=1)=pu⋅pi⋅P(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,i≥1+α1(C−lnpu−lnpi)su,i<1+α1(C−lnpu−lnpi) 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,i−su,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,i1≥1+α1(C−lnpu1−lnpi1),su2,i2≥1+α1(C−lnpu2−lnpi2)su1,i2<1+α1(C−lnpu1−lnpi2),su2,i1<1+α1(C−lnpu2−lnpi1)
注意到下半段的思想我认为其实可以追溯到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,i2−su1,i2−su2,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)∈Dk∑lnσ[k1⋅(s^u1,i1+⋯+s^uk,ik−s^u1,i2−⋯−s^uk,i1)]
2.4.与DNS的结合
3.实验
4.问题与思考
- 公式推导还是有比较疑惑的地方,但是目前认为这可能不是关键,我们需要先确定一个可用的方法,再去想他的理论解释,那么这篇文章对现阶段的我们来说有什么启发吗?交叉loss可能是有效的,另外,从别人的正样本中找自己负样本有益于收敛。
- 我们或许需要再次重视经典论文,找到一些inspiring的观点。现在的文章和以前的文章差别挺大的,现在都是发现一个提升点,穷尽方法、大量篇幅证明他的正确性,我们只能接受到一个信息。但是以前的经典文章中却有好多个有启发意义的点,而且还不是人家的工作重心。
- 理论推导部分常人难以效仿。
- 如果两个相似用户,U1和U2,U2交互过I1,但是U1没有交互过,那么I1应该作为一个困难负样本还是一个潜在正样本?应该是正样本,更符合CF的思想。这篇文章应该是随机选择两个User做Cross Loss,是否会存在相似用户的Item被自己当作负样本的可能性?