接上文
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的训练其实也是去预测每一步的噪声,就像反向过程中对均值推导的那样,,这里的均值不依赖
,而他的求解本质上就是
减去随机噪声