Diffusion模型学习
参考资料:
https://huggingface.co/blog/annotated-diffusion
注:本文只为了给作者自己记录简洁的高层模型要点,如有未注明的符号请参考参考资料。
1. 两个过程,前向和后向
2. 前向过程是一个代数的马尔科夫过程,是一个加高斯噪声的纯代数的过程。经过精密的数学推导,有一个极其好的性质
$$q(x_t|x_0)=\mathcal{N}(x_t;\sqrt{\overline{\alpha}_t}x_0,(1-\overline{\alpha}_t)\mathrm{I})$$
3. 反向过程需要用人工神经网络来建模,通过一系列数学推导,人工神经网络可以不预测均值,而是预测noise。如下式所示,均值和神经网络预测的噪声之间有如下关系。
$$\mu_\theta(x_t,t)=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\overline{\alpha}_t}}\epsilon_\theta(x_t,t))$$
4. 目标函数是一堆KL散度$L=L_0+L_1+\cdots+L_T$,其中$L_t$如下式:
$$||\epsilon-\epsilon_\theta(x_t,t)||^2=||\epsilon-\epsilon_\theta(\sqrt{\overline{\alpha_t}}x_0+\sqrt{(1-\overline{\alpha_t})}\epsilon,t)||^2$$
5. $x_t$和$x_0$的前向关系如下:
$$x_t=\sqrt{\overline{\alpha}_t}x_0+\sqrt{(1-\overline{\alpha}_t)}\epsilon$$
6. 后向采样(生成的时候就靠这个啦)
需要注意这里的$z_\theta$和前面预测噪声的模型是同一个模型。