IT评测·应用市场-qidao123.com技术社区

标题: 重生之我是去噪高手——diffusion model [打印本页]

作者: 吴旭华    时间: 2025-4-6 23:39
标题: 重生之我是去噪高手——diffusion model
diffusion model是如何运作的?

想象一下,你有一张清楚的图片。扩散模子的焦点头脑分为两个过程:

1. 前向过程(逐步加噪) - 破坏图像


类比:
想象把一滴墨水滴入清水中,墨水会徐徐扩散(加噪),直到整杯水变成均匀的淡玄色(纯噪声)。
PS:

前向过程提供了问题-答案对,即噪声阶段和对映的噪声。这个可以为反向过程提供练习的数据。简朴来说,前向过程就是故意弄脏图片,并且记录下是怎么弄脏的,目的是为了给 AI 提供学习“如何把脏图片变干净”的练习材料和学习目的。
马尔可夫链的焦点头脑是:“未来只取决于现在,与过去无关。”

2. 反向过程(逐步去噪) - 学习天生


类比:
想象观看墨水扩散的录像带并倒放。神经网络就像一个“物理学家”,它学习如安在每个时间点精确地把扩散开的墨水粒子“收回”一点点,最终规复成一滴清楚的墨水。

练习过程(如何学习去噪)

模子是如何学会预测噪声的呢?
通过这个过程,神经网络徐徐学会了在任何噪声水平                                    t                              t                  t 下,从噪声图像                                              x                            t                                       x_t                  xt​ 中准确地识别并预测出被添加的噪声。

天生新图片(Sampling)

练习完成后,如何天生一张全新的图片?

总结



diffusion model的数学原理

1. 前向过程 (Forward Process / Diffusion Process)

这是一个固定预定义的马尔可夫链,它徐徐向数据                                              x                            0                                       x_0                  x0​(来自真实数据分布                                    q                         (                                   x                            0                                  )                              q(x_0)                  q(x0​))添加高斯噪声,颠末                                    T                              T                  T 步后得到近似纯噪声                                              x                            T                                       x_T                  xT​。

PS:整个过程类似于“要得到下一张更模糊的图片 x_t,先把当前图片 x_{t-1} 轻微‘弄暗’一点点(公式中的sqrt(1 - β_t) * x_{t-1}:这是正态分布的均值(μ),也就是 x_t 最大概变成的样子),然后再给它撒上一层‘强度’为 β_t 的随机‘雪花’(公式中的β_t * I:这是正态分布的方差(σ²),代表添加的噪声的“大小”或“散布程度”。)。” 这个过程重复 T 次。

PS:“第 t 步的噪声图片 x_t,其实就是(原始图片 x₀ 褪色 t 步后的残影)加上 (一个标准噪声 ε 被放大 t 步对应倍数后的结果)。t 越小,x_t 越像 x₀;t 越大,x_t 越像纯噪声 ε。”

2. 反向过程 (Reverse Process / Denoising Process)

这部门是我们需要学习的过程。目的是从噪声
                                                    x                               T                                      ∼                            N                            (                            0                            ,                            I                            )                                  x_T \sim \mathcal{N}(0, I)                     xT​∼N(0,I)
开始,逐步反向运行该过程,最终天生一个样本                                              x                            0                                       x_0                  x0​,使其看起来像真实数据分布                                    q                         (                                   x                            0                                  )                              q(x_0)                  q(x0​) 中的样本。


3. 练习目的 (Learning Objective)

我们盼望最大化练习数据                                              x                            0                                       x_0                  x0​ 的对数似然                                    log                         ⁡                                   p                            θ                                  (                                   x                            0                                  )                              \log p_\theta(x_0)                  logpθ​(x0​)。直接优化此目的较为困难,因此与变分自编码器(VAE)类似,我们通过优化证据下界(Evidence Lower Bound, ELBO,也称 Variational Lower Bound, VLB)来间接练习模子。
PS:直接盘算 p_θ(x₀) 这个概率极其困难。因为它涉及到 AI 大概通过的所有“去噪步调”最终得到 x₀ 的所有大概路径,这太复杂了!

PS:如果我们想办法把 ELBO (L_VLB) 的值只管提高,那么我们也就间接地把真正的目的                                    log                         ⁡                                   p                            θ                                  (                                   x                            0                                  )                              \log p_\theta(x_0)                  logpθ​(x0​) 提高了(至少不会让它变差)。以是,我们不去优化谁人困难的                                    log                         ⁡                                   p                            θ                                  (                                   x                            0                                  )                              \log p_\theta(x_0)                  logpθ​(x0​),而是优化相对容易处理惩罚的 ELBO (L_VLB)。
(其中                                    p                         (                                   x                            T                                  )                              p(x_T)                  p(xT​) 项由于不依赖于参数                                    θ                              \theta                  θ 可忽略)进一步分解为:
                                                    L                                           V                                  L                                  B                                                 =                                       E                               q                                      [                            log                            ⁡                                       p                               θ                                      (                                       x                               0                                      ∣                                       x                               1                                      )                            ]                            −                                       D                                           K                                  L                                                 (                            q                            (                                       x                               T                                      ∣                                       x                               0                                      )                             ∥                             p                            (                                       x                               T                                      )                            )                            −                                       ∑                                           t                                  =                                  2                                          T                                                 E                               q                                      [                                       D                                           K                                  L                                                 (                            q                            (                                       x                                           t                                  −                                  1                                                 ∣                                       x                               t                                      ,                                       x                               0                                      )                             ∥                                        p                               θ                                      (                                       x                                           t                                  −                                  1                                                 ∣                                       x                               t                                      )                            )                            ]                            .                                  L_{\mathrm{VLB}} = \mathbb{E}_q\Big[\log p_\theta(x_0\mid x_1)\Big] - D_{\mathrm{KL}}\big(q(x_T\mid x_0) \,\|\, p(x_T)\big) - \sum_{t=2}^{T} \mathbb{E}_q\Big[D_{\mathrm{KL}}\big(q(x_{t-1}\mid x_t, x_0) \,\|\, p_\theta(x_{t-1}\mid x_t)\big)\Big].                     LVLB​=Eq​[logpθ​(x0​∣x1​)]−DKL​(q(xT​∣x0​)∥p(xT​))−t=2∑T​Eq​[DKL​(q(xt−1​∣xt​,x0​)∥pθ​(xt−1​∣xt​))].
PS:                                             p                            θ                                  (                                   x                            0                                  ∣                                   x                            1                                  )                              p_θ(x₀|x₁)                  pθ​(x0​∣x1​):表现 AI 在去噪的末了一步(从轻微有点噪声的 x₁ 变成清楚的 x₀)时,把图片还原得有多好。
                                              D                            K                                  L                         (                         q                         (                                   x                            T                                  ∣                                   x                            0                                  )                         ∣                         ∣                         p                         (                                   x                            T                                  )                         )                              D_KL(q(x_T|x₀) || p(x_T))                  DK​L(q(xT​∣x0​)∣∣p(xT​)) (噪声匹配 - 练习时可忽略)这部门只跟固定的前向过程和我们对噪声的固定假设有关,跟 AI 的参数 θ 无关。既然跟我们要优化的 θ 无关,那么在练习 AI(优化 θ)时就可以忽略它。
                                    Σ                                   E                            q                                  [                                   D                            K                                  L                         (                         q                         (                                   x                                       t                               −                               1                                            ∣                                   x                            t                                  ,                                   x                            0                                  )                         ∣                         ∣                                   p                            θ                                  (                                   x                                       t                               −                               1                                            ∣                                   x                            t                                  )                         )                         ]                              Σ E_q[D_KL(q(x_{t-1}|x_t, x₀) || p_θ(x_{t-1}|x_t))]                  ΣEq​[DK​L(q(xt−1​∣xt​,x0​)∣∣pθ​(xt−1​∣xt​))] (一步步去噪的匹配 - 焦点部门!):
这是练习中最紧张的部门。它是对所有中间去噪步调(从 t=T 到 t=2)求和。
                                    q                         (                                   x                                       t                               −                               1                                            ∣                                   x                            t                                  ,                                   x                            0                                  )                              q(x_{t-1}|x_t, x_0)                  q(xt−1​∣xt​,x0​):这是如果我们有“作弊码”(知道原始清楚图片 x₀),从 x_t 回到 x_{t-1} 的“理想方式”或“精确答案”。我们知道它是一个精确的高斯分布                                    N                         (                                              μ                               ~                                      t                                  ,                                              β                               ~                                      t                                  I                         )                              N(μ̃_t, β̃_t I)                  N(μ~​t​,β~​t​I)。这是我们每一步的目的。
                                              p                            θ                                  (                                   x                                       t                               −                               1                                            ∣                                   x                            t                                  )                              p_θ(x_{t-1}|x_t)                  pθ​(xt−1​∣xt​):这是我们的 AI 模子在第 t 步实际做的事情,它只看到当前的 x_t,尝试推测 x_{t-1} 应该是什么样子。我们也把它设计成一个高斯分布                                    N                         (                                   μ                            θ                                  ,                                   σ                            t                            2                                  I                         )                              N(μ_θ, σ_t² I)                  N(μθ​,σt2​I)。这是 AI 的预测。
                                              D                            K                                  L                         (                         .                         .                         .                         )                              D_KL(...)                  DK​L(...):KL 散度是权衡这两个概率分布(理想的 q 和 AI 预测的 p_θ)有多么“不像”或“差别多大”。
目的:为了最大化 ELBO,我们需要在每一步都最小化这个 KL 散度。我们盼望 AI 的预测 (p_θ) 尽大概地接近理想目的 (q)。

这个基于 L2 的损失函数在实践中表现良好,具有练习稳定性和实现简便性。

4. 采样 (Sampling / Generation)

在模子练习完成后,天生新样本的过程如下:

总结关键数学概念




总结练习算法: 反复地:① 拿张真图 → ② 随机加噪声(记着加了啥噪声)→ ③ 让 AI 猜加了啥噪声 → ④ 对比真实噪声和 AI 的推测 → ⑤ 根据差距调整 AI → 直到 AI 成为猜噪声高手。
总结采样算法: ① 从纯噪声开始 → ② 反复 T 次(从 T 到 1):(a) 让练习好的 AI 预测当前图片中的噪声 → (b) 从图片中减掉预测的噪声 → © 调整一下图片 → (d) 再加一点点新的随机噪声(末了一步除外)→ ③ 得到最终天生的图片。
一系列问答

1.                                                    p                               θ                                            p_\theta                     pθ​ 是模子本身吗?还是模子天生出好图片的概率?


2. ELBO 推导:                                                   L                                           V                                  L                                  B                                                       L_{VLB}                     LVLB​ 为什么等于右边?
这里涉及两个等式,我们分开表明:


3. KL 散度 (Kullback-Leibler Divergence)


4.                                                    E                               q                                            E_q                     Eq​ 是什么意思?                                        q                                  q                     q 是什么意思?


5. 最小化 KL 散度的过程是怎样的?


6. 什么叫重构项?


7. 双竖线                                         ∣                            ∣                                  ||                     ∣∣ 是什么意思?                                        p                                  p                     p 和                                         q                                  q                     q 是概率分布吗?


8. 应该如何最小化它们的平方误差?


9.                                                    ϵ                               θ                                            \epsilon_\theta                     ϵθ​ 具体是个什么东西?是模子输出的结果吗?


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4