扩散模型(diffusion model)快速理解

本文基于李宏毅教授的讲解,详细阐述了多模态模型中的前向传播与逆向传播过程,特别是U-net模型的应用。同时探讨了为什么分步训练和噪声的重要性,以及扩散模型如何从含有信息的噪声中还原图片。文中还揭示了扩散模型的自监督特征提取机制和噪音预测网络的泛化能力。

一. 序言

        笔者最近学习多模态相关的论文,有些基础知识和模型再论文或者其他的文章中都体现的很复杂。但是台大李宏毅教授对这些知识的解释都很通俗,且非常清晰,因此这文章的是以他的视频为基础解释的。

二. 模型结构

1. 前向传播

概念

        前向传播的过程通过生成的噪音通过马尔科夫链给原始图片加噪,相当于是在生成训练样本和标签。这里样本是每一步生成的带噪音的图片,标签则是给每一步加上的噪音值。因为需要预测每张图片所对应的噪音,让噪音图片减去噪音来实现去噪才是模型训练的最终目的。

具体实现(U-net 模型训练)

标注都有,非常清晰

2. 逆向传播

        逆向传播的过程相当于借助训练好的模型预测第t-1张图片到t张图片所添加的噪音通过第t张图片和预测的噪音运算得到第t-1张图片。最终,连续进行逆向传播得到无噪声图片。

        逆向传播的训练即为模型提取图像特征,从纯噪音无图像信息的图片借助提取的特征逐步生成一张图片。

三. 特殊的模型结构解释

1.  为什么要一步一步训练而不是直接通过Xt和X0进行训练呢?z又是为何存在呢?

        类似于形成语言和声音的模型,通过在每一步中添加不确定的噪音提高模型的表现,更加接近人类的视觉和表达。

 论证的实验:

增加噪音z后可以正常生成图片但是去除噪音后就效果不佳

2. 纯噪声没有图片信息也能通过扩散模型还原出一张带信息图片?

        不能,在扩散模型中,我们通常所说的“纯噪声”其实是指含有大量噪声的图片,而不是完全没有任何信息的噪声。这些噪声图片在经过扩散模型处理后,可以恢复出原始的、含有丰富信息的图片。

        这里的纯噪音应该只是含有大量噪音的具有图片信息的图片,而预测的噪音则带有图片信息所以噪音也可以作为原图的特征图,因为扩散模型是借助带噪声图片生成噪音的,说明扩散模型可以提取图片信息因此噪声带有图片信息

        这也给后续许多模型借助扩散模型自监督提取图片特征打下了基础。而且训练时并不是采取整个模型的loss去训练扩散模型的参数,而是通过扩散模型自带的噪音预测网络的损失来训练噪音预测网络的根本是借助带噪声图片预测噪声,因此具有泛化性,不会拟合于特定图片。

Dif-Fusion

通过模型中各个阶段提取的图像特征结合获取提取的图像特征

### 扩散模型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、付费专栏及课程。

余额充值