概
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]
- Recommendation Influence Diffusion Neural Socialrecommendation influence diffusion neural inferring diffusion influence文献 recommendation expressive networks neural recommendation sequential diffusion diffurec influence social misinformation minimizing influence blocking codeforces distance social round 题解distance social graph springsecurity实战 笔记social