从噪声到秩序:扩散模型 Sigma 的数学地图

目录
- 1. 什么是 Sigma
- 2. 扩散模型基本框架
- 3. Sigma 的数学定义
- 4. Sigma 在扩散过程中的作用
- 5. Sigma 与噪声调度
- 6. 离散时间与连续时间下的 Sigma
- 7. Sigma 在采样中的应用
- 8. 不同扩散模型中的 Sigma 实现
- 9. Sigma 与训练稳定性
- 10. Sigma 加权损失函数
- 11. Sigma 的条件输入编码
- 12. ODE 采样中 Sigma 消失的理论解释
- 13. Sigma 与 CFG 的交互
- 14. EDM 框架中的 Sigma 调度
- 15. 数值稳定性
- 16. Sigma 的可视化理解
- 17. 总结
1. 什么是 Sigma
在扩散模型(Diffusion Models)中,Sigma(σ) 是一个核心参数,用于控制添加到数据中的高斯噪声的强度。它本质上是一个标准差参数,决定了在扩散过程中每一步向数据注入多少噪声。
从物理直觉上理解:
- σ = 0:表示没有噪声,数据完全纯净
- σ 较小:噪声轻微,数据基本保留原有结构
- σ 较大:噪声强烈,数据被严重破坏
- σ → ∞:数据完全被噪声淹没,趋近于纯高斯分布
Sigma 贯穿扩散模型的前向加噪过程和反向去噪过程,是将数据从"干净"变为"噪声"、再从"噪声"恢复为"干净"的关键控制变量。
2. 扩散模型基本框架
扩散模型的核心思想包含两个互为相反的过程:
2.1 前向过程(加噪)
前向过程是一个固定的马尔可夫链,逐步向数据中添加高斯噪声:
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} \, x_{t-1}, \, \beta_t I) q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)
其中 β t ∈ ( 0 , 1 ) \beta_t \in (0, 1) βt∈(0,1) 是预定义的方差调度参数。
2.2 反向过程(去噪)
反向过程学习逆转前向过程,从噪声中恢复数据:
p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , σ t 2 I ) p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \sigma_t^2 I) pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),σt2I)
注意:反向过程中的 σ t \sigma_t σt 就是本文讨论的 Sigma,它控制了每一步反向转移的方差。
3. Sigma 的数学定义
3.1 基本定义
在扩散模型的语境下,Sigma 有几种等价或相关的定义方式:
| 符号 | 含义 | 关系 |
|---|---|---|
| β t \beta_t βt | 第 t t t 步的方差(DDPM) | 基础调度参数 |
| α ˉ t \bar{\alpha}_t αˉt | 累积乘积 ∏ s = 1 t ( 1 − β s ) \prod_{s=1}^{t}(1-\beta_s) ∏s=1t(1−βs) | 控制信号保留比例 |
| σ t \sigma_t σt | 反向过程方差 | 本文核心讨论对象 |
| σ ( t ) \sigma(t) σ(t) | 连续时间噪声标准差 | ODE/SDE 框架下的定义 |
3.2 Sigma 与 Beta 的关系
在 DDPM(Denoising Diffusion Probabilistic Models)中,反向过程的方差可以表示为:
σ t 2 = β ~ t = 1 − α ˉ t − 1 1 − α ˉ t ⋅ β t \sigma_t^2 = \tilde{\beta}_t = \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} \cdot \beta_t σt2=β~t=1−αˉt1−αˉt−1⋅βt
也可以选择使用:
σ t 2 = β t \sigma_t^2 = \beta_t σt2=βt
或者学习得到的方差:
σ t 2 = exp ( log ( β ~ t ) ⋅ λ + log ( β t ) ⋅ ( 1 − λ ) ) \sigma_t^2 = \exp\left(\log(\tilde{\beta}_t) \cdot \lambda + \log(\beta_t) \cdot (1 - \lambda)\right) σt2=exp(log(β~t)⋅λ+log(βt)⋅(1−λ))
其中 λ \lambda λ 是模型学习的参数。
3.3 Sigma 在连续时间框架下的定义
在基于随机微分方程(SDE)的连续时间扩散模型中,Sigma 被定义为时间的函数 σ ( t ) \sigma(t) σ(t):
d x = f ( x , t ) d t + g ( t ) d w dx = f(x, t) \, dt + g(t) \, dw dx=f(x,t)dt+g(t)dw
其中:
- f ( x , t ) f(x, t) f(x,t) 是漂移系数
- g ( t ) g(t) g(t) 是扩散系数(与 σ ( t ) \sigma(t) σ(t) 直接相关)
- w w w 是维纳过程(布朗运动)
在 VE-SDE(方差爆炸)的情形下,噪声标准差 σ ( t ) \sigma(t) σ(t) 是时间的确定性函数,前向过程表示为:
x t = x 0 + σ ( t ) ⋅ ϵ , ϵ ∼ N ( 0 , I ) x_t = x_0 + \sigma(t) \cdot \epsilon, \quad \epsilon \sim \mathcal{N}(0, I) xt=x0+σ(t)⋅ϵ,ϵ∼N(0,I)
其中 σ ( t ) \sigma(t) σ(t) 单调递增, σ ( 0 ) = σ min \sigma(0) = \sigma_{\min} σ(0)=σmin, σ ( T ) = σ max \sigma(T) = \sigma_{\max} σ(T)=σmax。扩散系数 g ( t ) g(t) g(t) 与 σ ( t ) \sigma(t) σ(t) 的关系为:
g 2 ( t ) = d σ 2 ( t ) d t g^2(t) = \frac{d\sigma^2(t)}{dt} g2(t)=dtdσ2(t)
即扩散系数等于噪声方差对时间的导数。
3.4 Sigma 与 KL 散度的理论联系
扩散模型的优化目标是最小化模型分布与真实数据分布之间的 KL 散度。Sigma 在变分下界(ELBO)中扮演重要角色。
变分下界(ELBO)的分解:
log p θ ( x 0 ) ≥ E q [ log p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] = L \log p_\theta(x_0) \geq \mathbb{E}_q \left[ \log \frac{p_\theta(x_{0:T})}{q(x_{1:T} | x_0)} \right] = L logpθ(x0)≥Eq[logq(x1:T∣x0)pθ(x0:T)]=L
ELBO 可以分解为:
L = D K L ( q ( x T ∣ x 0 ) ∥ p ( x T ) ) ⏟ L T + ∑ t = 2 T D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) ⏟ L t − 1 − log p θ ( x 0 ∣ x 1 ) ⏟ L 0 L = \underbrace{D_{KL}(q(x_T | x_0) \| p(x_T))}_{L_T} + \sum_{t=2}^{T} \underbrace{D_{KL}(q(x_{t-1} | x_t, x_0) \| p_\theta(x_{t-1} | x_t))}_{L_{t-1}} - \underbrace{\log p_\theta(x_0 | x_1)}_{L_0} L=LT DKL(q(xT∣x0)∥p(xT))+t=2∑TLt−1 DKL(q(xt−1∣xt,x0)∥pθ(xt−1∣xt))−L0 logpθ(x0∣x1)
其中每个 KL 散度项 L t − 1 L_{t-1} Lt−1 都依赖于 Sigma 的选择。具体地, q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1} | x_t, x_0) q(xt−1∣xt,x0) 的方差为:
β ~ t = 1 − α ˉ t − 1 1 − α ˉ t ⋅ β t \tilde{\beta}_t = \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} \cdot \beta_t β~t=1−αˉt1−αˉt−1⋅βt
而 p θ ( x t − 1 ∣ x t ) p_\theta(x_{t-1} | x_t) pθ(xt−1∣xt) 的方差为 σ t 2 \sigma_t^2 σt2。当两者匹配时(即 σ t 2 = β ~ t \sigma_t^2 = \tilde{\beta}_t σt2=β~t),KL 散度项 L t − 1 L_{t-1} Lt−1 达到最小值。
Sigma 对损失函数的影响:
L t − 1 = 1 2 σ t 2 ∥ μ ~ t ( x t , x 0 ) − μ θ ( x t , t ) ∥ 2 + const L_{t-1} = \frac{1}{2\sigma_t^2} \left\| \tilde{\mu}_t(x_t, x_0) - \mu_\theta(x_t, t) \right\|^2 + \text{const} Lt−1=2σt21∥μ~t(xt,x0)−μθ(xt,t)∥2+const
其中 μ ~ t \tilde{\mu}_t μ~t 是以 x 0 x_0 x0 为条件的后验均值。这表明 Sigma 直接决定了损失函数中均方误差项的权重:
- Sigma 较大:损失中 MSE 权重较小,模型对均值预测的精度要求降低
- Sigma 较小:损失中 MSE 权重较大,模型需要更精确地预测均值
3.5 离散 Sigma 与连续 Sigma 的数学桥接
在离散时间模型(DDPM)和连续时间模型(SDE)之间,Sigma 的对应关系可以通过以下方式建立。
离散到连续的映射:
当离散步数 T → ∞ T \to \infty T→∞ 时,离散的 β t \beta_t βt 对应于连续的 β ( t ) \beta(t) β(t):
β t ≈ β ( t ) ⋅ 1 T , t = i T , i = 1 , 2 , … , T \beta_t \approx \beta(t) \cdot \frac{1}{T}, \quad t = \frac{i}{T}, \quad i = 1, 2, \ldots, T βt≈β(t)⋅T1,t=Ti,i=1,2,…,T
离散的累积乘积 α ˉ t \bar{\alpha}_t αˉt 对应于连续的积分:
α ˉ t = ∏ s = 1 t ( 1 − β s ) → T → ∞ exp ( − ∫ 0 t β ( s ) d s ) \bar{\alpha}_t = \prod_{s=1}^{t} (1 - \beta_s) \xrightarrow{T \to \infty} \exp\left( -\int_0^t \beta(s) \, ds \right) αˉt=s=1∏t(1−βs)T→∞exp(−∫0tβ(s)ds)
因此,离散 Sigma 与连续 Sigma 的关系为:
σ t 2 = 1 − α ˉ t → T → ∞ 1 − exp ( − ∫ 0 t β ( s ) d s ) ≈ ∫ 0 t β ( s ) d s ( 当积分值较小时 ) \sigma_t^2 = 1 - \bar{\alpha}_t \xrightarrow{T \to \infty} 1 - \exp\left( -\int_0^t \beta(s) \, ds \right) \approx \int_0^t \beta(s) \, ds \quad (\text{当积分值较小时}) σt2=1−αˉtT→∞1−exp(−∫0tβ(s)ds)≈∫0tβ(s)ds(当积分值较小时)
VP-SDE 中的对应:
对于方差保持(VP)SDE,扩散系数 g ( t ) g(t) g(t) 与离散 Beta 调度的关系为:
g 2 ( t ) = β ( t ) = lim T → ∞ T ⋅ β t g^2(t) = \beta(t) = \lim_{T \to \infty} T \cdot \beta_t g2(t)=β(t)=T→∞limT⋅βt
这意味着在连续极限下,SDE 中的 β ( t ) \sqrt{\beta(t)} β(t) 就是离散模型中 σ t \sigma_t σt 的连续对应物。
VE-SDE 中的对应:
对于方差爆炸(VE)SDE,噪声方差 σ 2 ( t ) \sigma^2(t) σ2(t) 随时间线性增长,对应离散模型中:
σ 2 ( t ) = σ min 2 + ( σ max 2 − σ min 2 ) ⋅ t , t ∈ [ 0 , 1 ] \sigma^2(t) = \sigma_{\min}^2 + (\sigma_{\max}^2 - \sigma_{\min}^2) \cdot t, \quad t \in [0, 1] σ2(t)=σmin2+(σmax2−σmin2)⋅t,t∈[0,1]
其中 σ min 2 ≈ β 1 \sigma_{\min}^2 \approx \beta_1 σmin2≈β1(对应第一步的方差), σ max 2 \sigma_{\max}^2 σmax2 是最终的噪声方差。离散的累积乘积 α ˉ t \bar{\alpha}_t αˉt 与连续噪声方差的关系为:
α ˉ t = σ min 2 σ 2 ( t ) = σ min 2 σ min 2 + ( σ max 2 − σ min 2 ) ⋅ t \bar{\alpha}_t = \frac{\sigma_{\min}^2}{\sigma^2(t)} = \frac{\sigma_{\min}^2}{\sigma_{\min}^2 + (\sigma_{\max}^2 - \sigma_{\min}^2) \cdot t} αˉt=σ2(t)σmin2=σmin2+(σmax2−σmin2)⋅tσmin2
4. Sigma 在扩散过程中的作用
4.1 核心作用概览
4.2 对前向过程的影响
在前向过程中,任意时刻 t t t 的数据可以直接从 x 0 x_0 x0 采样得到:
q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(x_t | x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t} \, x_0, \, (1 - \bar{\alpha}_t) I) q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I)
这里 ( 1 − α ˉ t ) (1 - \bar{\alpha}_t) (1−αˉt) 就是等效的 σ t 2 \sigma_t^2 σt2,它决定了时刻 t t t 的总噪声方差。
4.3 对反向过程的影响
反向过程的均值和方差分别为:
均值(模型学习的部分):
μ θ ( x t , t ) = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) \mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_\theta(x_t, t) \right) μθ(xt,t)=αt1(xt−1−αˉtβtϵθ(xt,t))
方差(直接与 Sigma 相关):
Σ θ ( x t , t ) = σ t 2 I \Sigma_\theta(x_t, t) = \sigma_t^2 I Σθ(xt,t)=σt2I
Sigma 直接影响采样时的随机性:每一步去噪时,都会在预测的均值基础上加入 σ t \sigma_t σt 标准差的高斯噪声。
5. Sigma 与噪声调度
5.1 噪声调度策略
噪声调度(Noise Schedule)决定了 Sigma 随时间的变化方式,是扩散模型设计的关键选择之一。
5.2 线性调度
β t = linear from β min to β max , t = 1 , 2 , … , T \beta_t = \text{linear from } \beta_{\min} \text{ to } \beta_{\max}, \quad t = 1, 2, \ldots, T βt=linear from βmin to βmax,t=1,2,…,T
典型设置: β min = 10 − 4 \beta_{\min} = 10^{-4} βmin=10−4, β max = 0.02 \beta_{\max} = 0.02 βmax=0.02, T = 1000 T = 1000 T=1000
特点:实现简单,早期噪声增加慢,后期增加快。
5.3 余弦调度(Cosine Schedule)
Nichol & Dhariwal (2021) 提出的改进调度:
α ˉ t = f ( t ) f ( 0 ) , f ( t ) = cos ( t / T + s 1 + s ⋅ π 2 ) 2 \bar{\alpha}_t = \frac{f(t)}{f(0)}, \quad f(t) = \cos\left(\frac{t/T + s}{1+s} \cdot \frac{\pi}{2}\right)^2 αˉt=f(0)f(t),f(t)=cos(1+st/T+s⋅2π)2
其中 s s s 是一个小的偏移量(通常 s = 0.008 s = 0.008 s=0.008)。
对应的等效 Sigma:
σ t = 1 − α ˉ t = 1 − cos 2 ( t / T + 0.008 1.008 ⋅ π 2 ) 2 cos 2 ( 0.008 1.008 ⋅ π 2 ) 2 \sigma_t = \sqrt{1 - \bar{\alpha}_t} = \sqrt{1 - \frac{\cos^2\left(\frac{t/T + 0.008}{1.008} \cdot \frac{\pi}{2}\right)^2}{\cos^2\left(\frac{0.008}{1.008} \cdot \frac{\pi}{2}\right)^2}} σt=1−αˉt=1−cos2(1.0080.008⋅2π)2cos2(1.008t/T+0.008⋅2π)2
特点:噪声增加更加均匀,避免了线性调度中噪声增加过快或过慢的问题。
5.4 各调度策略的 Sigma 曲线对比
三种主要调度策略的 Sigma 随时间变化趋势对比:
线性调度:Sigma 增长呈现先慢后快的特征,整体曲线下凹。
余弦调度:Sigma 增长更加均匀平滑,中间段增长较快,是实践中最常用的调度之一。
Sigmoid 调度:Sigma 增长呈现 S 型,两端慢中间快,适合需要精细控制噪声增长率的场景。
在时间步 t=0 时 Sigma 接近 0,在 t=1000 时 Sigma 接近 1.0,三种策略的主要区别在于中间过程的增长速率分布。
6. 离散时间与连续时间下的 Sigma
6.1 离散时间扩散模型
在 DDPM 及其变体中,Sigma 是离散时间步的函数 σ t \sigma_t σt。
典型的离散时间反向采样公式:
x t − 1 = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) + σ t z x_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_\theta(x_t, t) \right) + \sigma_t z xt−1=αt1(xt−1−αˉt1−αtϵθ(xt,t))+σtz
其中 z ∼ N ( 0 , I ) z \sim \mathcal{N}(0, I) z∼N(0,I)。
关键观察:当 t = 1 t = 1 t=1 时, σ 1 \sigma_1 σ1 通常设为 0,这意味着最后一步去噪不加随机噪声,输出确定性结果。
6.2 连续时间扩散模型(SDE 框架)
在 Song et al. (2021) 提出的 SDE 框架中:
前向 SDE:
d x = − 1 2 β ( t ) x d t + β ( t ) d w dx = -\frac{1}{2} \beta(t) x \, dt + \sqrt{\beta(t)} \, dw dx=−21β(t)xdt+β(t)dw
反向 SDE:
d x = [ − 1 2 β ( t ) x − β ( t ) ∇ x log p t ( x ) ] d t + β ( t ) d w ˉ dx = \left[ -\frac{1}{2} \beta(t) x - \beta(t) \nabla_x \log p_t(x) \right] dt + \sqrt{\beta(t)} \, d\bar{w} dx=[−21β(t)x−β(t)∇xlogpt(x)]dt+β(t)dwˉ
对应的 ODE(概率流):
d x = [ − 1 2 β ( t ) x − 1 2 β ( t ) ∇ x log p t ( x ) ] d t dx = \left[ -\frac{1}{2} \beta(t) x - \frac{1}{2} \beta(t) \nabla_x \log p_t(x) \right] dt dx=[−21β(t)x−21β(t)∇xlogpt(x)]dt
在连续时间框架下,Sigma 的角色由 β ( t ) \sqrt{\beta(t)} β(t) 承担。
6.3 两种框架的对应关系
7. Sigma 在采样中的应用
7.1 DDPM 采样
使用学习到的均值和固定的方差进行采样:
x t − 1 ∼ p θ ( x t − 1 ∣ x t ) = N ( μ θ ( x t , t ) , σ t 2 I ) x_{t-1} \sim p_\theta(x_{t-1} | x_t) = \mathcal{N}(\mu_\theta(x_t, t), \sigma_t^2 I) xt−1∼pθ(xt−1∣xt)=N(μθ(xt,t),σt2I)
7.2 DDIM 采样(确定性映射)
DDIM (Denoising Diffusion Implicit Models) 引入参数 η \eta η 控制随机性:
x t − 1 = α ˉ t − 1 ⋅ x ^ 0 + 1 − α ˉ t − 1 − σ t 2 ⋅ ϵ θ ( x t , t ) + σ t z x_{t-1} = \sqrt{\bar{\alpha}_{t-1}} \cdot \hat{x}_0 + \sqrt{1 - \bar{\alpha}_{t-1} - \sigma_t^2} \cdot \epsilon_\theta(x_t, t) + \sigma_t z xt−1=αˉt−1⋅x^0+1−αˉt−1−σt2⋅ϵθ(xt,t)+σtz
其中 x ^ 0 \hat{x}_0 x^0 是预测的干净数据:
x ^ 0 = x t − 1 − α ˉ t ϵ θ ( x t , t ) α ˉ t \hat{x}_0 = \frac{x_t - \sqrt{1 - \bar{\alpha}_t} \epsilon_\theta(x_t, t)}{\sqrt{\bar{\alpha}_t}} x^0=αˉtxt−1−αˉtϵθ(xt,t)
Sigma 的计算公式为:
σ t = η 1 − α ˉ t − 1 1 − α ˉ t 1 − α ˉ t α ˉ t − 1 \sigma_t = \eta \sqrt{\frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t}} \sqrt{1 - \frac{\bar{\alpha}_t}{\bar{\alpha}_{t-1}}} σt=η1−αˉt1−αˉt−11−αˉt−1αˉt
- η = 1 \eta = 1 η=1:等价于 DDPM(完全随机)
- η = 0 \eta = 0 η=0:确定性映射(DDIM)
- 0 < η < 1 0 < \eta < 1 0<η<1:介于两者之间
7.3 DPM-Solver 采样
DPM-Solver 利用 ODE 形式进行高效采样,完全消除了 Sigma 中的随机项:
x t − 1 = α ˉ t − 1 α ˉ t x t + α ˉ t − 1 ( 1 α ˉ t − 1 − 1 − 1 α ˉ t − 1 ) ϵ θ ( x t , t ) x_{t-1} = \frac{\sqrt{\bar{\alpha}_{t-1}}}{\sqrt{\bar{\alpha}_t}} x_t + \sqrt{\bar{\alpha}_{t-1}} \left( \sqrt{\frac{1}{\bar{\alpha}_{t-1}} - 1} - \sqrt{\frac{1}{\bar{\alpha}_t} - 1} \right) \epsilon_\theta(x_t, t) xt−1=αˉtαˉt−1xt+αˉt−1(αˉt−11−1−αˉt1−1)ϵθ(xt,t)
由于没有随机项,DPM-Solver 可以在极少的步数(如 10-20 步)内完成高质量采样。
7.4 不同采样方法的 Sigma 对比
| 采样方法 | Sigma 设置 | 随机性 | 典型步数 |
|---|---|---|---|
| DDPM | σ t 2 = β ~ t \sigma_t^2 = \tilde{\beta}_t σt2=β~t | 完全随机 | 1000 |
| DDIM | σ t = η ⋅ … \sigma_t = \eta \cdot \ldots σt=η⋅… | 可控 | 20-50 |
| DPM-Solver | σ t = 0 \sigma_t = 0 σt=0 | 无随机 | 10-20 |
| SDE-PC | σ t 2 = β ( t ) Δ t \sigma_t^2 = \beta(t) \Delta t σt2=β(t)Δt | 完全随机 | 100-500 |
8. 不同扩散模型中的 Sigma 实现
8.1 DDPM 中的 Sigma
DDPM 使用固定的方差方案:
σ t 2 = β ~ t = 1 − α ˉ t − 1 1 − α ˉ t β t \sigma_t^2 = \tilde{\beta}_t = \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} \beta_t σt2=β~t=1−αˉt1−αˉt−1βt
或者使用 σ t 2 = β t \sigma_t^2 = \beta_t σt2=βt(简化方案)。
8.2 Score-Based 模型中的 Sigma
在 Score-Based Generative Models (SGM) 中,噪声水平 σ \sigma σ 直接作为模型输入:
p σ ( x ) = p data ( x ) + N ( 0 , σ 2 I ) p_\sigma(x) = p_{\text{data}}(x) + \mathcal{N}(0, \sigma^2 I) pσ(x)=pdata(x)+N(0,σ2I)
模型学习的是噪声条件得分函数 s θ ( x , σ ) = ∇ x log p σ ( x ) s_\theta(x, \sigma) = \nabla_x \log p_\sigma(x) sθ(x,σ)=∇xlogpσ(x)。
8.3 Stable Diffusion 中的 Sigma
Stable Diffusion 在潜在空间(latent space)中操作,Sigma 通过噪声调度器(scheduler)实现:
Stable Diffusion 支持的调度器:
- PNDM:伪数值方法
- DDIM:确定性采样
- DPM-Solver++:高阶 ODE 求解器
- Euler:一阶 ODE 求解器
- LMS:线性多步法
8.4 Flow Matching 中的 Sigma
Flow Matching (Lipman et al., 2023) 是一种新兴的扩散模型框架,使用确定性流:
x t = ( 1 − t ) x 0 + t ⋅ ϵ , t ∈ [ 0 , 1 ] x_t = (1 - t) x_0 + t \cdot \epsilon, \quad t \in [0, 1] xt=(1−t)x0+t⋅ϵ,t∈[0,1]
等价地, σ ( t ) = t \sigma(t) = t σ(t)=t(噪声标准差随时间线性增长)。
模型学习速度场 v θ ( x t , t ) v_\theta(x_t, t) vθ(xt,t):
v ( x t , t ) = ϵ − x t v(x_t, t) = \epsilon - x_t v(xt,t)=ϵ−xt
采样过程通过求解 ODE 完成:
d x t d t = v θ ( x t , t ) \frac{dx_t}{dt} = v_\theta(x_t, t) dtdxt=vθ(xt,t)
9. Sigma 与训练稳定性
9.1 Sigma 对梯度的影响
在扩散模型的训练中,Sigma 直接影响损失函数的梯度行为。训练目标是最小化模型预测噪声与真实噪声之间的均方误差:
L ( θ ) = E x 0 , ϵ , t ∥ ϵ − ϵ θ ( x t , t ) ∥ 2 \mathcal{L}(\theta) = \mathbb{E}_{x_0, \epsilon, t} \left\| \epsilon - \epsilon_\theta(x_t, t) \right\|^2 L(θ)=Ex0,ϵ,t∥ϵ−ϵθ(xt,t)∥2
由于 x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon xt=αˉtx0+1−αˉtϵ,当 Sigma(即 1 − α ˉ t \sqrt{1 - \bar{\alpha}_t} 1−αˉt)处于不同范围时,梯度的行为截然不同。
大 Sigma 区域(高噪声水平):
当 t t t 接近 T T T 时,Sigma 接近 1, x t x_t xt 近似纯噪声。此时:
x t ≈ ϵ , ϵ θ ( x t , t ) ≈ ϵ x_t \approx \epsilon, \quad \epsilon_\theta(x_t, t) \approx \epsilon xt≈ϵ,ϵθ(xt,t)≈ϵ
模型的预测目标趋于平凡——输入和输出近似相同。这导致:
- 梯度幅值较小,模型在此区域的学习信号弱
- 损失函数对参数变化不敏感
- 模型难以学习到数据的精细结构信息
小 Sigma 区域(低噪声水平):
当 t t t 接近 0 时,Sigma 接近 0, x t x_t xt 近似干净数据。此时:
x t ≈ x 0 , ϵ θ ( x t , t ) ≈ 0 x_t \approx x_0, \quad \epsilon_\theta(x_t, t) \approx 0 xt≈x0,ϵθ(xt,t)≈0
模型需要从几乎不含噪声的数据中预测微小的噪声,这要求极高的精度。此区域的梯度特征为:
- 损失函数对均值预测误差的权重很大( ∝ 1 / σ t 2 \propto 1/\sigma_t^2 ∝1/σt2)
- 模型需要学习数据流形的精细结构
- 容易出现梯度不稳定问题
9.2 Sigma 加权策略
为了解决上述问题,不同工作提出了不同的 Sigma 加权策略。
均匀加权(DDPM 原始方案):
L simple = E x 0 , ϵ , t ∥ ϵ − ϵ θ ( x t , t ) ∥ 2 \mathcal{L}_{\text{simple}} = \mathbb{E}_{x_0, \epsilon, t} \left\| \epsilon - \epsilon_\theta(x_t, t) \right\|^2 Lsimple=Ex0,ϵ,t∥ϵ−ϵθ(xt,t)∥2
对所有时间步 t t t 使用相同权重。问题在于:高噪声步的损失天然较小,低噪声步的损失天然较大,导致模型偏向于优化高噪声步。
SNR 加权(Stable Diffusion v2):
L SNR = E x 0 , ϵ , t [ 1 SNR ( t ) ∥ ϵ − ϵ θ ( x t , t ) ∥ 2 ] \mathcal{L}_{\text{SNR}} = \mathbb{E}_{x_0, \epsilon, t} \left[ \frac{1}{\text{SNR}(t)} \left\| \epsilon - \epsilon_\theta(x_t, t) \right\|^2 \right] LSNR=Ex0,ϵ,t[SNR(t)1∥ϵ−ϵθ(xt,t)∥2]
由于 SNR ( t ) = α ˉ t / ( 1 − α ˉ t ) = 1 / σ t 2 − 1 \text{SNR}(t) = \bar{\alpha}_t / (1 - \bar{\alpha}_t) = 1/\sigma_t^2 - 1 SNR(t)=αˉt/(1−αˉt)=1/σt2−1,SNR 加权等价于:
w ( t ) = 1 SNR ( t ) = 1 − α ˉ t α ˉ t = σ t 2 1 − σ t 2 w(t) = \frac{1}{\text{SNR}(t)} = \frac{1 - \bar{\alpha}_t}{\bar{\alpha}_t} = \frac{\sigma_t^2}{1 - \sigma_t^2} w(t)=SNR(t)1=αˉt1−αˉt=1−σt2σt2
这使得低噪声步(小 Sigma)的权重被进一步放大,迫使模型更加关注细节恢复。
EDM 加权(Karras et al., 2022):
L EDM = E x 0 , ϵ , σ [ w ( σ ) ∥ x 0 − f θ ( x t , σ ) ∥ 2 ] \mathcal{L}_{\text{EDM}} = \mathbb{E}_{x_0, \epsilon, \sigma} \left[ w(\sigma) \left\| x_0 - f_\theta(x_t, \sigma) \right\|^2 \right] LEDM=Ex0,ϵ,σ[w(σ)∥x0−fθ(xt,σ)∥2]
其中权重函数为:
w ( σ ) = σ − 2 w(\sigma) = \sigma^{-2} w(σ)=σ−2
这种加权方式在 Sigma 接近 0 时给予极大的权重,但通过适当的截断策略避免数值不稳定。
9.3 Sigma 预热(Warmup)
在实际训练中,Sigma 预热是一种常见的稳定化策略。其基本思想是:在训练初期限制 Sigma 的范围,避免模型过早接触极端噪声水平。
预热策略的好处包括:
- 避免训练初期梯度不稳定
- 让模型先学习数据的粗粒度结构
- 逐步引入更精细的细节学习
- 减少训练早期的 loss 震荡
9.4 v-Prediction 与 Sigma
v-Prediction(Salimans & Ho, 2022)提出预测速度场 v = ϵ − σ ⋅ s θ ( x t ) v = \epsilon - \sigma \cdot s_\theta(x_t) v=ϵ−σ⋅sθ(xt) 而非直接预测噪声 ϵ \epsilon ϵ。其优势在于:
- 在 Sigma 接近 0 时,v 也接近 0,避免了预测值的突变
- 在 Sigma 较大时,v 的幅值适中,梯度更稳定
- 与 ODE 采样的速度场形式天然兼容
v t = 1 − α ˉ t ⋅ ϵ − α ˉ t ⋅ x 0 v_t = \sqrt{1 - \bar{\alpha}_t} \cdot \epsilon - \sqrt{\bar{\alpha}_t} \cdot x_0 vt=1−αˉt⋅ϵ−αˉt⋅x0
对应的训练损失为:
L v = E x 0 , ϵ , t ∥ v t − v θ ( x t , t ) ∥ 2 \mathcal{L}_{v} = \mathbb{E}_{x_0, \epsilon, t} \left\| v_t - v_\theta(x_t, t) \right\|^2 Lv=Ex0,ϵ,t∥vt−vθ(xt,t)∥2
10. Sigma 加权损失函数
10.1 损失函数中的 Sigma 角色
Sigma 在扩散模型的损失函数中扮演着双重角色:一是作为噪声的度量,二是作为损失权重的调控因子。
标准形式:
L ( θ ) = E t ∼ U ( 1 , T ) [ λ ( t ) ⋅ ℓ ( ϵ , ϵ θ ( x t , t ) ) ] \mathcal{L}(\theta) = \mathbb{E}_{t \sim \mathcal{U}(1,T)} \left[ \lambda(t) \cdot \ell(\epsilon, \epsilon_\theta(x_t, t)) \right] L(θ)=Et∼U(1,T)[λ(t)⋅ℓ(ϵ,ϵθ(xt,t))]
其中 λ ( t ) \lambda(t) λ(t) 是时间步相关的权重函数, ℓ \ell ℓ 是逐样本的损失(通常为 MSE)。
10.2 常见加权方案对比
| 方案 | 权重 λ ( t ) \lambda(t) λ(t) | 设计动机 | 代表工作 |
|---|---|---|---|
| 均匀加权 | λ ( t ) = 1 \lambda(t) = 1 λ(t)=1 | 简单直接 | DDPM |
| SNR 加权 | λ ( t ) = SNR ( t ) − 1 \lambda(t) = \text{SNR}(t)^{-1} λ(t)=SNR(t)−1 | 平衡各时间步贡献 | SD v2 |
| EDM 加权 | λ ( σ ) = σ − 2 \lambda(\sigma) = \sigma^{-2} λ(σ)=σ−2 | 强调细节恢复 | EDM |
| Min-SNR 加权 | λ ( t ) = min ( SNR ( t ) , γ ) − 1 \lambda(t) = \min(\text{SNR}(t), \gamma)^{-1} λ(t)=min(SNR(t),γ)−1 | 截断避免过大权重 | 改进方案 |
| 最大似然加权 | λ ( t ) = σ t 2 \lambda(t) = \sigma_t^2 λ(t)=σt2 | 等价于 VAE 的 ELBO | DDPM 论文 |
10.3 Min-SNR 加权
Min-SNR 加权是对 SNR 加权的改进,通过引入截断参数 γ \gamma γ 避免低噪声步权重过大:
λ Min-SNR ( t ) = min ( 1 SNR ( t ) , γ ) = min ( 1 − α ˉ t α ˉ t , γ ) \lambda_{\text{Min-SNR}}(t) = \min\left(\frac{1}{\text{SNR}(t)}, \gamma\right) = \min\left(\frac{1 - \bar{\alpha}_t}{\bar{\alpha}_t}, \gamma\right) λMin-SNR(t)=min(SNR(t)1,γ)=min(αˉt1−αˉt,γ)
当 γ = 5 \gamma = 5 γ=5 时,意味着 SNR 低于 0.2 的时间步(即 α ˉ t < 1 / 6 \bar{\alpha}_t < 1/6 αˉt<1/6)的权重被截断为 γ − 1 = 0.2 \gamma^{-1} = 0.2 γ−1=0.2,避免了这些步的梯度主导整个训练过程。
10.4 加权方案对生成质量的影响
不同的 Sigma 加权方案直接影响模型的生成质量:
- 均匀加权:倾向于生成更平滑的结果,细节可能不够锐利
- SNR 加权:细节更丰富,但可能引入伪影
- EDM 加权:在细节和整体结构之间取得较好平衡
- Min-SNR 加权:在 SNR 加权的基础上提高了训练稳定性
11. Sigma 的条件输入编码
11.1 为什么需要编码
Sigma 作为模型的条件输入,需要被编码为网络可以理解的形式。直接使用标量值存在以下问题:
- 标量值的变化范围大(从接近 0 到 1 或更大)
- 网络难以学习到 Sigma 与噪声水平之间的非线性关系
- 不同 Sigma 值之间的差异在标量空间中不够明显
11.2 正弦位置编码
DDPM 及其变体广泛使用正弦位置编码来处理时间步 t t t,间接编码 Sigma:
PE ( t , 2 i ) = sin ( t 10000 2 i / d model ) \text{PE}(t, 2i) = \sin\left(\frac{t}{10000^{2i/d_{\text{model}}}}\right) PE(t,2i)=sin(100002i/dmodelt)
PE ( t , 2 i + 1 ) = cos ( t 10000 2 i / d model ) \text{PE}(t, 2i+1) = \cos\left(\frac{t}{10000^{2i/d_{\text{model}}}}\right) PE(t,2i+1)=cos(100002i/dmodelt)
其中 d model d_{\text{model}} dmodel 是编码维度。这种编码的优势在于:
- 可以表示任意大的时间步
- 不同时间步之间的编码距离有明确的几何意义
- 与 Transformer 架构天然兼容
11.3 傅里叶特征编码
EDM 使用高斯随机傅里叶特征来编码 Sigma:
c out = cos ( 2 π ⋅ W ⋅ σ + ϕ ) c_{\text{out}} = \cos(2\pi \cdot W \cdot \sigma + \phi) cout=cos(2π⋅W⋅σ+ϕ)
其中 W W W 是从高斯分布采样的随机矩阵, ϕ \phi ϕ 是随机相位。这种编码方式:
- 将标量 Sigma 映射到高维空间
- 使网络能够学习 Sigma 与噪声水平之间的复杂关系
- 在实验中表现出比正弦编码更好的效果
11.4 直接标量输入
一些简化方案直接将 Sigma(或其对数)作为标量输入网络:
c in = log ( σ ) c_{\text{in}} = \log(\sigma) cin=log(σ)
使用对数变换的原因是:Sigma 跨越多个数量级(从 10 − 3 10^{-3} 10−3 到 10 0 10^0 100),对数变换使分布更均匀。
11.5 不同编码方式的效果对比
12. ODE 采样中 Sigma 消失的理论解释
12.1 从 SDE 到 ODE
在连续时间扩散模型中,反向 SDE 为:
d x = [ f ( x , t ) − g 2 ( t ) ∇ x log p t ( x ) ] d t + g ( t ) d w ˉ dx = \left[ f(x,t) - g^2(t) \nabla_x \log p_t(x) \right] dt + g(t) d\bar{w} dx=[f(x,t)−g2(t)∇xlogpt(x)]dt+g(t)dwˉ
对应的概率流 ODE 为:
d x = [ f ( x , t ) − 1 2 g 2 ( t ) ∇ x log p t ( x ) ] d t dx = \left[ f(x,t) - \frac{1}{2} g^2(t) \nabla_x \log p_t(x) \right] dt dx=[f(x,t)−21g2(t)∇xlogpt(x)]dt
关键区别在于:ODE 去掉了随机项 g ( t ) d w ˉ g(t) d\bar{w} g(t)dwˉ,而漂移项中的 1 2 \frac{1}{2} 21 因子补偿了去除随机项带来的分布偏差。
12.2 为什么可以去掉随机项
从数学角度,SDE 和 ODE 描述的是同一个边际分布 p t ( x ) p_t(x) pt(x) 的不同采样路径。具体地:
定理(Anderson, 1982):对于前向 SDE d x = f ( x , t ) d t + g ( t ) d w dx = f(x,t)dt + g(t)dw dx=f(x,t)dt+g(t)dw,存在一个反向 ODE:
d x d t = f ( x , t ) − 1 2 g 2 ( t ) ∇ x log p t ( x ) \frac{dx}{dt} = f(x,t) - \frac{1}{2} g^2(t) \nabla_x \log p_t(x) dtdx=f(x,t)−21g2(t)∇xlogpt(x)
使得该 ODE 的解 x ( t ) x(t) x(t) 与反向 SDE 的解具有相同的边际分布 p t ( x ) p_t(x) pt(x)。
这意味着:虽然 ODE 的每条轨迹是确定性的,但不同初始噪声 x T x_T xT 对应的轨迹集合,其分布与 SDE 的分布完全一致。
12.3 Sigma 在 ODE 中的角色
在 ODE 框架下,Sigma 不再作为采样噪声的标准差出现,而是隐含在漂移项中:
g 2 ( t ) = β ( t ) = d σ 2 ( t ) d t g^2(t) = \beta(t) = \frac{d\sigma^2(t)}{dt} g2(t)=β(t)=dtdσ2(t)
Sigma 的"消失"实际上是从显式噪声项转变为隐式的漂移项系数。这种转变带来以下优势:
- 确定性采样:相同输入产生相同输出,便于调试和复现
- 高阶求解器:ODE 允许使用更高阶的数值方法(如 DPM-Solver)
- 步数大幅减少:从 SDE 的数百步降至 ODE 的 10-20 步
12.4 ODE 采样的局限性
ODE 采样并非完美无缺:
- 单轨迹偏差:ODE 的每条轨迹是确定性的,无法通过多次采样取平均来降低方差
- 误差累积:数值求解器的误差在确定性传播中不断累积
- 分布尾部:ODE 在分布的尾部(低密度区域)可能不如 SDE 准确
13. Sigma 与 CFG 的交互
13.1 Classifier-Free Guidance 回顾
Classifier-Free Guidance (CFG) 通过混合有条件预测和无条件预测来增强生成质量:
ϵ ^ CFG = ϵ ^ θ ( x t , ∅ ) + s ⋅ ( ϵ ^ θ ( x t , c ) − ϵ ^ θ ( x t , ∅ ) ) \hat{\epsilon}_{\text{CFG}} = \hat{\epsilon}_\theta(x_t, \varnothing) + s \cdot \left( \hat{\epsilon}_\theta(x_t, c) - \hat{\epsilon}_\theta(x_t, \varnothing) \right) ϵ^CFG=ϵ^θ(xt,∅)+s⋅(ϵ^θ(xt,c)−ϵ^θ(xt,∅))
其中 s s s 是引导强度, c c c 是条件信息, ∅ \varnothing ∅ 是无条件输入。
13.2 CFG 与 Sigma 的耦合
CFG 的效果与 Sigma 存在密切关系。在 DDIM 采样中,使用 CFG 后的采样公式变为:
x t − 1 = α ˉ t − 1 ⋅ x ^ 0 CFG + 1 − α ˉ t − 1 − σ t 2 ⋅ ϵ θ CFG + σ t z x_{t-1} = \sqrt{\bar{\alpha}_{t-1}} \cdot \hat{x}_0^{\text{CFG}} + \sqrt{1 - \bar{\alpha}_{t-1} - \sigma_t^2} \cdot \epsilon_\theta^{\text{CFG}} + \sigma_t z xt−1=αˉt−1⋅x^0CFG+1−αˉt−1−σt2⋅ϵθCFG+σtz
其中 x ^ 0 CFG \hat{x}_0^{\text{CFG}} x^0CFG 和 ϵ θ CFG \epsilon_\theta^{\text{CFG}} ϵθCFG 都经过了 CFG 修正。
关键观察:
- 当 Sigma 较大时(高噪声步),CFG 的影响更显著,因为此时模型对条件信息的依赖更强
- 当 Sigma 较小时(低噪声步),CFG 的影响减弱,因为此时数据已接近干净状态
- 过大的 CFG 强度 s s s 在高 Sigma 步可能导致过饱和或伪影
13.3 引导强度与 Sigma 的自适应
一些改进方法提出根据 Sigma 自适应调整引导强度:
s adaptive ( t ) = s base ⋅ f ( σ t ) s_{\text{adaptive}}(t) = s_{\text{base}} \cdot f(\sigma_t) sadaptive(t)=sbase⋅f(σt)
常见的自适应策略包括:
- 线性衰减: s ( t ) = s base ⋅ ( 1 − t / T ) s(t) = s_{\text{base}} \cdot (1 - t/T) s(t)=sbase⋅(1−t/T),在高噪声步使用更强的引导
- Sigma 阈值:仅在 σ t > σ thresh \sigma_t > \sigma_{\text{thresh}} σt>σthresh 时应用 CFG
- 动态调整:根据每步的预测误差动态调整 s s s
14. EDM 框架中的 Sigma 调度
14.1 EDM 的核心思想
Karras et al. (2022) 在论文 Elucidating the Design Space of Diffusion-Based Generative Models 中提出了一个统一的 Sigma 框架,其核心思想是:
- 将 Sigma 作为唯一的噪声参数,统一不同扩散模型的表述
- 提出 σ ( t ) = t \sigma(t) = t σ(t)=t 的简化调度
- 通过跳跃采样(Skip Sampling)实现高效生成
14.2 EDM 的噪声调度
EDM 使用最简单的 Sigma 调度:
σ ( t ) = t , t ∈ [ 0 , ∞ ) \sigma(t) = t, \quad t \in [0, \infty) σ(t)=t,t∈[0,∞)
这意味着噪声标准差随时间线性增长。与 DDPM 的复杂调度相比,这种简化方案的优势在于:
- 无需精心设计 Beta 调度
- 理论分析更加简洁
- 在实践中效果不逊于复杂调度
14.3 EDM 的跳跃采样
EDM 提出了一种基于 Sigma 的跳跃采样策略,跳过部分中间步:
跳跃采样的关键思想是:在 Sigma 较大的步使用较大的跳跃步长,在 Sigma 较小的步使用精细的步长。具体地,第 i i i 步的 Sigma 值为:
σ i = ( σ max 1 / ρ + i N − 1 ( σ min 1 / ρ − σ max 1 / ρ ) ) ρ \sigma_i = \left( \sigma_{\max}^{1/\rho} + \frac{i}{N-1} \left( \sigma_{\min}^{1/\rho} - \sigma_{\max}^{1/\rho} \right) \right)^\rho σi=(σmax1/ρ+N−1i(σmin1/ρ−σmax1/ρ))ρ
其中 ρ = 7 \rho = 7 ρ=7 是控制曲线形状的参数, σ max = 80 \sigma_{\max} = 80 σmax=80, σ min = 0.002 \sigma_{\min} = 0.002 σmin=0.002。
14.4 EDM 的损失函数
EDM 的损失函数使用预测干净数据 x 0 x_0 x0 而非预测噪声 ϵ \epsilon ϵ:
L EDM = E x 0 , ϵ , σ [ w ( σ ) ∥ x 0 − f θ ( x 0 + ϵ ⋅ σ , σ ) ∥ 2 ] \mathcal{L}_{\text{EDM}} = \mathbb{E}_{x_0, \epsilon, \sigma} \left[ w(\sigma) \left\| x_0 - f_\theta(x_0 + \epsilon \cdot \sigma, \sigma) \right\|^2 \right] LEDM=Ex0,ϵ,σ[w(σ)∥x0−fθ(x0+ϵ⋅σ,σ)∥2]
其中 f θ f_\theta fθ 是去噪网络,权重函数为:
w ( σ ) = σ − 2 w(\sigma) = \sigma^{-2} w(σ)=σ−2
这种设计使得:
- 网络直接学习从噪声数据恢复干净数据
- 权重函数 σ − 2 \sigma^{-2} σ−2 在低噪声步给予更大权重
- 与 ODE 采样的速度场形式兼容
14.5 EDM 的影响
EDM 框架对后续扩散模型的发展产生了深远影响:
- Stable Diffusion 3.x 采用了类似 EDM 的 Sigma 调度
- 统一了不同扩散模型的理论表述
- 为扩散模型的设计提供了系统化的方法论
15. 数值稳定性
15.1 极端 Sigma 值的问题
在实际实现中,Sigma 的极端值会带来数值稳定性问题。
Sigma 接近 0 时:
- 损失函数中的 1 / σ 2 1/\sigma^2 1/σ2 权重趋于无穷大
- 梯度可能爆炸,导致 NaN
- 浮点精度不足以区分接近 0 的 Sigma 值
Sigma 接近 1 时:
- α ˉ t \bar{\alpha}_t αˉt 接近 0, α ˉ t \sqrt{\bar{\alpha}_t} αˉt 的计算可能下溢
- 信号分量 α ˉ t ⋅ x 0 \sqrt{\bar{\alpha}_t} \cdot x_0 αˉt⋅x0 几乎消失
- 模型预测的精度要求极高
15.2 常见解决方案
截断策略:
σ clipped = max ( σ , σ min ) , σ min = 10 − 3 \sigma_{\text{clipped}} = \max(\sigma, \sigma_{\min}), \quad \sigma_{\min} = 10^{-3} σclipped=max(σ,σmin),σmin=10−3
对数空间计算:
在涉及 Sigma 除法或乘法的计算中,使用对数空间避免溢出:
log ( σ t 2 ) = log ( 1 − α ˉ t ) \log(\sigma_t^2) = \log(1 - \bar{\alpha}_t) log(σt2)=log(1−αˉt)
混合精度训练:
使用 FP16/BF16 进行前向传播,但保留 FP32 用于关键计算(如损失函数、梯度累积)。
数值安全的采样:
在 DDIM 采样中,当 σ t 2 > 1 − α ˉ t − 1 \sigma_t^2 > 1 - \bar{\alpha}_{t-1} σt2>1−αˉt−1 时,根号内的值为负。需要添加保护:
σ t = min ( η ⋅ … , 1 − α ˉ t − 1 ⋅ 0.999 ) \sigma_t = \min\left(\eta \cdot \sqrt{\ldots}, \sqrt{1 - \bar{\alpha}_{t-1}} \cdot 0.999\right) σt=min(η⋅…,1−αˉt−1⋅0.999)
15.3 不同精度下的 Sigma 精度
| 精度 | 有效位数 | Sigma 最小可表示值 | 适用场景 |
|---|---|---|---|
| FP32 | 7 位 | ∼ 10 − 7 \sim 10^{-7} ∼10−7 | 训练和推理 |
| FP16 | 3-4 位 | ∼ 10 − 3 \sim 10^{-3} ∼10−3 | 推理(需截断) |
| BF16 | 7 位 | ∼ 10 − 7 \sim 10^{-7} ∼10−7 | 训练和推理 |
16. Sigma 的可视化理解
16.1 数据分布随 Sigma 的变化
随着 Sigma 增大,数据分布逐渐从结构化变为随机。Sigma 控制着噪声壳层的半径:
- Sigma = 0:数据完全保留原始结构,所有样本紧密聚集在流形上
- Sigma = 0.3:噪声轻微,样本开始沿法线方向扩散,但整体结构仍可辨识
- Sigma = 0.7:噪声较强,样本大幅扩散,原始结构被严重破坏
- Sigma = 1.5:噪声主导,样本近似各向同性高斯分布,原始信息几乎完全丢失
16.2 Sigma 在训练中的角色
在训练过程中,Sigma 决定了模型看到的噪声水平:
16.3 Sigma 与信噪比(SNR)的关系
信噪比(Signal-to-Noise Ratio, SNR)与 Sigma 直接相关:
SNR ( t ) = α ˉ t 1 − α ˉ t = 信号功率 噪声功率 \text{SNR}(t) = \frac{\bar{\alpha}_t}{1 - \bar{\alpha}_t} = \frac{\text{信号功率}}{\text{噪声功率}} SNR(t)=1−αˉtαˉt=噪声功率信号功率
σ t 2 = 1 − α ˉ t = 1 1 + SNR ( t ) \sigma_t^2 = 1 - \bar{\alpha}_t = \frac{1}{1 + \text{SNR}(t)} σt2=1−αˉt=1+SNR(t)1
两者的变化趋势:
- SNR 曲线:从 t=0 时的极高值单调递减到 t=1000 时的接近 0
- Sigma 曲线:从 t=0 时的接近 0 单调递增到 t=1000 时的接近 1.0
- 关系:SNR 与 Sigma 平方呈反相关,SNR 越低则 Sigma 越高
16.4 Sigma 空间的几何解释
图注:Sigma 控制噪声壳层的半径。随着 Sigma 增大,数据点沿法线方向扩散,最终失去原始结构信息。
17. 总结
17.1 Sigma 的核心要点
| 要点 | 说明 |
|---|---|
| 定义 | 高斯噪声的标准差,控制噪声强度 |
| 作用域 | 贯穿前向加噪和反向去噪全过程 |
| 调度方式 | 线性、余弦、Sigmoid、EDM 线性调度等 |
| 采样影响 | 控制生成过程的随机性(通过 eta 参数) |
| 模型输入 | 作为条件信息通过编码输入噪声预测网络 |
| 与 SNR 关系 | σ 2 = 1 / ( 1 + SNR ) \sigma^2 = 1/(1+\text{SNR}) σ2=1/(1+SNR) |
| 损失加权 | 不同加权方案直接影响生成质量 |
| 训练稳定性 | 极端 Sigma 值需要特殊处理 |
17.2 Sigma 的演进趋势
17.3 实践建议
- 选择调度器:大多数场景下优先使用 DPM-Solver++ 或 DDIM
- Sigma 预热:在训练的初期逐步增加 Sigma 范围,有助于稳定训练
- 损失加权:使用 Min-SNR 或 EDM 加权方案提升生成质量
- 最小 Sigma:最后一步的 σ \sigma σ 通常设为 0,确保输出确定性
- 步数与 Sigma 的权衡:更激进的调度允许更少的采样步数
- 数值安全:注意极端 Sigma 值下的浮点精度问题
- CFG 耦合:根据 Sigma 自适应调整引导强度
参考文献
- Ho, J., Jain, A., & Abbeel, P. (2020). Denoising Diffusion Probabilistic Models. NeurIPS.
- Nichol, A., & Dhariwal, P. (2021). Improved Denoising Diffusion Probabilistic Models. ICML.
- Song, Y., Sohl-Dickstein, J., Kingma, D. P., et al. (2021). Score-Based Generative Modeling through Stochastic Differential Equations. ICLR.
- Lu, C., Zhou, Y., Bao, F., et al. (2022). DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps. NeurIPS.
- Lipman, Y., Chen, R. T. Q., Ben-Hamu, H., et al. (2023). Flow Matching for Generative Modeling. ICLR.
- Karras, T., Aittala, M., Aila, T., & Laine, S. (2022). Elucidating the Design Space of Diffusion-Based Generative Models. NeurIPS.
- Salimans, T., & Ho, J. (2022). Progressive Distillation for Fast Sampling of Diffusion Models. ICLR.
- Zhang, Q., & Chen, Y. (2023). Fast Sampling of Diffusion Models with Exponential Integrator. ICML.
- Anderson, B. D. O. (1982). Reverse-time diffusion equation models. Stochastic Processes and their Applications.
- Song, Y., Dhariwal, P., Chen, M., & Sutskever, I. (2023). Consistency Models. ICML.
- Ho, J., & Salimans, T. (2022). Classifier-Free Diffusion Guidance. NeurIPS Workshop on Deep Generative Models.
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)