A Neural Influence Diffusion Model for Social Recommendation
概
graph + Social recommendation.
符号说明
- \(U\), user set, \(|U| = M\);
- \(V\), item set, \(|V| = N\);
- \(\mathbf{R} \in \mathbb{R}^{M \times N}\), implicit feedback based rating matrix;
- \(\mathcal{G} = (U, \mathbf{S} \in \mathbb{R}^{M \times M})\), user-user (un)directed graph, \(s_{ba} = 1\) 若 user \(a\) 关注 user \(b\).
DiffNet
-
首先, 对于 user, item 以及它们的属性 (optional) 构建 embedding. 比如, 假设用户 \(a\) 它的 embedding 为 \(\mathbf{p}_a\), 然后它的 feature 为 \(\mathbf{x}_a\), 首先通过 fusion layer 将二者融合在一起:
\[\mathbf{h}_a^0 = g(\mathbf{W}^0 \times [\mathbf{x}_a, \mathbf{p}_a]). \]对于 item 也是类似的:
\[\mathbf{v}_i = \sigma(\mathbf{F} \times [\mathbf{q}_i, \mathbf{y}_i]). \] -
接着我们希望把 social graph 的信息融合进去. 第 \(k + 1\) 层进行如下操作:
-
邻居聚合:
\[\mathbf{h}_{S_a}^{(k+1)} = \text{pool}(\mathbf{h}_b^k| b \in \mathcal{S}_a), \]其中 \(\mathcal{S}_a\) 为根据 social graph \(\mathcal{G}\) 推得的一阶邻居结点的集合.
-
接着
\[\mathbf{h}_a^{k+1} = s^{(k+1)} (\mathbf{W}^k \times [\mathbf{h}_{S_a}^{k+1}, \mathbf{h}_a^k]) \]融合当前和之前的信息, 其中 \(\mathbf{s}^{(k+1)}(\cdot)\) 是非线性的变换(激活?)函数.
-
-
最后, 我们通过:
\[\mathbf{u}_a = \mathbf{h}_a^{K} + \sum_{i \in R_a} \frac{\mathbf{v}_i}{|R_a|} \]融合最后一层的 user embedding 以及它之前交互过的 item 的信息, 其中 \(R_a\) 即为用户 \(a\) 的历史交互过的 items 的集合.
-
接着, 通过如下方式进行打分:
\[\hat{r}_{ai} = \mathbf{u}_a^T \mathbf{v}_i. \]
代码
[official]