DiffuRec: A Diffusion Model for Sequential Recommendation

Li Z., Sun A. and Li C. DiffuRec: A diffusion model for sequential recommendation. arXiv preprint arXiv:2304.00686, 2023.

扩散模型用于序列推荐, 性能提升很大.

DiffuRec

前向

  • 前向和普通的扩散模型没有什么区别, 即

    \[\bm{x}_0 \mathop{\longrightarrow} \limits^{+\epsilon} \bm{x}_1 \mathop{\longrightarrow} \limits^{+\epsilon} \cdots \bm{x}_T \sim \mathcal{N}, \]

    不过采用的是 truncated linear schedule.

后向

  • 后向是直接一步一步回来的, 并没有用 DDIM 加速, 所以 DiffuRec 的 timesteps 设的很小 \(=32\).

近似模型

  • 与一般的扩散模型比较大的区别是模型的设置.

  • 首先, 为每个 item 赋予一个 embedding \(\bm{e}_i\), 序列中扩散的任务是需要通过模型来拟合条件分布:

    \[p(\bm{x}_{t-1}|\bm{x}_t, \{\bm{e}_j^u\}_{j=1}^n, t), \]

    其中 \(\{\bm{e}_j^u\}\) 表示用户的历史交互的 items.

  • 作者的近似模型为:

    \[\hat{\bm{x}}_0 = f_{\theta}(Z_x) = \text{Transformer}([\bm{z}_1, \bm{z}_2, \ldots, \bm{z}_n]) \\ \bm{z}_i = \bm{e}_i + \lambda_i \odot (\bm{x}_t + \bm{d}_t), \]

    即这是一个直接预测 \(\bm{x}\) 的模型. 在反向采样的过程中, 我们需要推断 \(\hat{\bm{x}}_{t-1}\), 这可以通过一定的变换得到.

  • 在这里 \(\lambda\) 实际上控制了 '噪声' 的权重, 如果 \(\lambda=0\) 那 DiffuRec 就成了普通的序列推荐模型, 在这里 \(\lambda \sim \mathcal{N}(\delta, \delta)\). 实验中发现, \(\delta\) 需要足够小:

  • 这是第一个让我感觉到有点奇怪的点.

  • 此外, 不同于一般的扩散模型, 采用 MSE, 作者采用的是交叉熵

    \[\mathcal{L}_{CE} = \frac{1}{|\mathcal{U}|} \sum_{i \in \mathcal{U}} -\log \hat{y}_i, \\ \hat{y} = \frac{\exp(\hat{\bm{x}}_0^T \bm{e}_{n+1})}{\sum_{i \in \mathcal{I}} \exp (\hat{\bm{x}}_0^T \bm{e}_i)}. \]

  • 这也是十分奇怪的一点, 因为这相当于完全破坏了 ELBO 的性质, 不是很理解.

  • 最后, 采样得到的 \(\bm{x}_0\), 还需要通过 rounding 映射回到离散的空间中去:

    \[\arg\max_{i \in \mathcal{I}} \: \bm{x}_0^T \bm{e}_i. \]

posted @ 2023-04-13 14:31  馒头and花卷  阅读(638)  评论(2编辑  收藏  举报