MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems
概
一种构造困难负样本的方法.
符号说明
- \(\mathcal{U} = \{u\}\), users;
- \(\mathcal{V} = \{v\}\), items;
- \(N_u\), user 的 1-hop 邻居;
- \(N_v\), item 的 1-hop 邻居;
算法
-
推荐系统通常会为用户 \(u\) 选择一个正样本 (observed) \(v^+\), 然后再选择一个负样本 \(v^-\). 但是作者认为, 通过均匀采样得到的负样本 \(v^-\) 往往是非常弱的, 它并不能够提供太多的信息, 作者的思路是通过融合正样本和负样本来得到更加复杂的负样本;
-
首先对于正样本对 \((u, v^+)\), 我们采样 \(M\) 个负样本, 记为 \(\mathcal{E}\);
-
假设每个的样本对应的特征为 \(e_u, e_v\), 则我们通过如下方式构造新的负样本集合:
\[\mathcal{E}' = \{e_v' = \alpha e_{v+} + (1 - \alpha) e_{v}, \alpha \sim \mathcal{U}(0, 1): v \in \mathcal{E} \}; \] -
然后挑选 hard 的负样本:
\[e_{v_x} := \mathop{\mathrm{argmax}} \limits_{e_{v}' \in \mathcal{E}'} \: e_{u}^T e_{v}'; \] -
LightGCN 这类图网络, 每一层都会有一个特征 \(e^{(l)}\), 都每一层进行如上操作得到
\[e_{v_x}^{(l)}, \: l=0,1,\ldots, L \]然后得到最后的
\[e_{v^-} = \text{Pooling}(e_{v_x}^{(0)}, \ldots, e_{v_x}^{(L)}). \] -
然后通过如下 BPR 损失进行优化:
\[\mathcal{L}_{BPR} = \sum_{(u, v^+, v^-)} \ln \sigma(e_u^T e_{v^+} - e_u^T e_{v^-}). \]
代码
[official]