对DDPM进行改进
原文:戳我
作者:Alex Nichol, Prafulla Dhariwal
Improvement
1- 对数似然估计
“Razavi, A., van den Oord, A., and Vinyals, O. Generating diverse high-fidelity images with vq-vae-2, 2019.” —— 对对数似然进行估计的优化过程,可以迫使生成模型获取原始数据所有的特征分布。
“Henighan, T., Kaplan, J., Katz, M., Chen, M., Hesse, C., Jackson, J., Jun, H., Brown, T. B., Dhariwal, P., Gray, S., Hallacy, C., Mann, B., Radford, A., Ramesh, A., Ryder,N., Ziegler, D. M., Schulman, J., Amodei, D., and McCandlish, S. Scaling laws for autoregressive generative modeling, 2020.” —— 在对对数似然上进行微小的提升就可以大幅度提高采样的质量。
因此:很有必要思考怎样让DDPM在对对数似然的优化更进一步。
前期的实验结果发现,把扩散步数$T$增加可以有效提高对数似然的效果。
$T$从1000提高到4000,对数似然提高到3.77
1.1- 对协方差进行预测
DDPM降噪采样时的方差是固定的,固定为:$\Sigma_\theta\left(x_t, t\right)=\sigma_t^2 I$,并且固定$\sigma_t = \beta_t$
但是很奇怪的是,在降噪的采样实验中,不论是让$\sigma_t = \beta_t$还是让$\sigma_t = \tilde{\beta}_t$,采样的质量差不多。难道是方差其实根本不是决定采样质量的变量?
补充:$\tilde{\beta}_t:=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t} \beta_t$,$\bar{\alpha}_t:=\prod_{s=0}^t \alpha_s$,$\alpha_t:=1-\beta_t$
为了验证这个猜想作者绘制了上图,并发现在扩散进度$t=0$的位置,$\beta_t$和$\tilde{\beta}_t$几乎一致。这说明在有限的扩散步数之内,方差$\sigma_t$不一定和采样质量之间存在关联。
换句话说就是,我们在添加更多的扩散步数之后,采样质量的高低更多的还是与降噪采样的均值相关。
同时该图也表明协方差的合理范围($\beta$ ~ $\tilde{\beta}$ )是很小的,如果利用神经网络直接对其进行预测的话,需要这个神经网络达到相当高程度的精度,这对现有的神经网络来说还是不太好实现的。
所以说可以转换一个思路,让神经网络去预测一个参数,让参数规划出来的数值落在$\beta$ ~ $\tilde{\beta}$ 之间,这样神经网络就可以更好训练了。
并且在对$v$进行预测的过程中,作者并没有为其增加什么约束,理论上这可能让最后的协方差超过预期的范围,不过实践中这种情况这并没有发生过,可以假定应该是这个神经网络的定义方式本身已经对其数值的上下界有了一定的约束。
不过与此同时,上图的实验也证明,在扩散过程的前几步对最小化变分下界(Variational Lower BOund)而言是效用最高的。因此我们仍然可以说,协方差的选择是和训练效果、采样效果相关的。
基于上述两个特殊的实验,在重新把协方差纳入考量之后,为了最大化利用协方差和效果的相关性,训练的优化目标也进一步发生改变:
这里$\lambda=1e-3$
1.2- 对噪声数据更好地进行规划
在DDPM中,数值从小到大,噪声的规划是线性的,但是作者发现,这种线性递增的噪音其实很有可能扩散到一半的时候,就让数据完全服从高斯分布了(上),再后面的噪声添加已经对采样、对训练没有任何意义。
所以作者提出了cos噪声规划方法,使得噪声添加的量呈非线性,同时在cos噪声规划的情况下$\bar{\alpha}_t$的变化更为线性而平缓,可以有效防止数据在中途某一步突然被添加大量噪声,因此降低神经网络的训练难度,理论上一定程度提高了训练效果。
Cosine噪声规划
公式:
这种规划方法利用$s$替换了原本DDPM的噪声参数$\beta$,防止其在靠近$t=0$的时候过小,这也是因为作者团队在上述研究的发现:
在刚开始扩散的时候效果其实是最好的,这个时候如果噪声数量过少,不利于神经网络对噪声$\epsilon$的预测。
$s=8e-3$
作者团队选择$\cos^2(\cdot)$的形式是因为这个函数的形状是符合作者团队对噪声规划的预期的,同时这也是一个数学中常见的函数。当然这里也可以选择其他的函数,具体什么函数更好就看后人的工作了。
1.3- 降低梯度数据中的噪声
在1.1中,对目标引入了$L_{vlb}$,但是作者也发现关于这个目标的优化实在是有点困难。上图表明$L_{hybrid}$的效果好于$L_{vlb}$,作者基于此假设:
$L_{vlb}$在训练时的梯度相比于$L_{hybrid}$而言,噪声更多。
“McCandlish, S., Kaplan, J., Amodei, D., and Team, O. D. An empirical model of large-batch training, 2018.” —— 一个评估梯度噪声规模(Gradient Noise Scales)的方法
基于这个方法,作者团队证明了自己的猜想,并为了消除这些噪声的影响,作者进一步提出假设:
是因为在预测时,对扩散时间点$t$的采样,是在$[0, T]$之间的均匀采样而导致的噪声,换一种对$t$的采样方法或许可以解决这个问题。
于是作者引入了重要性采样(Importance Sampling):
其中:$E\left[L_t^2\right]$这个关于损失(时间)平方的函数的期望值是未知的,而且很有可能在训练过程中,因为损失值的变化而实时变动。作者保留了损失项的前(previous)10个数值,并且在训练过程中实时更新这个小列表。
训练一开始的前10步还是采用均匀采样,一旦损失项的数值个数超过10,则启用重要性采样。
2- 采样速度
直观上来说,经过了$T$步扩散的数据应该同样地该序列将其还原。不过作者认为,利用一个关于0~$T$的子序列$S$进行对其进行降噪采样也是可行的。
基于子序列$S$,得到对应的噪声系数$\bar{\alpha}_{S_t}$,这个时候采样就变成了:
此时用于预测的含参概率模型就是:
观点
1- 和GAN对比
GAN一般是用来训练给定分类条件的生成模型(class-conditional models),