Diffusion model(二):训练推导详解

接上文

Diffusion model(一): 公式推导详解
Diffusion model(二): 训练推导详解
Diffusion model(三): 公式结论

Diffusion的训练推导

1. 最小化负对数似然与变分下界

在弄懂diffusion model前向和反向过程之后,最后我们需要了解其训练推导过程,即用什么loss以及为什么。在diffusion的反向过程中,根据式我们需要预测,如何得到一个合理的均值和方差?类似于VAE,在对真实数据分布情况下,最大化模型预测分布的对数似然,即优化下的的交叉熵

注意,我们的真实目标是最大化取了负,所以这里要最小化。与VAE类似,我们通过变分下限VLB来优化负对数似然,如下

现在我们得到了最大似然的变分下界,即式,但是根据式,我们要优化,比多了个期望,所以这里我们加上期望,同时根据重积分中的Fubini定理,得到

2. 变分下界的详细推导优化

再次回到式,我们的目标是最小化交叉熵,现在我们得到了他的变分下界,因此我们将最小化转移为最小化变分下界,即,下面我们对变分下界进行化简,化简过程比较长,对一些具有疑惑的化简最后附带详解

注意:这里化简有一个疑问是从倒数第2行到倒数第1行的过程中,如果要得到KL散度,是需要加上期望符号的,即,但是推导中没有加,这里不知道为啥,但是就这么用好了

公式解释部分,上述公式懂的话可以不看
1.公式中的红笔部分化简
比较困难,但是当提供额外的时,的候选会减少,选择更加确定,因此这里我们加上,这样推导如下

2. 公式中蓝色部分为什么无意义?
在红笔公式化简之后,给定可以得到,如果我们不将蓝色部分提出,那么会变为,此表达式是无意义的

3. 由变分下界得到优化loss

去掉繁琐的推导过程以及最后的期望符号,我们再回头看一下VLB的化简结果

  • : 这一项中的前向过程是一个前向加噪的过程,而是一个纯粹的高斯噪声,在我们前向过程中,很容易变为高斯噪声,因此可以看为常量,计算时忽略即可
  • :这一项可以看做拉近2个高斯分布之间的距离,根据多元高斯分布的KL散度求解

把式求得的带入得

  • :其他博客解释这个相当于最后一步的熵,但是这个我不是很理解,如果想详细了解可以参考DDPM论文

所有的就是最终的变分下界,DDPM将其进一步化简如下

论文没有将方差考虑在训练和推断中,而是将untrained的代替,因为可能会导致训练不稳定

到这里我们知道了Diffusion model的训练其实也是去预测每一步的噪声,就像反向过程中对均值推导的那样,,这里的均值不依赖,而他的求解本质上就是减去随机噪声

4. 训练与推断

最后我们附上论文中训练和推断的过程

在看论文的时候有一点困惑:解释一下为什么训练的时候reverse一步到位,sample的时候得一步一步的来。因为训练的时候我们对于均值u的预测,是建立在已知的基础上的,所以能够通过公式直接预测噪声进行训练,测试的时候我们只有采样的高斯随机噪声,并不知道他的是什么,所以需要一步一步的预测噪声

知识点补充

1. 重参数化技巧

重参数化技巧在VAE中被应用过,此技巧主要用来使采样可以进行反向传播,假设我们随机采样时从任意一个高斯分布中采样,然后预测结果,最终结果是无法反向传播的(不可导),通常做法是使用标准高斯分布作为引导

具体做法是首先从标准高斯分布中采样一个变量,然后根据高斯分布的均值和方差来对采样变量进行线性变换,如下

重参数化之后得到的变量具有随机性的,满足均值为,方差为的高斯分布,这样采样过程就可导了,随机性加到了上,而不是

再通俗解释一下,就是如果我们直接对原来高斯分布采样的话,采样之后的所有计算是可以反向传播的,但是是传不到<在采样这个步骤之前的过程>的,因为数据具有随机性了,反向传播不能传播随机性的梯度,当我们将随机性转移到上时,因为标准高斯分布之前就没有数据了,所以不用继续传播了,传播的是对其采样之后的

到这里我们知道了Diffusion model的训练其实也是去预测每一步的噪声,就像反向过程中对均值推导的那样,,这里的均值不依赖,而他的求解本质上就是减去随机噪声