LGMRec Local and Global Graph Learning for Multimodal Recommendation
概
本文采用分解的方法进行对 ID 和 模态信息进行独立处理, 再加上利用超图对模态信息进行 global 的处理.
符号说明
- \(\mathcal{U} = \{u\}\), users;
- \(\mathcal{I} = \{i\}\), items;
- \(\mathbf{e}_u \in \mathbb{R}^d\), user ID embeddings;
- \(\mathbf{e}_i \in \mathbb{R}^d\), item ID embeddings;
- \(\mathbf{E}^{id} \in \mathbb{R}^{(|\mathcal{U}| + |\mathcal{I}|) \times d}\), ID embeddings;
- \(\mathbf{R} \in \mathbb{R}^{|\mathcal{U}| \times |\mathcal{I}|}\), interaction matrix;
- \(m \in \mathcal{M} = \{v, t\}\), 模态;
- \(\mathbf{e}_i^m \in \mathbb{R}^{d_m}\), item \(i\) 对应模态 embedding;
- \(\tilde{\mathbf{e}}_i^m = \mathbf{W}_m \mathbf{e}_i^m \in \mathbb{R}^d\), 经过模态映射后的
- \(\mathbf{A}\), 邻接矩阵;
- \(\tilde{\mathbf{A}}\), normalized 邻接矩阵
Motivation
- 过往的方法, 往往模态 embeddings 和 ID embeddings 共享一个 user embeddings, 但是作者发现这种情况会导致在训练的时候, 二者对于 user embeddings 的更新的贡献可能是截然相反的:
-
如上图所示, 在训练的开始, 这种情况更外明显.
-
此外, 作者认为, 模态信息的很重要的一个点是能够反映用户对于 color, style, shape 等属性信息的偏好, 所以应该特别显式建模出这一点.
LGMRec
Local Graph Embedding
-
首先对于 ID, 采用 LightGCN 进行信息传播:
\[\mathbf{E}_{lge}^{id} = \frac{1}{L + 1} \sum_{l=0}^L \mathbf{A}^l \mathbf{E}^{id}. \] -
其次对于模态, 首先我们初始化 user 的 embeddings 为
\[\tilde{\mathbf{e}}_u^m = \frac{1}{|\mathcal{N}_u|} \sum_{i \in \mathcal{N}_u} \tilde{\mathbf{e}}_i^m. \] -
接着
\[\tilde{\mathbf{E}}_{lge}^m = \tilde{A}^K \tilde{\mathbf{E}}^{m}. \]
Global Graph Embedding
-
作者首先引入 \(\mathbf{V}^m \in \mathbb{R}^{|\mathcal{I}| \times A}, \mathbf{H}^m \in \mathbb{R}^{|\mathcal{U}| \times A}\) 去学习 item, user 的属性偏好,
\[\mathbf{H}_i^m = \mathbf{E}_i^m {\mathbf{V}^m}^T, \quad \mathbf{H}_u^m = \mathbf{E}_u^m {\mathbf{H}^m}^T. \]其中 \(\mathbf{A}_u \in \mathbb{R}^{|\mathcal{U}| \times \mathcal{I}|}\) 是 user-related adjacency matrix (是不是 \(\mathbf{R}\) 的行归一化?).
-
这样一来, 每个 item, user 都映射到了一个属性 \(a\), 为了确保每个 item 都尽可能映射到一个属性上, 作者额外通过 Gumbel-Softmax 来强化.
-
接下来, item 的 embeddings 更新方式如下:
\[\mathbf{E}_{i}^{m, h + 1} = \text{Drop}(\tilde{\mathbf{H}}_i^m) \text{Drop}(\tilde{\mathbf{H}_i^m}^{T}) \mathbf{E}_i^{m, h}. \]Drop 表示 dropout.
需要注意的是, 这里 \(\mathbf{E}_i^{m, 0} = \mathbf{E}_{i, lge}^{id}\). 对于 user, 更新方式是类似的. -
最后,
\[\mathbf{E}_{ghe} = \sum_{m \in \mathcal{M}} \mathbf{E}^{m, H}, \quad \mathbf{E}^{m, H} = [\mathbf{E}_u^{m, H}, \mathbf{E}_{i}^{m, H}]. \] -
为了保证不同模态学到的兴趣是一致的, 作者引入对比损失:
\[\mathcal{L}_{\text{HCL}}^u = \sum_{u \in \mathcal{U}} -\log \frac{ \exp(s(\mathbf{E}_u^{v, H}, \mathbf{E}_u^{t, H}) / \tau) }{ \sum_{u' \in \mathcal{U}} \exp(s(\mathbf{E}_u^{v, H}, \mathbf{E}_{u'}^{t, H})/ \tau) }, \]\(s(\cdot, \cdot)\) 表示 cosine 相似度.
对于 item 的 \(\mathcal{L}_{\text{HCL}}^i\) 是类似定义的.
Fusion
-
最后的 embeddings 为
\[\mathbf{E}^* = \mathbf{E}_{lge}^{id} + \sum_{m \in \mathcal{M}} \text{Norm}(\mathbf{E}_{lge}^m) + \alpha \text{Norm} (\mathbf{E}_{ghe}). \] -
score 通过内积完成, 损失采用的是 BPR 损失加上上面说的对比损失.
代码
[official]