Multi-View Graph Convolutional Network for Multimedia Recommendation
概
本文主要处理模态内的一些不合理的相似度 (可以理解为噪声).
符号说明
- \(\mathcal{U} = \{u\}\), users;
- \(\mathcal{I} = \{i\}\), items;
- \(\mathcal{M} = \{m\}\), modalities;
- \(\mathcal{G} = (\mathcal{V}, \mathcal{E}), \mathcal{V} = \mathcal{U} \cup \mathcal{I}\), behavior graph;
- \(\mathbf{E}_{id} \in \mathbb{R}^{d \times (|U| + |I|)}\), id embeddings;
- \(\mathbf{E}_{i, m} \in \mathbb{R}^{d_m \times |I|}\), item modality features;
MGCN
Motivation
-
如上图所示, 两幅图片实际上展示的是两种不同的商品 (我怎么看着还挺一致的?), 但是因为图片的背景的相似度等等, 这两张图片在隐空间中的表示的 cosine 相似度能够达到 0.648.
-
可以认为, 图片中的无关商品的因素会带来很大的噪声, 使得商品的相互建模产生一些问题.
Behavior-Guided Purifier
- 本文的第一步就是利用 behavior 信息来对模态信息进行一个过滤:
-
首先对原始的模态特征 \(\mathbf{E}_{i,m}\) 进行一个线性变换:
\[\mathbf{\dot{E}}_{i, m} = \mathbf{W}_1 \mathbf{E}_{i, m} + \mathbf{b}_1, \]其中 \(\mathbf{W}_1 \in \mathbb{R}^{d \times d_m}, \mathbf{b}_1 \in \mathbb{R}^d\).
-
通过 behavior 信息进行调整:
\[\mathbf{\ddot{E}}_{i,m} = f_{gate}^m (\mathbf{E}_{i, id}, \mathbf{\dot{E}}_{i, m}) = \mathbf{E}_{i, id} \odot \sigma(\mathbf{W}_2 \mathbf{\dot{E}}_{i, m} + \mathbf{b}_2), \]其中 \(\mathbf{W}_2 \in \mathbb{R}^{d \times d}, \mathbf{b}_2 \in \mathbb{R}^d\).
\(\odot\) 表示 element-wise 的乘法, \(\sigma\) 表示 sigmoid 激活函数.
-
Multi-View Information Encoder
-
User-Item View: 首先通过 LightGCN 在 User-Item 的图上将 id embedding \(\mathbf{E}_{id}\) 转换为 \(\mathbf{\bar{E}}_{id}\).
-
Item-Item View: 首先和 LATTICE 一样得到 kNN Item-Item graph 的标准化后的邻接矩阵 \(\mathcal{\ddot{S}}_m\), 然后通过
\[\mathbf{\bar{E}}_{i, m} = \mathbf{\ddot{E}}_{i,m} \mathcal{\ddot{S}}_{m} \]得到平滑后的 item modality embeddings.
然后 user modality features 通过聚合 user 交互过的 items 的 modality features 得到:\[\mathbf{\ddot{e}}_{u, m} = \sum_{i \in \mathcal{N}_u} \frac{1}{ \sqrt{|\mathcal{N}_u| |\mathcal{N}_i|} } \mathbf{\bar{e}}_{i, m}. \] -
将二者拼接起来得到:
\[\mathbf{\bar{E}}_m = [\mathbf{\bar{E}}_{u, m}, \mathbf{\bar{E}}_{i, m}] \in \mathbb{R}^{d \times (|U| + |I|)}. \]
Behavior-Aware Fuser
-
接着我们要把之前的特征融合起来.
-
Modality prefrences:
\[\mathbf{P}_m = \sigma( \mathbf{W}_3 \mathbf{\bar{E}}_{id} + \mathbf{b}_3 ), \]其中 \(\mathbf{W}_3 \in \mathbb{R}^{d \times d}, \mathbf{b}_3 \in \mathbb{R}^{d}\).
-
Modality-shared features:
\[\mathbf{E}_s = \sum_{m \in \mathcal{M}} \alpha_m \mathbf{\bar{E}}_m, \\ \alpha_m = \text{softmax}(\mathbf{q}_1^T \tanh (\mathbf{W}_4 \mathbf{\bar{E}}_m + \mathbf{b}_4)). \]其中 \(\mathbf{W}_4 \in \mathbb{R}^{d \times d}, \mathbf{b}_4 \in \mathbb{R}^{d}\), \(\mathbf{q}_1 \in \mathbb{R}^d\) 表示 attention vector.
-
Modality-specific features:
\[\mathbf{\tilde{E}}_m = \mathbf{\bar{E}}_m - \mathbf{E}_s. \] -
最后融合得到最后的特征:
\[\mathbf{E}_{mul} = \mathbf{E}_s + \frac{1}{\mathcal{M}} \sum_{m \in \mathcal{M}} \mathbf{\tilde{E}}_m \odot \mathbf{P}_m. \]
Prediciton
-
user embedding:
\[\mathbf{e}_u = \mathbf{\bar{e}}_{u, id} + \mathbf{e}_{u, mul}, \\ \mathbf{e}_i = \mathbf{\bar{e}}_{i, id} + \mathbf{e}_{i, mul}. \] -
score:
\[\hat{y}_{ui} = \mathbf{e}_u^T \mathbf{e}_i. \]
Optimation
-
损失如下
\[\mathcal{L} = \mathcal{L}_{BPR} + \lambda \mathcal{L}_C, \]其中 \(\mathcal{L}_C\):
\[\mathcal{L}_C = \sum_{u \in \mathcal{U}} -\log \frac{ \exp( e_{u, mul} \cdot \bar{e}_{u, id} / \tau ) }{ \sum_{v \in \mathcal{U}} \exp(e_{v, mul} \cdot \bar{e}_{v, id} / \tau) } \sum_{i \in \mathcal{I}} -\log \frac{ \exp( e_{i, mul} \cdot \bar{e}_{i, id} / \tau ) }{ \sum_{j \in \mathcal{I}} \exp(e_{j, mul} \cdot \bar{e}_{j, id} / \tau) }. \] -
作者说其 \(\mathcal{L}_C\) 的目的是促进 behavior 和模态信息的利用, 看着只是单纯对比损失好用吧.
代码
[official]