【算法解析】扩散模型中的Noise Scheduler技术解析

在深度学习领域,扩散模型(Diffusion Models)近年来受到了广泛的关注,特别是在图像生成领域。本文将深入探讨扩散模型中的核心组件之一——Noise Scheduler,以及其在生成高质量图像过程中的作用。

Diffusers库中的Schedulers

Diffusion模型的实现依赖于两个核心组件:模型(models)和调度器(schedulers)。Diffusers库提供了丰富的模型和调度器实现,用于构建和训练扩散模型。

扩散模型的通用流程

在训练过程中,扩散模型首先生成一个与输入图像相同尺寸的噪声图像。在每个时间步(timestep),模型会预测噪声残差,然后调度器根据预测出的噪声残差生成一张噪声较少的图像。这个过程会重复进行,直到达到预设的最大时间步,最终生成一张高质量的图像。

Scheduler与PyTorch Scheduler的区别

在扩散模型中,Scheduler是一个采样器,用于将噪声图像还原为原始图像。而在PyTorch中,Scheduler通常指的是学习率调整策略,如余弦退火策略或指数衰减策略。

核心Schedulers原理

1. DDPM (Denoising Diffusion Probabilistic Models)

DDPM是扩散模型的一个经典实现,其模型和调度器对应于论文中的两个算法。

Model学习

模型的学习对应于算法1:

DDPM Model Learning

加噪过程可以表示为:
x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon xt=αˉt x0+1αˉt ϵ

其中, α ˉ t \bar{\alpha}_t αˉt 是人为设置的超参数序列,随着时间步 t t t的增加而减小。 α t \alpha_t αt β t \beta_t βt 得到, α t = 1 − β t \alpha_t = 1 - \beta_t αt=1βt β 1 , β 2 , ⋯   , β T \beta_1, \beta_2, \cdots, \beta_T β1,β2,,βT 是超参数,随着 t t t 的增大, β t \beta_t βt 逐步变大, α ˉ t \bar{\alpha}_t αˉt 逐步变小。

预测的噪声为:
ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) \epsilon_{\theta}(\sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon, t) ϵθ(αˉt x0+1αˉt ϵ,t)
与模型参数 θ \theta θ 相关, t t t 代表当前的时间步。

Scheduler设计

Scheduler的设计对应于算法2:

DDPM Scheduler Design

训练好的模型从最后一个时刻 T T T 开始,传入一个纯噪声图像,逐步进行去噪,从 x t x_t xt 推出 x t − 1 x_{t-1} xt1

去噪过程可以表示为:
x t − 1 = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) x_{t-1} = \frac{1}{\sqrt{\alpha_{t}}} \left( x_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}_{t}}} \epsilon_{\theta}(x_t, t) \right) xt1=αt 1(xt1αˉt βtϵθ(xt,t))

其中, σ t z \sigma_t \mathbf{z} σtz 是为了增加推理中的随机性而额外增加的项,类似于GPT中为了增加回答多样性而引入的随机选择方法。

σ t 2 = ( 1 − α t ) ( 1 − α ˉ t − 1 ) 1 − α ˉ t \sigma_t^2 = \frac{(1-\alpha_t)(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t} σt2=1αˉt(1αt)(1αˉt1)

在DDPM论文中,已通过实验证明可以使用 σ t 2 = β t \sigma_t^2 = \beta_t σt2=βt,因此源码中也选用了后者。

总结

通过上述分析,我们可以看到Noise Scheduler在扩散模型中扮演着至关重要的角色。它不仅负责将噪声图像逐步还原为原始图像,还通过引入随机性来增加生成图像的多样性。DDPM作为扩散模型的一个经典实现,其模型和调度器的设计为我们提供了深入理解扩散模型的窗口。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值