Skip to content

Commit 09d9471

Browse files
committed
fix: 修复GitHub渲染失败的公式格式(行内空格+列表内math块去缩进)
1 parent 9085a13 commit 09d9471

1 file changed

Lines changed: 84 additions & 70 deletions

File tree

AIGC图像创作&AI绘画基础/01_Stable Diffusion系列大模型基础.md

Lines changed: 84 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,16 @@
122122
DDPM的核心是**两个对称的一阶马尔可夫链**:一个是**固定的前向扩散链**(逐步将数据转化为纯噪声),另一个是**可学习的反向去噪链**(逐步从纯噪声中恢复数据)。整个模型通过变分推断训练反向链,使其精确逆转前向扩散过程。
123123

124124
### 1. DDPM中马尔可夫链的核心定义
125-
DDPM是一个隐变量模型,其所有状态转移都满足**一阶马尔可夫性**:任意时刻的状态$x_t$只依赖于前一时刻的状态$x_{t-1}$,与更早的状态无关。
126-
- 前向过程(扩散):$q(x_{1:T}|x_0) = \prod_{t=1}^T q(x_t|x_{t-1})$,是**固定无参数**的马尔可夫链
127-
- 反向过程(生成):$p_\theta(x_{0:T}) = p(x_T) \prod_{t=1}^T p_\theta(x_{t-1}|x_t)$,是**可学习参数**的马尔可夫链
128-
- 所有隐变量$x_1,...,x_T$与数据$x_0$具有相同维度
125+
126+
DDPM是一个隐变量模型,其所有状态转移都满足**一阶马尔可夫性**:任意时刻的状态 $x_t$ 只依赖于前一时刻的状态 $x_{t-1}$ ,与更早的状态无关。
127+
128+
- 前向过程(扩散): $q(x_{1:T}|x_0) = \prod_{t=1}^T q(x_t|x_{t-1})$ ,是**固定无参数**的马尔可夫链
129+
- 反向过程(生成): $p_\theta(x_{0:T}) = p(x_T) \prod_{t=1}^T p_\theta(x_{t-1}|x_t)$ ,是**可学习参数**的马尔可夫链
130+
- 所有隐变量 $x_1,...,x_T$ 与数据 $x_0$ 具有相同维度
129131

130132
### 2. 前向扩散过程(数据→噪声)
131-
前向过程的目标是**逐步向原始数据添加微小的高斯噪声**,经过$T$步后将数据完全转化为标准高斯噪声。
133+
134+
前向过程的目标是**逐步向原始数据添加微小的高斯噪声**,经过 $T$ 步后将数据完全转化为标准高斯噪声。
132135

133136
#### 1. 转移分布定义
134137

@@ -211,15 +214,17 @@ L_{\text{simple}}(\theta) = \mathbb{E}_{t \sim U(1,T), x_0 \sim q(x_0), \epsilon
211214

212215
训练完成后,生成样本的过程如下:
213216

214-
1. 从标准高斯分布采样初始噪声: $x_T \sim \mathcal{N}(0,I)$
215-
2. 从 $t=T$ 到 $t=1$ 逐步迭代:
217+
**步骤 1**:从标准高斯分布采样初始噪声 $x_T \sim \mathcal{N}(0,I)$ 。
218+
219+
**步骤 2**:从 $t=T$ 到 $t=1$ 逐步迭代:
216220

217-
```math
218-
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) + \sigma_t z
219-
```
221+
```math
222+
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) + \sigma_t z
223+
```
220224

221-
其中 $z \sim \mathcal{N}(0,I)$ (当 $t=1$ 时 $z=0$ ,最后一步不加噪声)
222-
3. 最终输出 $x_0$ 即为生成的图像
225+
其中 $z \sim \mathcal{N}(0,I)$ (当 $t=1$ 时 $z=0$ ,最后一步不加噪声)。
226+
227+
**步骤 3**:最终输出 $x_0$ 即为生成的图像。
223228

224229

225230
<h2 id="q-003">面试问题:介绍一下DDPM中的重参数技巧</h2>
@@ -366,23 +371,25 @@ L_{\text{simple}}(\theta) = \mathbb{E}_{t \sim U(1,T), x_0 \sim q(x_0), \epsilon
366371

367372
#### 2. 常见的混合策略
368373

369-
1. **阶段式混合**
370-
- 训练前期(前70%-80%的迭代):使用 $L_{\text{simple}}$ 快速学习图像的整体结构和语义
371-
- 训练后期(后20%-30%的迭代):切换到 $L_{\text{vlb}}$ 优化细节和对数似然
372-
- 效果:FID分数与纯 $L_{\text{simple}}$ 相当,同时NLL值大幅提升
374+
**1. 阶段式混合**
373375

374-
2. **时间步混合**
375-
- 高噪声阶段( $t > t_0$ ):使用 $L_{\text{simple}}$ 的均匀权重,保证整体结构质量
376-
- 低噪声阶段( $t \leq t_0$ ):使用 $L_{\text{vlb}}$ 的原始权重,优化细节重建
377-
- 效果:在不损失整体质量的前提下,提升图像的细节清晰度
376+
- 训练前期(前70%-80%的迭代):使用 $L_{\text{simple}}$ 快速学习图像的整体结构和语义
377+
- 训练后期(后20%-30%的迭代):切换到 $L_{\text{vlb}}$ 优化细节和对数似然
378+
- 效果:FID分数与纯 $L_{\text{simple}}$ 相当,同时NLL值大幅提升
378379

379-
3. **加权混合**
380+
**2. 时间步混合**
380381

381-
```math
382-
L_{\text{mixed}} = \lambda L_{\text{simple}} + (1-\lambda) L_{\text{vlb}}
383-
```
382+
- 高噪声阶段( $t > t_0$ ):使用 $L_{\text{simple}}$ 的均匀权重,保证整体结构质量
383+
- 低噪声阶段( $t \leq t_0$ ):使用 $L_{\text{vlb}}$ 的原始权重,优化细节重建
384+
- 效果:在不损失整体质量的前提下,提升图像的细节清晰度
384385

385-
其中 $\lambda \in (0,1)$ 是平衡系数,通常取 $\lambda=0.9$ 左右。
386+
**3. 加权混合**
387+
388+
```math
389+
L_{\text{mixed}} = \lambda L_{\text{simple}} + (1-\lambda) L_{\text{vlb}}
390+
```
391+
392+
其中 $\lambda \in (0,1)$ 是平衡系数,通常取 $\lambda=0.9$ 左右。
386393

387394
#### 3. 解决的核心问题
388395

@@ -789,17 +796,23 @@ x_{t-1} = \sqrt{\alpha_{t-1}} \cdot \hat{x}_0 + \sqrt{1-\alpha_{t-1}-\sigma_t^2}
789796

790797
DDIM能实现确定性生成的根本原因,是它**打破了扩散模型必须是马尔可夫随机过程的固有认知**
791798

792-
1. **训练目标的不变性**:DDPM的训练损失只依赖于所有噪声水平的边缘分布 $q(x_t|x_0)$ ,与前向过程的马尔可夫性完全无关。只要边缘分布不变,我们可以构造任意非马尔可夫前向过程。
799+
**1. 训练目标的不变性**
800+
801+
DDPM的训练损失只依赖于所有噪声水平的边缘分布 $q(x_t|x_0)$ ,与前向过程的马尔可夫性完全无关。只要边缘分布不变,我们可以构造任意非马尔可夫前向过程。
793802

794-
2. **非马尔可夫前向过程的构造**:DDIM构造了一族前向过程,其中每一步 $x_{t-1}$ 都直接依赖原始干净图像 $x_0$ ,而不仅仅是前一步的 $x_t$ :
803+
**2. 非马尔可夫前向过程的构造**
804+
805+
DDIM构造了一族前向过程,其中每一步 $x_{t-1}$ 都直接依赖原始干净图像 $x_0$ ,而不仅仅是前一步的 $x_t$ :
806+
807+
```math
808+
q_\sigma(x_{t-1}|x_t,x_0) = \mathcal{N}\left(\sqrt{\alpha_{t-1}}x_0 + \sqrt{1-\alpha_{t-1}-\sigma_t^2}\cdot\frac{x_t-\sqrt{\alpha_t}x_0}{\sqrt{1-\alpha_t}}, \sigma_t^2 I\right)
809+
```
795810

796-
```math
797-
q_\sigma(x_{t-1}|x_t,x_0) = \mathcal{N}\left(\sqrt{\alpha_{t-1}}x_0 + \sqrt{1-\alpha_{t-1}-\sigma_t^2}\cdot\frac{x_t-\sqrt{\alpha_t}x_0}{\sqrt{1-\alpha_t}}, \sigma_t^2 I\right)
798-
```
811+
当 $\sigma_t=0$ 时,这个条件分布退化为一个点质量,即给定 $x_t$ 和 $x_0$ , $x_{t-1}$ 是唯一确定的。
799812

800-
当 $\sigma_t=0$ 时,这个条件分布退化为一个点质量,即给定 $x_t$ 和 $x_0$ , $x_{t-1}$ 是唯一确定的。
813+
**3. 反向过程的确定性推导**
801814

802-
3. **反向过程的确定性推导**对应的反向生成过程也因此变成确定性的——每一步的 $x_{t-1}$ 完全由当前的 $x_t$ 和模型预测的 $\hat{x}_0$ 唯一确定,不需要注入任何随机噪声。
815+
对应的反向生成过程也因此变成确定性的——每一步的 $x_{t-1}$ 完全由当前的 $x_t$ 和模型预测的 $\hat{x}_0$ 唯一确定,不需要注入任何随机噪声。
803816

804817
### 3. 确定性DDIM的理论本质
805818

@@ -933,18 +946,19 @@ dx = \left[ f(x, t) - g^2(t) \nabla_x \log p_t(x) \right] dt + g(t)d\bar{w}
933946

934947
#### 3. 训练与采样
935948

936-
- **训练目标**:训练一个时间依赖的Score网络 $s_\theta(x, t)$ ,通过**加权Fisher散度**(去噪Score匹配)近似真实Score函数:
949+
**训练目标**:训练一个时间依赖的Score网络 $s_\theta(x, t)$ ,通过**加权Fisher散度**(去噪Score匹配)近似真实Score函数:
950+
951+
```math
952+
\mathcal{L} = \mathbb{E}_{t \sim \mathcal{U}(0,T), x \sim p_t(x)} \left[ \lambda(t) \left\| s_\theta(x, t) - \nabla_x \log p_t(x) \right\|_2^2 \right]
953+
```
937954

938-
```math
939-
\mathcal{L} = \mathbb{E}_{t \sim \mathcal{U}(0,T), x \sim p_t(x)} \left[ \lambda(t) \left\| s_\theta(x, t) - \nabla_x \log p_t(x) \right\|_2^2 \right]
940-
```
955+
其中 $\lambda(t)$ 是时间权重函数,不同的权重对应不同的模型变体。
941956

942-
其中 $\lambda(t)$ 是时间权重函数,不同的权重对应不同的模型变体。
957+
**采样方法**
943958

944-
- **采样方法**
945-
- **随机采样**:用Euler-Maruyama等数值方法求解反向SDE,结果具有多样性
946-
- **确定性采样**:求解对应的**概率流ODE**,结果可复现且支持精确似然计算
947-
- **预测-校正采样**:结合SDE求解器(预测)和Langevin动力学(校正),在速度和质量之间取得最佳平衡
959+
- **随机采样**:用Euler-Maruyama等数值方法求解反向SDE,结果具有多样性
960+
- **确定性采样**:求解对应的**概率流ODE**,结果可复现且支持精确似然计算
961+
- **预测-校正采样**:结合SDE求解器(预测)和Langevin动力学(校正),在速度和质量之间取得最佳平衡
948962

949963
### 2. SDE框架统一DDPM与Score-Based模型的本质原因
950964

@@ -959,21 +973,19 @@ dx = \left[ f(x, t) - g^2(t) \nabla_x \log p_t(x) \right] dt + g(t)d\bar{w}
959973

960974
#### 2. 训练目标:都是加权Score匹配的特例
961975

962-
- **DDPM的噪声预测损失**
963-
DDPM训练目标是预测添加的噪声 $\epsilon$ ,可以数学等价于:
976+
**DDPM的噪声预测损失**:DDPM训练目标是预测添加的噪声 $\epsilon$ ,可以数学等价于:
964977

965-
```math
966-
\mathcal{L}_{\text{DDPM}} = \mathbb{E}_{t, x_0, \epsilon} \left\| \epsilon - \epsilon_\theta(x_t, t) \right\|_2^2
967-
```
978+
```math
979+
\mathcal{L}_{\text{DDPM}} = \mathbb{E}_{t, x_0, \epsilon} \left\| \epsilon - \epsilon_\theta(x_t, t) \right\|_2^2
980+
```
968981

969-
这对应SDE框架中权重 $\lambda(t) = g^2(t)$ 的加权Fisher散度,且Score函数与噪声预测满足关系:
982+
这对应SDE框架中权重 $\lambda(t) = g^2(t)$ 的加权Fisher散度,且Score函数与噪声预测满足关系:
970983

971-
```math
972-
\nabla_x \log p_t(x) = -\frac{\epsilon}{\sigma_t}
973-
```
984+
```math
985+
\nabla_x \log p_t(x) = -\frac{\epsilon}{\sigma_t}
986+
```
974987

975-
- **NCSN的多尺度Score匹配损失**
976-
NCSN训练目标是估计每个噪声尺度下的Score函数,对应SDE框架中权重 $\lambda(t) = \sigma_t^2$ 的加权Fisher散度。
988+
**NCSN的多尺度Score匹配损失**:NCSN训练目标是估计每个噪声尺度下的Score函数,对应SDE框架中权重 $\lambda(t) = \sigma_t^2$ 的加权Fisher散度。
977989

978990
**结论**:DDPM和NCSN的训练目标只是SDE统一训练目标的不同权重选择,没有本质区别。
979991

@@ -1515,15 +1527,17 @@ CFG的核心公式是:
15151527

15161528
### 2. 核心数学本质
15171529

1518-
1. **基准替换**:将CFG的"生成基准"从**所有训练数据的平均分布(空提示词)**替换为**不想要内容的分布(负提示词)**
1519-
2. **差值放大**:放大"正条件噪声预测"与"负条件噪声预测"的差异,让生成过程同时**趋近正提示词特征****远离负提示词特征**
1520-
3. **隐式二分类梯度**:从score函数视角( $\nabla \log p(z) = -\epsilon/\sigma$ ),等价于沿着**正/负条件的对数似然比梯度**更新:
1530+
**1. 基准替换**:将CFG的"生成基准"从**所有训练数据的平均分布(空提示词)**替换为**不想要内容的分布(负提示词)**
1531+
1532+
**2. 差值放大**:放大"正条件噪声预测"与"负条件噪声预测"的差异,让生成过程同时**趋近正提示词特征****远离负提示词特征**
15211533

1522-
```math
1523-
\nabla \log \frac{p(z|c^+)}{p(z|c^-)} = \nabla \log p(z|c^+) - \nabla \log p(z|c^-)
1524-
```
1534+
**3. 隐式二分类梯度**:从score函数视角( $\nabla \log p(z) = -\epsilon/\sigma$ ),等价于沿着**正/负条件的对数似然比梯度**更新:
15251535

1526-
引导强度 $s$ 控制该梯度的放大倍数,越大则正/负区分越严格。
1536+
```math
1537+
\nabla \log \frac{p(z|c^+)}{p(z|c^-)} = \nabla \log p(z|c^+) - \nabla \log p(z|c^-)
1538+
```
1539+
1540+
引导强度 $s$ 控制该梯度的放大倍数,越大则正/负区分越严格。
15271541

15281542
#### 3. 关键结论
15291543

@@ -3311,23 +3325,23 @@ Stable Diffusion的模型融合主要通过 **Merge Block Weight(块权重融
33113325

33123326
模型融合的目标是合并多个训练好的Stable Diffusion模型(如风格模型+主体模型),生成兼具各方优势的新模型。Merge Block Weight的核心创新在于**分块处理U-Net/Transformer结构**,而非整体融合:
33133327

3314-
1. **U-Net结构解构**
3328+
**1. U-Net结构解构**
33153329

3316-
Stable Diffusion的U-Net包含多个功能模块:
3330+
Stable Diffusion的U-Net包含多个功能模块:
33173331

3318-
- **ResBlock**:负责基础特征提取与残差连接
3319-
- **Spatial Transformer(Cross-Attention)**:融合文本与图像语义
3320-
- **DownSample/UpSample**:控制特征图分辨率变换
3332+
- **ResBlock**:负责基础特征提取与残差连接
3333+
- **Spatial Transformer(Cross-Attention)**:融合文本与图像语义
3334+
- **DownSample/UpSample**:控制特征图分辨率变换
33213335

3322-
2. **分块独立融合**
3336+
**2. 分块独立融合**
33233337

3324-
对每个模块的权重独立计算插值,公式为:
3338+
对每个模块的权重独立计算插值,公式为:
33253339

3326-
```math
3327-
W_{\text{merged}}^{(i)} = \alpha \cdot W_A^{(i)} + (1 - \alpha) \cdot W_B^{(i)}
3328-
```
3340+
```math
3341+
W_{\text{merged}}^{(i)} = \alpha \cdot W_A^{(i)} + (1 - \alpha) \cdot W_B^{(i)}
3342+
```
33293343

3330-
其中 $W_A^{(i)}$ 和 $W_B^{(i)}$ 是待融合模型在模块 $i$ 的权重, $\alpha$ 为该模块的融合系数(0~1)。
3344+
其中 $W_A^{(i)}$ 和 $W_B^{(i)}$ 是待融合模型在模块 $i$ 的权重, $\alpha$ 为该模块的融合系数(0~1)。
33313345

33323346
#### 二、技术实现流程
33333347

0 commit comments

Comments
 (0)