1 简介
论文: Recommendation via Collaborative Diffusion Generative Model
源代码:https://github.com/WorldChanger01/CODIGEM
主要思想:将基于文本用AI生成图像的扩散模型 (Denoising Diffusion Probabilistic Model, DDPM)迁移到推荐系统领域。生成模型就是通过给定的一组数据来获取有关数据本身的概率分布函数的信息,从而可以生成与最初给定数据类型风格相似的新数据。这一模型可以用于生成图片、音乐、文本等,增强原有数据库的丰富性。
主要步骤:DDPM模型在进行基于文本用AI生成图像的时候,有两个主要的步骤:前向扩散过程和反向生成过程,前向扩散过程是对一张图像逐渐添加高斯噪音直至变成随机噪音,而反向生成过程是去噪音过程,我们将从一个随机噪音开始逐渐去噪音直至生成一张图像。
1.1 Diffusion
扩散过程是指的对数据逐渐增加高斯噪音直至数据变成随机噪音的过程。
xtx_txt为ttt时刻加了噪声的图片,xt−1x_{t-1}xt−1是t−1t-1t−1时刻加了噪声的图片,ztz_tzt为ttt时刻的噪声。
加噪声过程:
xt=1−βtxt−1+βtzt,x_t = \sqrt{1 - \beta_t} x_{t-1} + \sqrt{\beta_t}z_t, xt=1−βtxt−1+βtzt,
其中系数βt∈[10−4,2×10−2]\beta_t \in [10^{-4}, 2 \times 10^{-2}]βt∈[10−4,2×10−2],将区间等为200020002000份, βt\beta_tβt依次取等分后值;zt∼N(0,σ)z_t \sim N(0, \sigma)zt∼N(0,σ), T=2000T = 2000T=2000。
令αt=1−βt\alpha_t = 1 - \beta_tαt=1−βt, 则有:
xt=αtxt−1+1−αtzt,xt−1=αt−1xt−2+1−αt−1zt−1.\begin{array}{l} x_t = \sqrt{\alpha_t} x_{t-1} + \sqrt{1 - \alpha_t}z_t, \\ x_{t-1} = \sqrt{\alpha_{t-1}} x_{t-2} + \sqrt{1 - \alpha_{t-1}}z_{t-1}. \end{array} xt=αtxt−1+1−αtzt,xt−1=αt−1xt−2+1−αt−1zt−1.
可以推导得到:
xt=α‾tx0+1−α‾tz,x_{t}=\sqrt{\overline{\alpha}_{t}} x_{0}+\sqrt{1-\overline{\alpha}_{t}} z, xt=αtx0+1−αtz,
其中α‾t=∏i=1Tαi\overline{\alpha}_{t} = \prod_{i = 1}^{T} \alpha_iαt=∏i=1Tαi,zzz表示噪声变量。
1.2 Reverse Diffusion
根据条件概率的知识可知:
q(xt−1∣xt)=q(xt−1,xt)q(xt)=q(xt∣xt−1)q(xt−1)q(xt)q\left(x_{t-1} \mid x_{t}\right)=\frac{q\left(x_{t-1}, x_{t}\right)}{q\left(x_{t}\right)}=\frac{q\left(x_{t} \mid x_{t-1}\right) q\left(x_{t-1}\right)}{q\left(x_{t}\right)} q(xt−1∣xt)=q(xt)q(xt−1,xt)=q(xt)q(xt∣xt−1)q(xt−1)
只要计算出q(xt−1),q(xt),q(xt∣xt−1)q(x_{t-1}), q\left(x_{t}\right), q\left(x_{t} \mid x_{t-1}\right)q(xt−1),q(xt),q(xt∣xt−1),就可以得到q(xt−1∣xt)q\left(x_{t-1} \mid x_{t}\right)q(xt−1∣xt)。
根据下面的公式可以计算:
xt=αtxt−1+1−αtzt∼N(αtxt−1,(1−αt)σ)⟹q(xt∣xt−1)∼N(αtxt−1,(1−αt)σ)\begin{array}{l} x_{t}=\sqrt{\alpha_{t}} x_{t-1}+\sqrt{1-\alpha_{t}} z_{t} \sim N\left(\sqrt{\alpha_{t}} x_{t-1},\left(1-\alpha_{t}\right) \sigma\right) \\\Longrightarrow q\left(x_{t} \mid x_{t-1}\right) \sim N\left(\sqrt{\alpha_{t}} x_{t-1},\left(1-\alpha_{t}\right) \sigma\right) \\ \end{array} xt=αtxt−1+1−αtzt∼N(αtxt−1,(1−αt)σ)⟹q(xt∣xt−1)∼N(αtxt−1,(1−αt)σ)
xt=αt‾x0+1−αt‾z∼N(αt‾x0,(1−αt‾)σ)⟹q(xt)∼N(α‾tx0,(1−αt‾)σ)q(xt−1)∼N(α‾t−1x0,(1−α‾t−1)σ)x_{t}=\sqrt{\overline{\alpha_{t}}} x_{0}+\sqrt{1-\overline{\alpha_{t}}} z \sim N\left(\sqrt{\overline{\alpha_{t}}} x_{0},\left(1-\overline{\alpha_{t}}\right) \sigma\right) \\ \Longrightarrow \begin{array}{c} q\left(x_{t}\right) \sim N\left(\sqrt{\overline{\alpha}_{t}} x_{0},\left(1-\overline{\alpha_{t}}\right) \sigma\right) \\ q\left(x_{t-1}\right) \sim N\left(\sqrt{\overline{\alpha}_{t-1}} x_{0},\left(1-\overline{\alpha}_{t-1}\right) \sigma\right) \end{array} \\ xt=αtx0+1−αtz∼N(αtx0,(1−αt)σ)⟹q(xt)∼N(αtx0,(1−αt)σ)q(xt−1)∼N(αt−1x0,(1−αt−1)σ)
推导后可以得到:
xt−1=1αt(xt−βt1−α‾t−1z~)+1−α‾t−11−α‾tβtzx_{t-1} = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{\beta_t}{\sqrt{1-\overline{\alpha}}_{t-1}}\widetilde{z}\right) + \sqrt{\frac{1-\overline{\alpha}_{t-1}}{1-\overline{\alpha}_{t}}\beta_t}z xt−1=αt1(xt−1−αt−1βtz)+1−αt1−αt−1βtz
此处z~=UNet(xt,t)\widetilde{z} = \mathrm{UNet}(x_t, t)z=UNet(xt,t)。