目录
概
作者总结了 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\) 的关系以及一些可训练的参数, 所以更为复杂.
标签:Ranking,Importance,sum,uij,ln,exp,mathcal,Personalized,hat From: https://www.cnblogs.com/MTandHJ/p/17135296.html