Personalized Ranking with Importance Sampling

Lian D., Liu Q. and Chen E. Personalized ranking with importance sampling. In International World Wide Web Conference (WWW), 2020.

作者总结了 4 种基于 importance sampling 的负样本采样方法.

符号说明

  • \(\mathcal{U}\), users;
  • \(\mathcal{I} = \{o_1, \cdots, o_N\}\), items;
  • \(\mathcal{S} = \{(u, i) \in \mathcal{U} \times \mathcal{I}a| \text{user u interacts with item i}\}\);
  • \(\mathcal{I}_u\), positive items for user \(u\);
  • \(\mathcal{U}_i\), users who interact with the item \(i\);

Motivation

  • BPR 损失:

    \[\mathcal{L} = -\sum_{(u, i) \in \mathcal{S}} \sum_{j \not \in \mathcal{I}_u} \ln \sigma(\hat{x}_{uij}) + \lambda \|\Theta\|^2, \]

    实际上优化的是 AUC, 它对所有的负样本一视同仁, 可能对于 ranking 的任务不是那么友好.

  • 所以作者就提出了一个新的损失:

    \[\mathcal{L} = -\sum_{(u, i) \in \mathcal{S}} \sum_{j \not \in \mathcal{I}_u} P(j|u, i)\cdot \ln \sigma(\hat{x}_{uij}) + \lambda \|\Theta\|^2, \]

    其中

    \[P(j|u, i) = \frac{\exp(-\hat{x}_{uij})}{\sum_{j' \in \mathcal{I} \setminus \mathcal{I}_u} \exp (-\hat{x}_{uij'})}. \]

    即, 我们对那些赋予 high score 的负样本赋予更多的权重 (个人认为这个 motivation 不是那么强啦).

  • 直接计算 \(\mathcal{L}\) 需要遍历所有的 unobserved items, 所需的计算量比较大, 但是我们注意到实际上:

    \[\sum_{j \not \in \mathcal{I}_u} P(j|u, i)\cdot \ln \sigma(\hat{x}_{uij}) = \mathbb{E}_{j \in P(j|u, i)} \ln \sigma(\hat{x}_{uij}), \]

    对于这类我们可以借助 importance sampling 来估计.

  • 即引入一个容易采用的分布 (proposal distribution) \(Q(j|u,i)\), 然后利用下式替代:

    \[\mathcal{L}(u, i) \approx \frac{1}{L} \sum_{l=1}^L \frac{P(j_l|u, l)}{Q(j_l|u, i)} \ln \sigma(\hat{x}_{uij_l}), \: j_l \sim Q(j_l|u, i). \]

  • 然后, 作者还认为 \(P(j|u, i)\) 本身也是难以直接计算的 (对于一些 items 的实际场景, 不过我暂时还没遇到过), 但是因为 \(P(j|u, i) = \exp(-\hat{x}_{uij}) / Z_P\), 配平常数可以用

    \[Z_P \approx Z_Q \frac{1}{L} \sum_{l=1}^L \exp(-\hat{x}_{uij_l} - \ln \tilde{Q}(j_l|u, i)) \]

    来估计 (这个和 here 的做法很相似, 这里不展开了), 其中 \(\tilde{Q}\)\(Q\) 的 unnormalized 分布, \(Z_Q\) 是它的配平系数. 最后令

    \[w_l = \frac{\exp(-\hat{x}_{uij_l} - \ln \tilde{Q}(j_l | u, i))}{\sum_k \exp(-\hat{x}_{uij_k} - \ln \tilde{Q}(j_k | u, i))}, \]

    即可得一个容易求解的近似

    \[\mathcal{L} \approx \sum_{(u, i) \in \mathcal{S}} \sum_{l=1}^L w_l \ln \sigma(\hat{x}_{uij_l}) + \lambda \|\Theta\|^2, \: j_l \sim Q(j|u, i). \]

Negative Samplers

接下来的问题就是如何如何选择 \(Q\) 以及如何从中采样了.
一般来说, \(Q\)\(P\) 越接近, 近似程度越好, 当然一般采样起来也会复杂一些.

Uniform Sampling

  • 此类情况下, 令

    \[Q^U (j|u, i) = \left \{ \begin{array}{ll} 0, & \text{if } j \in \mathcal{I}_u \\ \frac{1}{N - N_u}, & \text{otherwise}. \end{array} \right . \]

  • 对应的

    \[w_l^U = \frac{\exp(\hat{x}_{uj_l})}{\sum_{t=1}^L \exp(\hat{x}_{uj_t})}. \]

  • 但直接用这个采用并不是 memory-efficient 的, 因为你得保存每个 user 的 unobserved items, 所以作者采用的 rejection sampling:

Popularity Sampling

  • 顾名思义, 即根据流行度来采样:

    \[Q^P (j|u, i) = \left \{ \begin{array}{ll} 0, & \text{if } j \in \mathcal{I}_u \\ \frac{f_j}{\sum_{j' \in \mathcal{I} \setminus \mathcal{I}_u} f_{j'}}, & \text{otherwise}. \end{array} \right . \]

  • 相应的,

    \[w_l^P = \frac{\exp(\hat{x}_{uj_l} - \ln f_{j_l})}{\sum_{t=1}^L \exp(\hat{x}_{uj_k} - \ln f_{j_t})}. \]

  • 类似地, 作者用的是如下的 rejection sampling (\(P_Q(i) = f_i / \sum_i f_i\)):

其它

作者还讨论了 cluster-based sampling, 这里会引入和 \(u, i\) 的关系以及一些可训练的参数, 所以更为复杂.

posted @ 2023-02-19 18:25  馒头and花卷  阅读(72)  评论(1编辑  收藏  举报