赞
踩
参考论文:A Survey on Generative Diffusion Model
github:https://github.com/chq1155/A-Survey-on-Generative-Diffusion-Model
已经有大量的方法证明深度生成模型能够模拟人类的想象思维,生成人类难以分辨真伪的内容,主要方法如下:
1、GAN:用神经网络训练生成器和判别器
GAN 的主要思想:
缺点:
优点:
2、AE、DAE、VAE、VQVAE:
Auto-Encoder (AE):给定输入 x,经过编码器 encoder 就能得到特征,特征维度会变小,然后在使用解码器,得到一个图像,训练的目标函数是希望解码器的输出能尽可能的重建输入,也正是因为是自己重建自己,所以是自编码器
Denoising Auto-Encoder (AE):先对原图输入进行扰乱,后续过程和 AE 一样,依然希望输入能够重建原始的未经过扰乱的输入,这个扰动很有用,会让训练出来的模型非常稳健,不容易过拟合。图片数据本来就是冗余的,所以添加一些扰动后,模型仍然能够学习到很好的特征。
AE 和 DAE 或者 MAE 其实都是为了学习中间那个 bottleneck 特征 z,学习好了后用于分类、检测等任务,并不是做生成的,其原因在于这里的 z 是专门用来重建的特征,并不是随机噪声,并不能用于采样来生成图像
所以就有了 VAE,也就是变分自编码器,VAE 和 AE 是很不同的,虽然结构看起来很像,但很重要的区别是,中间不再是学习一个 bottleneck 的特征,而是学习了一个分布,假设分布是高斯分布,可以用均值和方差来描述,就是从 encoder 得到特征后,加一些 FC 层,来预测均值和方差,得到后用公式采样一个 z 出来,VAE 就可以用来做生成了,因为在训练好后,可以扔掉 encoder,这里的 z 就是能随机抽样出的样本,然后就能生成图片了
VAE 这里生成的是一个分布,从贝叶斯角度来看,前面的过程是一个后验概率 p(z|x),就是给定 x 得到 z 的过程,学到的 z 就是一个先验分布,后面的过程是一个先验概率 p(x|z),就是给定 z 预测 x 的过程,其实就是最大似然,这里做的就是 maximize likelihood。
VAE 因为是学习的概率分布,是从分布中抽样的,生成的图片的多样性比 GAN 好的多,后面还有一些 VQVAE 和 DALLE 1 都是在 VAE 的基础上做的。
VAE 其实结构和扩散模型很像,且有较好的理论可解释性,但 Encoder 使用很大的步长来学习数据分布并进行加噪,Decoder 也使用很大的步长来去噪,导致学习的不够细致,很粗糙。
3、Diffusion model
前向扩散:在输入 x0 上逐步加噪声,一共加 T 次,最终变成一个真正的噪声,各向同性正态分布
逆向去噪:从最终的 xT 逐步恢复原图的过程,使用的是共享参数的 U-Net 结构
扩散模型发展历程:
DDPM → improved DDPM → Diffusion beats GAN → GLIDE → DALLE2 → Imagen
我们主要介绍扩散模型,扩散模型背后的直觉来源于物理学:
扩散模型可以用到哪些任务上:
扩散模型的应用场景:
扩散模型的工作原理:
扩散模型的结构:
扩散模型相比 GAN 或 VAE 的缺点:
马尔可夫模型有两个假设:
1、无后效性
具有马尔科夫性质的状态满足下面公式:
P ( S t + 1 ∣ S t ) = P ( S t + 1 ∣ S 1 , . . . , S t ) P(S_{t+1}|S_t)=P(S_{t+1}|S_1,...,S_t) P(St+1∣St)=P(St+1∣S1,...,St)
上述公式的意义:
2、齐次性
对状态
s
s
s 和后继状态
s
′
s'
s′,状态转移概率定义为:
P
s
s
′
=
P
[
S
t
+
1
=
s
′
∣
S
t
=
s
]
P_{ss'}=P[S_{t+1}=s'|S_t=s]
Pss′=P[St+1=s′∣St=s]
状态转移矩阵 P 定义了从 s s s 转移到后继状态 s ′ s' s′ 的概率:
其中的每行和为1:
比如掷骰子游戏,当前的点数为1
再一次掷骰子得到的点数的概率,即使我们不知道下一个具体点数的概率,但是我们知道下一个点数是1,2,3,4,5,6中的某一点,那么就会有:
马尔可夫过程:
马尔科夫过程一个无记忆的随机过程,是一些具有马尔科夫性质的随机状态序列构成,可以用一个元组 <S,P> 表示:
1、State:状态
State 是能够描述整个扩散模型过程的一系列数据:
2、Process 和 Transition Kernel
前向和逆向的过程如下所示:
对于非离散情况,任何时间 0 < = t < s < 1 0<=t<s<1 0<=t<s<1 的前向过程如下:
3、Pipeline:
假设定义 sampled data 为 x ~ 0 \widetilde{x}_0 x 0,则整个过程可以描述如下:
4、离散和连续过程
与离散过程相比,连续过程能够从任何时间状态中提取任何信息
如果扰动核的变化足够小,则连续过程有更好的理论支撑
5、训练目标
扩散模型是生成模型的一个子类,和 VAE 的目标函数类似,目标是让初始分布 x 0 x_0 x0 和采样分布 x ~ 0 \widetilde{x}_0 x 0 尽可能的接近。
通过最大化如下 log-likelihood 公式来实现,其中 σ ~ \widetilde{\sigma} σ 在前向和逆向过程中是不同的:
1、Denoised Diffusion Probabilistic Model(DDPM):去噪扩散概率模型
NIPS 2021 的论文 ‘Denoising diffusion probabilistic models’ 中对扩散概率模型进行了改进,提出了 DDPM:
DDPM Forward Process:
DDPM 使用一系列的噪声系数 β 1 \beta_1 β1、 β 2 \beta_2 β2 … β T \beta_T βT 作为不同时刻的 Markov trasition kernel。
一般都使用常数、线性规则、cosine 规则 来选择噪声系数,而且 [68] 中也证明了不同的噪声系数在实验中也没有明显的影响
DDPM 的前向过程定义如下:
根据从 x 0 x_0 x0 到 x T x_T xT 的扩散步骤, Forward Diffusion Process 如下:
DDPM Reverse Process:
逆向过程使用可学习的 Gaussian trasition 参数 θ \theta θ 来定义如下:
逐步从 x T x_T xT 复原到 x 0 x_0 x0 的过程如下,假设过程为 p ( x T ) = N ( x T ; 0 , I ) p(x_T) = N(x_T;\ 0, I) p(xT)=N(xT; 0,I):
所以, p θ ( x 0 ) = ∫ p θ ( x 0 : T ) d x 1 : T p_{\theta}(x_0)=\int p_{\theta}(x_{0:T})dx_{1:T} pθ(x0)=∫pθ(x0:T)dx1:T 的分布就是 x ~ 0 \widetilde{x}_0 x 0 的分布
Diffusion Training Objective:为了最小化 negative log-likelihood (NLL),则最小化问题转换为:
下图是 PPDM 的 pipeline:
2、Score Matching Formulation
score matching 模型是为了解决原始数据分布的估计问题,通过近似数据的梯度 ∇ x l o g p ( x ) \nabla_xlogp(x) ∇xlogp(x) 来实现,这也称为 score。
两个相邻状态的 transition kernel 为:
Score matching 过程:
score matching 的核心是训练一个得分估计网络
s
θ
(
x
,
σ
)
s_{\theta}(x, \sigma)
sθ(x,σ) 来预测得分。
DSM:
尽管扩散模型目前取得了很好的生成效果,到其逐步去噪的过程涉及非常多的迭代步骤,故此扩散模型的加速是很重要的研究课题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。