DisenCDR: Learning Disentangled Representations for Cross-Domain Recommendation
概
本文针对的是跨域的学习, 希望解耦出 domain-specific 特征和共享特征. 思路倒是没有特别新, 但是这个操作感觉是个大工程啊.
符号说明
- \(\mathcal{D}^X = (\mathcal{U}, \mathcal{V}^X, \mathcal{E}^X)\), 域 \(X\) 所对应的图 (\(\mathcal{U, V}\)) 是结点;
- \(\mathcal{D}^Y = (\mathcal{U}, \mathcal{V}^Y, \mathcal{E}^Y)\), 域 \(Y\) 所对应的图 (\(\mathcal{U, V}\)) 是结点;
- \(A^X \in \{0, 1\}^{|\mathcal{U}| \times | \mathcal{V}^X|}\), \(X\) 邻接矩阵;
- \(A^Y \in \{0, 1\}^{|\mathcal{U}| \times | \mathcal{V}^Y|}\), \(Y\) 邻接矩阵;
流程
-
Encoder:
-
\(X\) 经过 encoder 得到 \(\mu^X, \sigma^X\), 然后
\[Z_u^X \sim \mathcal{N}(\mu_u^X, [\text{diag}(\sigma_u^X)]^2), \\ Z_v^X \sim \mathcal{N}(\mu_v^X, [\text{diag}(\sigma_v^X)]^2); \\ \] -
\(Y\) 经过 encoder 得到 \(\mu^Y, \sigma^Y\), 然后
\[Z_u^Y \sim \mathcal{N}(\mu_u^Y, [\text{diag}(\sigma_u^Y)]^2), \\ Z_v^Y \sim \mathcal{N}(\mu_v^Y, [\text{diag}(\sigma_v^Y)]^2); \\ \] -
\(X, Y\) 共同经过 encoder 得到 \(\bar{\mu}_u^X, \bar{\mu}_u^Y, \bar{\sigma}_u^X, \bar{\sigma}_u^Y\), 然后
\[\mu_u^S = \lambda_u \odot \bar{\mu}^X + (1 - \lambda_u) \odot \bar{\mu}_u^Y, \\ \sigma_u^S = \lambda_u \odot \bar{\sigma}^X + (1 - \lambda_u) \odot \bar{\sigma}_u^Y, \\ Z_u^S \sim \mathcal{N}(\mu_u^S, [\text{diag}(\sigma_u^S)]^2), \\ \]其中
\[\lambda_{u_i} = \frac{N_{u_i}^X}{N_{u_i}^X + N_{u_i}^Y}, \]\(N_{u_i}^X\) 就是 \(u_i\) 的一阶邻居的个数, 故上述操作就是一个平均而已;
-
-
Decoder:
\[p_{\theta^X} (A^X|Z_u^S, Z_u^X, Z_v^X), p_{\theta^Y} (A^Y|Z_u^S, Z_u^Y, Z_v^Y). \]
注: \(\hat{Z}_u^S\) 是为了设计损失所用的, 这里就不提了.
优化目标
-
最小化 \((Z_u^X, Z_u^S)\) 以及 \((Z_u^Y, Z_u^S)\) 的互信息:
\[I(Z_u^X; Z_u^S), \\ I(Z_u^Y; Z_u^S). \\ \]这保证了 \(Z_u^S\) 和其它独有特征的排斥性, 但是这无法保证 \(Z_u^S\) 就能提取到足够的共有的信息. 实际上, \(Z_u^S\) 不包含任何信息同样满足上面的约束;
-
故, 我们还希望最大化 \(X, Y, Z_u^S\) 之间的互信息:
\[I(Z_u^S; X; Y); \] -
最后我们的指标就是最小化:
\[\mathcal{L} = I(Z_u^X; Z_u^S) +I(Z_u^Y; Z_u^S) -2I(Z_u^S; X; Y). \]
关于优化目标的显式推导, 由于实在太多, 这里就不写了, 可以回看论文, 推导所必须的东西整理在 [here] and [here]
注: 文中 公式 (12, 13) 的 ELBO 实际上应该为 \(-\text{ELBO}\) 才对.
注: 文中公式 (13) 第一个不等式中的 \(\mathbb{D}_{KL}\) 缺少 \(\mathbb{E}_{p(u, v^X, v^T)}[\cdot]\).
代码
[official]