扩散模型(Diffusion Model)的简单理解

本文介绍了生成扩散模型,特别是DDPM,如何在2020年凭借其在图像合成中的优势超越GAN。文中对比了GAN和扩散模型的优缺点,强调了扩散模型的稳定性和可控性,以及其在深度学习中的应用,如信号传播和分布建模。

介绍

如今生成扩散模型的大火,则是始于2020年所提出的 DDPM(Denoising Diffusion Probabilistic Model),仅在 2020 年发布的开创性论文 DDPM 就向世界展示了扩散模型的能力,在图像合成方面已经全面击败了GAN,所以讲扩散模型运用到计算机视觉领域的其他方面也是当下的焦点。

Diffusion Model 与 GAN的简单对比

1.GAN网络也叫生成对抗性网络,是一种基于深度学习的生成模型,采用有监督的学习方法,使用两个训练模型:生成新数据的生成器模型和鉴别事物是否真实的鉴别器模型。两个子模型相互竞争训练,直到鉴别器无法判断生成器生成的样本与真实样本的偏差,也就意味着生成器模型生成了一个非常逼真的样本。GAN的网络结构如下图所示:
Alt

2.扩散模型是用于生成与训练数据相似的数据。同样是采用有监督的学习方法,通过连续添加高斯噪声来破坏训练数据,然后通过反转这个噪声去学习恢复数据。主要分为前向加噪和后向去噪两个过程。在前向过程中将每个时刻引入的随机高斯噪声进行标记作为真实标签,反向去噪过程中用预测的噪声和真实噪声建立损失函数关系进行训练从而达到恢复数据的目的。Diffusion Model的网络结构如下图所示:

Alt

3.两者对比:
(1)GAN网络要训练生成器和判别器两个网络,难度较大,而且不容易收敛。在生成和对抗的竞争关系中,每个模型都可以压倒另一个:如果鉴别器太好,它将返回非常接近0或1的值,造成生成器难以获得更新的梯度;如生成器太好,它就会抓住鉴别器的弱点,生成欺骗鉴别器的样本,造成生成的图像质量不高,多样性差。

(2)相较于 GAN,扩散模型具有更好的稳定性和可控性,并且可以通过最小化凸回归损失来有效解决鞍点问题,并且在Open AI 发布的DALLE2模型中已经成功代替了GAN网络。

Diffusion Model的工作原理

(1)Forward:前向过程连续添加高斯噪声,求得某时刻的分布,具体过程如下图所示:
在这里插入图片描述
(2)Reverse:后向去噪过程来恢复数据,通俗点讲就是根据某一时刻的分布来恢复原始输入,具体过程如下图所示:
在这里插入图片描述
(3)整个过程分为训练和采样两个阶段,训练过程就是学习每一步加入的高斯噪声,采样过程就是推断过程,给定某一时刻的全噪声图片,从t = T开始逐步去噪,最终生成初始图像。
在这里插入图片描述

总结

在深度学习中,扩散模型可以用来建模图像、视频、语音等信号的分布和演化过程。扩散模型的具体方法包括扩散过程、逆扩散过程和损失函数。扩散过程描述了信息在空间中传播和分布的过程,逆扩散过程描述了信息从终点向初始点的传播和分布的过程。损失函数用来衡量扩散模型的预测结果与真实结果之间的差异。总结来说,扩散模型可以帮助我们理解和预测信号在空间中的传播和分布过程。

参考文档

link
link

### 扩散模型Diffusion Model)及其变体DDPM的解释 扩散模型是一种基于概率生成模型的方法,其核心思想在于通过一系列逐步加噪的过程将数据分布转换为简单的噪声分布,并学习逆过程以从简单分布恢复原始数据分布。这一机制使得扩散模型能够有效地捕捉复杂的高维数据分布。 #### Diffusion Models 的基本原理 扩散模型的核心可以分为两个阶段:前向扩散过程反向去噪过程。 - **前向扩散过程**是指通过对输入数据逐渐增加噪声来将其转化为接近标准正态分布的形式[^2]。此过程中每一步都由一个马尔可夫链定义,其中每一时间步 $t$ 都会引入一定量的噪声 $\epsilon_t \sim N(0, I)$ 到当前状态上。 - **反向去噪过程**则是指训练神经网络预测给定带噪样本中的噪声成分并尝试还原未受污染的数据版本。具体来说,在该方向上的目标函数设计旨在最小化均方误差损失以便更好地估计条件期望值: $$ L_{\text{simple}}(\theta)=\mathbb {E} _{{{\boldsymbol {\epsilon }}_t,{\tilde {{\boldsymbol {x}}}_T}\sim q({\tilde {{\boldsymbol {x}}}_T)}}[\Vert f_\theta ({\tilde {{\boldsymbol {x}}}_{t},{t})-\beta _t^{1/2}{\boldsymbol {\epsilon }}_t\Vert ^2]. $$ 这里 ${f_\theta}$ 表示参数化的 U-net 结构用于近似真实梯度场;而超参 β 控制着各时刻间转移强度大小关系 [^1]. #### Denoising Diffusion Probabilistic Models (DDPMs) Denoising Diffusion Probabilistic Models 是一类特定类型的扩散模型,它专注于优化上述提到的反向过程效率问题。相比传统 GAN 或 VAE 方法而言,DDPM 不仅提供了更稳定可靠的训练流程而且还能生成高质量图片成果。主要特点如下: - 使用深度卷积架构作为基础框架构建强大的特征提取器; - 引入自回归技术进一步增强局部依赖建模能力从而提升整体性能表现水平; - 设计新颖有效的调度策略调整不同迭代周期内的噪音级别变化规律以促进更快收敛速度同时保持良好视觉效果质量不变 。 ```python import torch.nn as nn class UNet(nn.Module): def __init__(self,...): super().__init__() ... def forward(self,x,timesteps=None): ... def p_sample_loop(model,shape,diffusion_steps,beta_start=0.0001,beta_end=0.02): betas=torch.linspace(beta_start,beta_end,diffusion_steps) alphas=(1-betas).cumprod(dim=0) imgs=[] img=torch.randn(*shape) for i in reversed(range(diffusion_steps)): t=torch.full((shape[0],),i,dtype=torch.long) predicted_noise=model(img.unsqueeze(0)).squeeze() alpha=alphas[i] beta=betas[i] if i>0: noise=torch.randn_like(img) else : noise=0 img=(img-predicted_noise*torch.sqrt((1-alpha)/alpha)+noise*torch.sqrt(beta))/torch.sqrt(alpha) imgs.append(img.detach().cpu()) return imgs[-1] ``` 以上代码片段展示了如何利用 PyTorch 实现一个简化版的 DDPM 反向采样循环逻辑。注意实际应用当中还需要考虑更多细节部分比如批量标准化处理方式等等因素影响最终输出图像品质高低差异情况 [^1]. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值