免费晋江网站建设,北京网站建设交易,手机网站建站教育模板,网络优化的三个方法Diffusion 公式推导 中对 DDPM 进行了推导#xff0c;本文接着对 DDIM 进行推导。 目录 六. 模型改进 六. 模型改进
从扩散模型的推理过程不难看出#xff0c;DDPM 有一个致命缺点 —— 推理速度过慢#xff0c;因为逆扩散是从 x T x_{T} xT 到 x 0 x_{0} x0 的完整过…Diffusion 公式推导 中对 DDPM 进行了推导本文接着对 DDIM 进行推导。 目录 六. 模型改进 六. 模型改进
从扩散模型的推理过程不难看出DDPM 有一个致命缺点 —— 推理速度过慢因为逆扩散是从 x T x_{T} xT 到 x 0 x_{0} x0 的完整过程无法跳过中间的迭代过程。为了加快推理过程DDIM (Denoising Diffusion Implicit Models) 对 DDPM 进行了改进采用的是一个非马尔科夫过程使得生成过程可以在更少的时间步内完成。
从原理角度来看 1DDIM 假设 q ( x t − 1 ∣ x 0 , x t ) q (x_{t-1} \mid x_0, x_t) q(xt−1∣x0,xt) 是一个高斯分布对其进行待定系数 q ( x t − 1 ∣ x 0 , x t ) ∼ N ( k x 0 m x t , σ 2 ) (21) q (x_{t-1} \mid x_0, x_t) \sim \mathcal{N}\left(kx_0mx_t, \sigma^2\right) \tag{21} q(xt−1∣x0,xt)∼N(kx0mxt,σ2)(21)
因此有 x t − 1 k x 0 m x t σ ϵ 其中 ϵ ∼ N ( 0 , I ) (22) x_{t-1} kx_0mx_t \sigma \epsilon \quad \text{ 其中 } \epsilon \sim \mathcal{N}(0, \bold I) \tag{22} xt−1kx0mxtσϵ 其中 ϵ∼N(0,I)(22)
将7式代入得到 x t − 1 k x 0 m x t σ ϵ k x 0 m ( α ‾ t x 0 1 − α ‾ t ϵ ‾ 0 ) σ ϵ ( k m α ‾ t ) x 0 m 1 − α ‾ t ϵ ‾ 0 σ ϵ ( k m α ‾ t ) x 0 ϵ ′ (23) \begin{aligned} x_{t-1} kx_0mx_t \sigma \epsilon\\ kx_0m(\sqrt{\overline{\alpha}_t} x_{0} \sqrt{1-\overline{\alpha}_t} \overline \epsilon_{0}) \sigma \epsilon\\ (km\sqrt{\overline{\alpha}_t})x_0 m\sqrt{1-\overline{\alpha}_t} \overline \epsilon_{0} \sigma \epsilon\\ (km\sqrt{\overline{\alpha}_t})x_0 \epsilon \end{aligned} \tag{23} xt−1kx0mxtσϵkx0m(αt x01−αt ϵ0)σϵ(kmαt )x0m1−αt ϵ0σϵ(kmαt )x0ϵ′(23)
其中 m 1 − α ‾ t ϵ ‾ 0 σ ϵ m\sqrt{1-\overline{\alpha}_t} \overline \epsilon_{0} \sigma \epsilon m1−αt ϵ0σϵ 可以合并成 ϵ ′ \epsilon ϵ′ 是因为高斯分布的可加性因此有 ϵ ′ ∼ N ( 0 , m 2 ( 1 − α ‾ t ) σ 2 ) \epsilon \sim \mathcal{N}(0, m^2(1-\overline{\alpha}_t) \sigma^2) ϵ′∼N(0,m2(1−αt)σ2)。
将7式变换成 x t − 1 x_{t-1} xt−1 的形式然后和23式联立 x t − 1 α ‾ t − 1 x 0 1 − α ‾ t − 1 ϵ ‾ 0 x t − 1 ( k m α ‾ t ) x 0 ϵ ′ \begin{aligned} x_{t-1} \sqrt{\overline{\alpha}_{t-1}} x_{0} \sqrt{1-\overline{\alpha}_{t-1}} \overline \epsilon_{0}\\ x_{t-1} (km\sqrt{\overline{\alpha}_t})x_0 \epsilon \end{aligned} xt−1xt−1αt−1 x01−αt−1 ϵ0(kmαt )x0ϵ′
对应项系数相等得到 α ‾ t − 1 k m α ‾ t 1 − α ‾ t − 1 m 2 ( 1 − α ‾ t ) σ 2 (24) \begin{aligned} \sqrt{\overline{\alpha}_{t-1}} km\sqrt{\overline{\alpha}_t}\\ 1-\overline{\alpha}_{t-1} m^2(1-\overline{\alpha}_t) \sigma^2 \end{aligned} \tag{24} αt−1 1−αt−1kmαt m2(1−αt)σ2(24)
因此有 m 1 − α ‾ t − 1 − σ 2 1 − α ‾ t k α ‾ t − 1 − 1 − α ‾ t − 1 − σ 2 1 − α ‾ t α ‾ t (25) \begin{aligned} m \sqrt{\frac{1-\overline{\alpha}_{t-1} - \sigma^2}{1-\overline{\alpha}_t}}\\ k \sqrt{\overline{\alpha}_{t-1}} - \sqrt{\frac{1-\overline{\alpha}_{t-1} - \sigma^2}{1-\overline{\alpha}_t}} \sqrt{\overline{\alpha}_t}\\ \end{aligned} \tag{25} mk1−αt1−αt−1−σ2 αt−1 −1−αt1−αt−1−σ2 αt (25)
和 DDPM 逆扩散过程一样代入7式将 x 0 x_0 x0 替换成 x t x_t xt 表示再将25式代入22式得到 x t − 1 k x 0 m x t σ ϵ ( α ‾ t − 1 − 1 − α ‾ t − 1 − σ 2 1 − α ‾ t α ‾ t ) ( x t − 1 − α ‾ t ϵ ‾ 0 α ‾ t ) 1 − α ‾ t − 1 − σ 2 1 − α ‾ t x t σ ϵ α ‾ t − 1 α ‾ t x t ( 1 − α ‾ t − 1 − σ 2 − α ‾ t − 1 ( 1 − α ‾ t ) α ‾ t ) ϵ ‾ 0 σ ϵ 1 α t x t ( 1 − α ‾ t − 1 − σ 2 − 1 − α ‾ t α t ) ϵ ‾ 0 σ ϵ (26) \begin{aligned} x_{t-1} kx_0mx_t \sigma \epsilon\\ (\sqrt{\overline{\alpha}_{t-1}} - \sqrt{\frac{1-\overline{\alpha}_{t-1} - \sigma^2}{1-\overline{\alpha}_t}} \sqrt{\overline{\alpha}_t})(\frac{x_t - \sqrt{1-\overline{\alpha}_t} \overline \epsilon_{0}}{\sqrt{\overline{\alpha}_t}}) \sqrt{\frac{1-\overline{\alpha}_{t-1} - \sigma^2}{1-\overline{\alpha}_t}}x_t \sigma \epsilon\\ \sqrt{\frac{\overline{\alpha}_{t-1}}{\overline{\alpha}_t}}x_t (\sqrt{1-\overline{\alpha}_{t-1} - \sigma^2}-\sqrt{\frac{\overline{\alpha}_{t-1}(1-\overline{\alpha}_t)}{\overline{\alpha}_t}}) \overline \epsilon_{0} \sigma \epsilon\\ \frac{1}{\sqrt{\alpha_t}}x_t \left(\sqrt{1-\overline{\alpha}_{t-1} - \sigma^2}-\sqrt{\frac{1-\overline{\alpha}_t}{\alpha_t}}\right) \overline \epsilon_{0} \sigma \epsilon\\ \end{aligned} \tag{26} xt−1kx0mxtσϵ(αt−1 −1−αt1−αt−1−σ2 αt )(αt xt−1−αt ϵ0)1−αt1−αt−1−σ2 xtσϵαtαt−1 xt(1−αt−1−σ2 −αtαt−1(1−αt) )ϵ0σϵαt 1xt(1−αt−1−σ2 −αt1−αt )ϵ0σϵ(26) ϵ ‾ 0 \overline \epsilon_{0} ϵ0 通过 U-Net 进行预测其他都是已知参数。网上的教程都是推导到26式处就说不是马尔科夫假设所以不需要严格遵守 x t → x t − 1 x_{t} \rightarrow x_{t-1} xt→xt−1 2 3。也有从相隔多个迭代步数采样向前推的参见 一个视频看懂DDIM凭什么加速采样|扩散模型相关。 \ \
总之DDIM 推理时可以隔多步进行采样通过一个确定性映射直接将噪声转换为数据避免了 DDPM 中的随机性在减少生成时间步的同时保持生成图像的高质量。推理过程中的确定性映射表示如下 x τ i − 1 α ˉ τ i − 1 ( x τ i − 1 − α ˉ τ i ϵ θ ( x τ i , τ i ) α ˉ τ i ) 1 − α ˉ τ i − 1 − σ τ i 2 ϵ θ ( x τ i , τ i ) \mathbf{x}_{\tau_{i-1}} \sqrt{\bar{\alpha}_{\tau_{i-1}}} \left( \frac{\mathbf{x}_{\tau_i} - \sqrt{1 - \bar{\alpha}_{\tau_i}} \epsilon_\theta(\mathbf{x}_{\tau_i}, \tau_i)}{\sqrt{\bar{\alpha}_{\tau_i}}} \right) \sqrt{1 - \bar{\alpha}_{\tau_{i-1}} - \sigma_{\tau_i}^2} \epsilon_\theta(\mathbf{x}_{\tau_i}, \tau_i) xτi−1αˉτi−1 (αˉτi xτi−1−αˉτi ϵθ(xτi,τi))1−αˉτi−1−στi2 ϵθ(xτi,τi)
其中 τ { τ 1 , τ 2 , . . . , τ N } \tau \{ \tau_1, \tau_2, ..., \tau_N \} τ{τ1,τ2,...,τN} 是时间步长序列。通过这个机制DDIM 可以在生成过程中跳过多个步骤。
https://zhuanlan.zhihu.com/p/675510886 一文带你看懂DDPM和DDIM含原理简易推导pytorch代码 ↩︎ DDPM与DDIM简洁版总结 ↩︎ DDPM和DDIM公式推导。(精简版) ↩︎