Unbiased Learning to Rank with Biased Continuous Feedback
概
如何把 IPS 推广到连续的情形.
符号说明
- \(u\), user;
- \(x_i\), item \(x_i\) 在第 \(i\) 个位置被推荐给 \(u\);
- \(r_i \in \{0, 1\}\), \(x_i, u\) 存在紧密联系, 若 \(r_i=1\);
- \(c_i \in \{0, 1\}\), \(u\) 点击 \(x_i\);
- \(e_i \in \{0, 1\}\), \(x_i\) 是否被 \(u\) 看到;
- \(\theta_i = P(e_i=1|i)\);
- \(\theta_i^- = P(e_i=1|i, c_i=0\);
- \(\epsilon_{ij}^+ = P(c_i > c_j|e_i=1, e_j=1, r_i > r_j, i, j)\);
- \(\epsilon_{ij}^- = P(c_i > c_j|e_i=1, e_j=1, r_i \le r_j, i, j)\);
- \(\gamma_{u, x_i, x_j} = P(r_i > r_|u, x_i, x_j)\);
- \(\beta_{u, x_i} = P(r_i > 0|u, x_i)\).
Motivation
-
在推荐系统中, 存在严重的 position bias, 即 \(c_i=1\) 可能是仅仅是因为 \(x_i\) 被推荐的位置 \(i\) 比较靠前, 并非代表用户对它的兴趣很高 (\(r_i=1\)).
-
为了描述这种结构, 我们可以假设
\[\tag{1} \begin{array}{ll} P(c_i=1|u, x_i, i) &=P(r_i=1|u, x_i, i) P(e_i=1|u, x, i) \\ &=P(r_i=1|u, x_i) P(e_i=1|i), \\ \end{array} \]即一个样本 \(x_i\) 得到正反馈的概率取决于:
1. 用户对它是否感兴趣 \(r_i=1\);
2. 它是否被看到了 \(e_i=1\).这里最后一个等式成立, 是因为我们假设兴趣和 \(x_i\) 的位置无关, \(e_i\) 仅和它的位置有关, 直观上来说还是容易理解的.
-
我们自然是希望能够直接优化一个理想的目标:
\[R_{rel}(f) = \mathbb{E}_{P(r_i=1, u, x_i)} L(f(u, x_i), r_i), \]但是, 我们往往只能优化
\[\mathbb{E}_{P(c_i=1, u, x_i)} L(f(u, x_i), c_i), \]既然 \(r_i\) 通常是难以直接观测和度量的.
-
幸而, 在 \(c_i = \{0, 1\}\) 这种二元的情况, 我们可以通过如下方式得到一个无偏估计:
\[\begin{array}{ll} R_{unbiased}(f) &= \mathbb{E}_{P(c_i=1, u_i, x_i, i)} [\frac{L(f(u, x_i), c_i)}{P(e_i=1|i)}] \\ &= \mathbb{E}_{P(c_i=1, u_i, x_i, i)/ P(e_i=1|i)} [L(f(u, x_i)] \\ &= \mathbb{E}_{P(r_i=1, u_i, x_i)} [L(f(u, x_i)] \\ &= R_{rel}. \end{array} \] -
那么倘若 \(c_i\) 是一个连续的变量呢 ? 怎么将上面的方法推广到连续标签问题呢 ?
连续的推广
-
假设 \(c_i\) 是一个连续的 score, 越大表示越好的一个正反馈, 同样定义 \(r_i\).
-
但是这么定义, 直接套用模型 (1) 是不合适的, 作者奇妙地将它限定为一个 pairwise 地问题:
\[\begin{array}{ll} P(c_i > c_j|u, x_i, x_j, i, j) &=P(r_i > r_j|u, x_i, x_j, i, j) P(e_i=1|u, x, i)P(e_j=1|u, x, j) \\ \\ &=P(r_i=1|u, x_i, x_j) P(e_i=1|i) P(e_j=1|j). \\ \end{array} \]即考察用户喜欢 \(x_i\) 胜过 \(x_j\) 的概率.
-
理想中, 我们希望优化:
\[R_{rel}(f) = \mathbb{E}_{P(r_i > r_j, u, x_i, x_j)}[L(\hat{y}_i, r_i, \hat{y}_j, r_j)], \]这里 \(\hat{y} = f(u, x)\) 代表预测的 score.
-
相应地, 我们可以用如下方式估计:
\[\begin{array}{ll} R_{unbiased}(f) &= \mathbb{E}_{P(c_i> c_j, u_i, x_i, x_j, i, j)} [\frac{L(\hat{y}_i, c_i, \hat{y}_j, c_j)}{\theta_i \theta_j}] \\ &= \mathbb{E}_{P(c_i> c_j, u_i, x_i, x_j, i, j) / (\theta_i \theta_j)} [L(\hat{y}_i, c_i, \hat{y}_j, c_j)] \\ &= \mathbb{E}_{P(r_i > r_j, u, x_i, x_j)} [L(\hat{y}_i, c_i, \hat{y}_j, c_j)] \\ &= R_{rel}. \end{array} \]
注: 作者还讨论了 trust bias 的处理方法, 这里就不记录了.
代码
[official]