AIGC 笔记

目录

一、GAN (2014.06)

    1. 对抗模型

    2. 理论结果

    3. 未来工作

 二、VAE (2013.12)

    1. Objective Function

    2. Reparameterization

    3. Model Architecture

    4. 未来工作

三、VQ-VAE (2017.11)

    1. Model Architecture

    2. Objective Function

    3. 生成过程

四、SMLD (2019.07)

    1. 背景

    2. Annealed Langevin Dynamics

    3. Noise Conditional Score Network

五、DDPM (2020.06)

    1. Forward Process

    2. Reverse Process

    3. Objective Function

    4. 伪代码

    5. 与VAE的对比

六、Score SDE (2020.11)

    1. SDE 框架

    2. 统一 SMLD 与 DDPM

    3. Predictor-Corrector Samplers

    4. Probability Flow ODE

    5. 可控生成

七、Classifier-Free Guidance (2022.07)

    1. 背景与动机

    2. 方法

    3. 理论

    4. 超参数选择

八、Flow Matching (2022.10)

    1. 理论与概念

    2. 两种概率路径特例

    3. 与 SDE 对比

九、Latent Diffusion Model (2021.12)

    1. 核心思想与架构

    2. 潜在扩散过程

    3. 条件机制

十、DiT (2022.12)

    1. Model Architecture

    2. 条件嵌入方法

十一、DALL·E 2 (2022.04)

    1. Prior

    2. Decoder

十二、LoRA (2021.06)

    1. 重参数化 (Reparameterization)

    2. 关键优势

    3. 应用位置

十三、ControlNet (2023.02)

    1. Method

    2. 在 Stable Diffusion 中应用的 Architecture

    3. Training

    4. Inference

十四、Rectified Flow (2022.09)

    1. Method

    2. 最优传输的联系

十五、Progressive Distillation (2022.02)

    1. 核心思想

    2. 参数化改进

    3. 蒸馏目标

十六、Distillation of Guided Diffusion (2022.10)

    1. 背景与动机

    2. 两阶段蒸馏方法

    3. 两种采样方式

    4. 与原始 CFG 对比

十七、Consistency Models (2023.03)

    1. 核心概念与参数化

    2. 多步采样

    3. 一致性蒸馏

    4. 一致性训练

十八、Latent Consistency Models (2023.10)

    1. 核心思想

    2. 潜在一致性蒸馏

    3. 一致性微调

十九、Distribution Matching Distillation (2023.11)

    1. 核心思想

    2. 分布匹配损失

    3. 回归损失

    4. 训练

    5. 对 CFG 的处理

二十、Adversarial Diffusion Distillation (2023.11)

    1. 核心架构与总体目标

    2. 对抗分支

    3. 分数蒸馏分支

    4. 推理阶段特性

二十一、Instance-Specific Discretization (2026.03)

    1. 架构设计

    2. 采样

    3. 训练

    4. 价值


一、GAN (2014.06)

        GAN有两个模型,模型G (Generator) 负责拟合训练数据的分布 (也就是拟合概率密度)模型D (Discriminator) 负责评估一个样本是来自训练数据还是来自G的概率,在训练过程中G要尽可能骗过D,而D要尽可能分辨出G生成的样本。两个模型都是MLP,在对抗的过程中得到训练,最终的理想情况是G生成的分布完全拟合训练数据的分布,并且D无法分辨二者 (输出永远是1/2).

    1. 对抗模型

        设G的分布为pg (p代表概率密度),其随机变量为x,定义一个噪音变量z (直接从先验分布 (如高斯分布) 中采样得到),同时也是隐变量,G(z)的作用是将z映射到x. (以800万像素的游戏图片生成为例,假设z是100维的向量,代表游戏中人物地点等变量,x为800万维的向量,代表800万像素点,G就负责将z映射到x)。而D的输出是一个标量,D(x)表示x是来自训练数据的概率。我们的目标是训练D以最大化给来自训练数据的样本 (x ~ pdata) 和G生成的样本 (G(z) ~ pg) 打上正确标签的概率,在公式中表示就是最大化logD(x)的期望和log(1 - D(G(z)))的期望;同时训练G以最小化log(1 - D(G(Z))),在公式中表示就是最小化log(1 - D(G(z)))的期望。不过在训练的早期G还很弱,D(G(z))趋于0,log(1 - D(G(z)))的梯度会非常小,不利于训练,如果改为最大化logD(G(z))就会好很多

GAN的价值函数

GAN的算法伪代码

        下图是GAN的训练过程,黑点是训练数据,绿色实线是G生成的分布,由z映射而来,蓝色虚线是D的输出。(a) 是最初的状态,pg与pdata相差较大,D的输出正确率低;(b) 是D经过训练后能很好地分辨pg和pdata;(c) 是G经过训练后为了骗过D使pg更加拟合pdata;(d) 是最终的状态,pg完全拟合pdata,D的输出始终是1/2.

GAN的训练过程

    2. 理论结果

        1)最优的D

        在给定G的情况下,最优的D为

,其中p(x)表示某个x在该分布中的概率密度。证明如下:要使V这个积分最大,就是使a*log(y) + b*log(1-y)取最大值,当且仅当y = a/(a+b)时满足,也就是D(x) = pdata(x) / (pdata(x) + pg(x)).

        可以发现当pdata与pg完全拟合时D*输出恒为1/2.

        2)最优的G

        将最优的D代入到价值函数中,会得到如下式子:

        对两个log进行如下变形

        可以发现这就是pdata和(1/2)*pdata+pg这两个分布的KL散度,写成如下形式,由于KL散度大于等于0,当且仅当pdata = pg时取0,故pdata = pg时C(G)最小,也就是G最优

        补充知识:KL散度,描述两个分布的相似程度的量,定义如下

,表示p和q两个分布的KL散度。

        3)对抗收敛

        在对抗过程中如果每次D和G都能到最优,则最终pg会收敛于pdata. 证明略。

    3. 未来工作

        ① 条件生成模型 (Conditional Generative Model): 通过将条件变量 c 作为输入添加到生成器 G 和判别器 D 中,可以得到一个条件生成模型 p(x∣c),即生成的样本 x 是基于条件 c 的;

        ② 近似推断 (Learned Approximate Inference): 可以训练一个辅助网络来预测在给定观测数据 x 下时的隐变量 z。推断网络可以在生成器网络训练完成后进行训练。通过预测 z,可以将隐变量与某个条件或特征相关联,从而控制生成过程;

        ③ 半监督学习 (Semi-Supervised Learning): 判别器或推断网络的特征可以在有限标注数据的情况下提高分类器的性能;

        ④ 效率改进 (Efficiency Improvements): 训练过程的效率可以通过优化生成器和判别器的协调方法,或者改进训练过程中采样隐变量 zzz 的分布来大幅提高。

 二、VAE (2013.12)

        VAE的最终目标是要找到观测数据的最大似然分布pθ(x),然后可以从该分布中采样进行生成。但是对于图像这样的数据,直接建模用最大似然找pθ(x)是不现实的,因此要引入隐变量 (Latent Variable) z 的概念 (隐变量是观测不到但对观测数据有影响的反映其潜在信息的数据,维度比观测数据小,比如一个圆的图像,隐变量就是圆心和半径这种隐藏的数据)。有了隐变量之后,x的似然就变成了边缘似然,pθ(x) = ∫ pθ(x,z) dz = ∫ pθ(z)pθ(x|z) dz,这个积分计算不了,考虑贝叶斯公式,有后验分布pθ(z|x) = pθ(x|z)pθ(z)/pθ(x),则pθ(x) = pθ(x,z)/pθ(z|x),但是这个后验分布同样也计算不了,于是采用变分推断 (Variational Inference) 用另一个分布 qϕ​(z∣x) 去近似后验分布,而两个分布的相似度可以用KL散度来描述,将KL散度的式子进行一些变形,可以化出一个log pθ(x),换一下位置,得到x的似然函数

        上面 pθ(x) = ∫ pθ(z)pθ(x|z) dz 这个式子就是混合高斯模型 (Mixture Gaussian model) 的连续形式。一个复杂的分布可以用多个高斯分布来表示,假设有 K 个高斯分布,这 K 个高斯分布就是混合模型的隐变量,混合分布为

,这里

表示第 i 个高斯分布在观测数据中所占概率,

表示第 i 个高斯分布的分布函数。而实际上 K 取多少我们无法知道,因此需要将其连续化为

,其中

为先验假设.

        注:在训练阶段z是从近似后验分布qϕ​(z|x)中得到的,而推理阶段z是从先验分布pθ(z)中采样出来的,先验分布通常直接取标准高斯分布N(0,I)

    1. Objective Function

        我们的目标是最大化这个似然函数,由于KL散度 ≥ 0,因而log pθ(x) ≥  Eqφ(z|x) [− log qφ(z|x) + log pθ(x, z)],我们将右边称为ELBO (Evidence Lower Bound),可以发现通过优化θ和ϕ使ELBO变大,会让log pθ(x)变大KL散度变小,这正是我们的目标,因此目标函数L(θ, φ; x)就是ELBO. 继续将ELBO展开并变形,可以将其化为一个重构损失减去KL散度的形式。这个目标函数的梯度是可以通过一些推导估算出来的,这里省略这些推导。

ELBO、似然函数、KL散度的关系

    2. Reparameterization

        训练时隐变量z是从分布 qφ(z|x) 中采样出来然后进行后续正向传播的,这样就导致梯度没法回传,作者在这里采用了重参数化 (Reparameterization) 的技巧,通过引入一个与θ和φ都无关的随机变量ϵ,通常服从N(0,I),z是x, φ, ϵ三者的函数,即z = gφ(ϵ, x) (实际上是先由x和φ确定分布q的期望μ和方差Σ,然后由μ, Σ, ϵ三者得到z,如z = µ + Σϵ),这样就将随机性让ϵ承担了,梯度就可以回传给φ这些参数上了。

重参数化示意图

    3. Model Architecture

        下图就是VAE的整体网络结构,是一个Encoder-Decoder架构,其中φ是encoder的参数θ是decoder的参数。整个前向过程大致是:将x放入encoder得到近似后验分布qϕ​(z∣x)的期望μ和方差Σ,然后结合随机采样的变量ϵ得到z,将z放入decoder得到还原出来的xr,然后计算x与xr的重构损失 (这里是MSE),再减去根据μ和Σ计算出的KL散度,得到最终的Loss.

VAE 架构图

    4. 未来工作

        ① 学习分层生成架构:可以将网络设计成分层结构,让模型能够高效地学习隐变量分布,捕捉数据中的层次化特征;

        ② 带有隐变量的监督模型:在标签或数据存在噪声、不确定性或缺失的情况下,通过将隐变量引入到监督学习任务中,模型可以学习到数据的潜在结构和噪声的分布,从而提高模型的鲁棒性和泛化能力。

三、VQ-VAE (2017.11)

        VQ-VAE 是一种生成模型,它将 VAE 中的连续隐变量空间替换为一个离散的隐变量空间 (即码本

$Z_e$

),从而能更好地建模具有离散潜在结构的复杂数据。

        我们可以将其结构概括为:VQ-VAE = Encoder + Decoder + Codebook

    1. Model Architecture

        VQ-VAE 的核心在于向量量化 (Vector Quantization, VQ),它发生在编码器输出 

$z_e$

 和解码器输入

$\hat{z}$

之间。

VQ-VAE 架构图

  1. 量化操作 (Vector Quantization):

码本 (Codebook) 

$e$

这是一个由

$K$

个向量

$\{e_1, e_2, \dots, e_K\}$

组成的集合,这些向量是可学习的参数

赋值:量化后的隐变量

$\hat{z}$

就等于这个选定的码字

$e_k$

.

找到索引

$k$

:在码本

$e$

中,找到与

$z_e$

欧氏距离最小的码字

$e_k$

;

步骤:对于

$z_e$

中的每一个特征向量,执行最近邻查找

目标:将编码器

$E$

产生的连续特征 

$z_e$

映射到码本

$e$

中的一个离散向量。

(其中

$|| \cdot ||$

代表欧氏距离。)

    2. Objective Function

        VQ-VAE 的总损失函数旨在同时训练编码器、解码器和码本:

                Total Loss = L_reconstruction + L_commitment + L_codebook

        1) 重构损失(Reconstruction Loss)

  • 形式(使用 MSE):

目的:确保解码器能从量化后的

$\hat{z}$

中还原出原始图像

$x$

.

(表示:原始图像

$x$

与解码器重构图像的平方距离的期望。)

        2) 码本损失(Codebook Loss)

目的:更新码本

$e$

的参数,使其向编码器输出

$z_e$

靠近。

(表示:量化后的

$\hat{z}$

与编码器输出

$z_e$

的平方距离。在反向传播时,梯度只更新码本

$e$

,不更新

$z_e$

.)

        3) 承诺损失(Commitment Loss)

形式:引入超参数

$\beta$

(通常

$\beta=0.25$

)。

目的:更新编码器

$E$

的参数,鼓励

$z_e$

靠近它选择的码字

$\hat{z}$

.

(表示:编码器输出

$z_e$

与量化后的

$\hat{z}$

的平方距离。在反向传播时,梯度只更新编码器

$E$

,不更新

$\hat{z}$

.)

        3. 生成过程

            VQ-VAE 作为一个两阶段生成模型,其生成步骤如下:

    1. 第一阶段:提取离散索引
    2. 第二阶段:学习索引分布
    3. 推理阶段:生成样本

    使用 VQ-VAE 解码器

    $D$

    $\hat{z}'$

     还原成最终图像

    $\hat{x}'$

    .

    $Z_{\text{index}}'$

    转换为对应的码字

    $\hat{z}'$

     (通过查码本

    $e$

    ).

    使用训练好的 自回归模型 采样生成一个新的离散索引地图

    $Z_{\text{index}}'$

    .

    训练一个自回归模型(如 Transformer)来学习上述离散索引地图

    $Z_{\text{index}}$

    的联合概率分布

    $p(Z_{\text{index}})$

    .

    训练 VQ-VAE,并使用其编码器

    $E$

    提取训练图像的离散码本索引地图

    $Z_{\text{index}}$

    .

    四、SMLD (2019.07)

            Score-based Generative Modeling (SGM) 通过估计数据分布的对数概率密度梯度 (即 Score) 并结合朗之万动力学 (Langevin dynamics) 来生成样本,其中最著名的就是Denoising Score Matching with Langevin Dynamics (SMLD).

        1. 背景

            1) Score Function

            概率密度

    $p(x)$

    的 Score 定义为

    $\nabla_{x}\log p(x)$

    ,这是一个向量,指向对数数据密度增长最快的方向。SGM 使用一个通过 Score Matching 训练的神经网络来学习这个 Score,目标函数是一个MSE:

            2) Markov Chain Monte Carlo (MCMC)

            马尔可夫链蒙特卡洛 (MCMC) 是一类统计采样方法,用于从难以直接采样的复杂概率分布

    $\pi(\mathbf{x})$

    中生成一系列相关的样本。

    采样过程: 通过在链上迭代转移,样本序列

    $\mathbf{x}_0, \mathbf{x}_1, \mathbf{x}_2, \dots$

    最终将收敛到目标分布。

    核心思想: 构造一个马尔可夫链,使其平稳分布 (Equilibrium Distribution) 恰好是目标分布

    $\pi(\mathbf{x})$

    .

            3) Langevin Dynamics

            朗之万动力学(Langevin Dynamics)是描述粒子在势场中受随机力驱动的扩散过程的经典物理模型。在概率模型中,给定一个目标概率分布

    $p(x)$

    ,我们的目标是采样出概率密度更大的那些样本。朗之万动力学结合确定性梯度随机噪声,通过一种“随机漫步”的方式,从目标概率分布中生成样本:随机选取空间中一个点 (例如从高斯分布中采样),然后计算概率密度函数在该点的梯度,然后沿着梯度的方向计算下一个点,直到收敛。为了防止收敛到局部极大值,我们在每一步迭代计算的时候都会增加高斯噪声。

            标准的 Langevin Dynamics 公式如下:

    其中:

    随机项 

     提供探索能力,避免陷入局部极小值。

     引导粒子向高概率区域移动;

    ​ 是标准维纳过程 (布朗运动);

     是“势能” (负对数概率密度);

            在实际应用中,需对上述 SDE 进行离散化。最常用的是欧拉–丸山法(Euler–Maruyama),得到:

            其中:

    $\sqrt{2\epsilon} \mathbf{z}_t$

     是噪声项,模拟随机扰动。

    $\mathbf{z}_t \sim \mathcal{N}(\mathbf{0}, \mathbf{I})$

    是标准高斯噪声;

    $\epsilon$

    是步长,控制更新幅度;

    $\nabla_x \log p(x)$

     是目标分布在x处的分数函数;

    $\mathbf{x}_t$

     是第t步的样本;

            这个公式看起来像是在“爬坡”:梯度

    $\nabla_x \log p(x)$

     引导样本走向概率高的地方,而噪声

    $\mathbf{z}_t$

    让它随机抖动,避免陷入局部极值。

            这就是 Unadjusted Langevin Algorithm (ULA) —— 一种 MCMC 采样器。也就是说当把 Langevin Dynamics 离散化后,它就变成了一种 MCMC 采样方法 —— 通常称为 Langevin MCMC.

            但是由于原始的 Langevin 动力学在数据密度较低的区域(即样本稀疏区域)的分数函数估计可能不准确,这会导致采样效果不佳。

        2. Annealed Langevin Dynamics

            为了解决原始浪之万的问题,宋飏提出了退火朗之万动力学 (Annealed Langevin Dynamics, ALD),通过引入一系列逐渐减小的噪声水平

    $\sigma_1 > \sigma_{2} > \dots > \sigma_{L} > 0$

    ,将原本单一的分数函数扩展成一个依赖于噪声水平 

    $\sigma_i$

     的函数簇,并在不同噪声水平下训练,从而得到一系列受噪声污染后的中间数据分布 (可以发现和 DDPM 很相似)。整个基于ALD的推理过程如下:

    1. 随着噪声水平的降低,分布变得更接近真实数据分布,分数函数精确地引导样本收敛到数据流形上,完成最后的去噪。

    然后,逐步减小噪声水平

    $\sigma_{2}, \dots, \sigma_{L}$

    ,并在每个噪声水平上进行 Langevin 迭代

    从最大的噪声水平

    $\sigma_1$

    开始,使用相应的分数函数

    $\mathbf{s}_\theta(\mathbf{x}, \sigma_1)$

    进行 Langevin 迭代,在这个高噪声级别下分数函数引导样本快速脱离纯噪声区

    先从一个固定的先验分布(如均匀噪声)初始化样本

    $\tilde{x}_0$

            伪代码:

            其中内循环是 Langevin 迭代 (这里的 t 和 DDPM 的 t 不是一个概念,σ 才对应 DDPM 的 t.),α 是退火步长。

        3. Noise Conditional Score Network

            对于每一个噪声水平

    $\sigma$

    ,都有一个对应的分布

    $p_\sigma(\mathbf{x})$

    . 而 NCSN 学习的分数函数就是这个噪声水平相关分布的梯度:

    $s_\theta(x, \sigma) \approx \nabla_x \log p_\sigma(x)$

    . 对于训练,需要采用 Score Matching 的变体 Denoising Score Matching,有噪声水平为 σ 时某个数据样本 x 的条件分布为

    ,则任意 σ 的边缘分布的损失函数为:

            最终目标函数为所有噪声水平的损失函数的加权平均

            其中权重经验性地选择为 

    $\lambda(\sigma) = \sigma^2$

    .

    五、DDPM (2020.06)

            扩散模型 Denoising Diffusion Probabilistic Models (DDPM) 是从采样得到的噪音变量生成目标数据样本,其模型包括两个过程:正向过程 (forward process) 和反向过程 (reverse process),其中正向过程又称为扩散过程 (diffusion process),指根据分布 q(xt|xt-1) 往图像中一步步加噪声 (实际上是由预定义好的分布直接生成某一步的噪声图像);而反向过程根据分布 pθ(xt-1|xt) 将噪声图像逐步去噪直到恢复成原图像。无论是正向过程还是反向过程都是一个马尔可夫链 (Markov Chain,状态转移时下一状态的概率分布只由当前状态决定,而与之前的状态都无关),其中正向过程是固定的,没有要训练的网络,而反向过程要训练一个网络 (通常是U-Net),并且每个step共享这个网络。

    扩散模型基本结构

        1. Forward Process

            正向过程 (或扩散过程) 是一个固定的马尔可夫链,没有要学习的参数,每一步根据方差调度β1, ..., βT来增加高斯噪音,即

    ,其目的是将数据分布逐渐变为标准高斯分布 N(0,I),整个正向过程的联合分布可表示为状态转移的累乘,即

    . 由于正向过程每一步的分布都是由固定的β超参数确定的,经过计算可以直接得到任意一步分布的闭式:定义

    .则有

    .

        2. Reverse Process

            反向过程从一个噪声图像xT开始,这张噪声图像从先验标准高斯分布中采样得到,即

    . 每次去噪的状态转移也是一个高斯分布,其期望方差由当前状态xt,参数θ,以及t (即time embedding给每次去噪加入步数的信息,使不同步数去噪时关注不同的地方) 决定,即

    ,这是对正向过程的逆分布也就是真实后验分布

    $q(x_{t-1}|x_t)$

    的拟合 (但是这个分布是 intractable 的,不过我们后面在对数似然的 ELBO 中只需用到与 tractable 的条件后验分布 

    $q(x_{t-1}|x_t, x_0)$

     的KL散度)。整个反向过程是一个马尔可夫链,可以表示为所有状态转移的累乘,即

    .

        3. Objective Function

            根据前面的定义可以写出负对数似然的上界,也就是似然的ELBO,并将其作为损失函数。

            代入正向过程的闭式改写ELBO

    ,其中

    就是我们要拟合的真实后验分布 (不直接使用这个分布是因为它需要x0,而推理时是没有x0的,只能用于训练)。

            由于式中的LT与θ无关的,L0是最后一步降噪很小可以忽略,故ELBO可以只保留所有的Lt (t>1),即:

    . 也就是所有真实后验分布与近似后验分布的KL散度之和的期望

            为了进一步简化,作者将pθ的方差Σ固定为σt^2,即

     (其中σt是与t有关的常数,经过实验

    效果差不多),从而两个后验分布的KL散度就可以简化为两个分布的均值μ的简单平方距离

    .

            但是

    的表达式还是有点复杂,作者使用VAE中的重参数化技巧,将xt写成x0与一个采样自标准高斯分布的随机噪声ϵ的和:

    ,然后再进行变形,得到x0:

    ,将其代入原表达式,得到

    . 再将同样的技巧应用到μθ上,得到

    . 最后将两个表达式代入到损失函数中,得到最终的损失函数

    . 也就是实际噪声与预测噪声的平方距离,这就将目标转变为了预测噪声 (注意这个噪声是x0与xt之间的噪声,不是xt-1与xt之间的噪声),而不是预测一整张图像。

            另外在训练时对每个样本的所有t时间步都求和计算成本太高,可以选择对每个样本只随机选择一个时间步进行损失计算,即

            这里推导得到的是带复杂权重的损失,而作者实验发现,直接用均方误差(不加权),实际上会让模型“自动忽略容易的小噪声任务,多关注困难的大噪声任务”,从而提升生成质量。

        4. 伪代码

            DDPM的训练和采样 (推理) 的伪代码如下:

            其中推理时去噪高斯采样是

    ,即

    .

        5. 与VAE的对比

            DDPM 和 VAE 的核心联系在于它们都源自变分推断(Variational Inference),并都试图最大化数据的对数似然下界 (Evidence Lower Bound, ELBO) 。

            潜变量模型 (Latent Variable Model):

    • VAE:将数据 x 映射到一个低维潜变量 z。其过程是 x -> z -> x'。
    • DDPM:将数据 x0 映射到一个与 x0 同维度的、完全是噪声的潜变量 xT。其过程是 x0 -> x1 -> ... -> xT(前向过程,即编码器),然后 xT -> ... -> x0'(反向过程,即解码器)。

            编码器-解码器结构 (Encoder-Decoder):

    • 编码器 q (前向过程): 在 DDPM 中是固定的马尔可夫链(通过添加高斯噪声)。这与 VAE 中需要学习的编码器 qΦ(z|x) 形成了显著的差异。
    • 解码器 pθ (反向过程): DDPM 用一个神经网络 θ(通常是 U-Net)来学习从 xt 到 xt-1 的反向转移,这相当于 VAE 中的解码器

            因此,DDPM 可以被称为一种多步骤 VAE (Multi-step VAE),它将编码和解码过程分解成了许多小的、固定步长(编码)和学习步长(解码)的步骤。不同的是

    • VAE生成质量样本通常较为模糊,但速度极快
    • DDPM样本通常具有极高的保真度,但生成速度较慢 (需 T 步)

            另外由于VAE的潜变量是低纬度,可以压缩信息学到抽象特征,而DDPM的是和输入同纬度,导致 VAE 比 DDPM 更适合表征学习,从而更适合多模态理解和生成的统一。例如 VAE 可以将文本和图像都映射到这个共享的 z 空间,我们可以用 zText 来指导图像解码器 pθ(xImage| zText) 实现文本到图像的生成。

    六、Score SDE (2020.11)

            Score SDE (Score-Based Generative Modeling through Stochastic Differential Equations) 提出了一个统一的框架,通过随机微分方程 (SDE) 将基于分数的生成模型 (SMLD) 和扩散概率模型 (DDPM) 联系起来。该框架将离散的噪声层级推广到连续的时间域,引入了新的采样方法和概率流ODE,并为条件生成提供了理论基础。

        1. SDE 框架

            Score SDE 使用 SDE 来描述数据扩散到噪声的过程,以及从噪声生成数据的反向过程。

    目标函数 (Objective Function): 我们使用一个时间依赖的神经网络

    $s_\theta(x, t)$

    来拟合 Score。目标函数是连续形式的 Denoising Score Matching:

    反向过程 (Reverse SDE): 这是一个逆时间 (Reverse-time) 的扩散过程。Anderson (1982) 证明了上述 SDE 的逆过程也是一个 SDE:

    其中

    $d\bar{w}$

    是反向时间的布朗运动,

    $dt$

    是负的时间步长。核心点: 要模拟反向过程生成数据,我们只需要估计每一时刻的 Score 

    $\nabla_x \log p_t(x)$

    .

    正向过程 (Forward SDE): 我们将数据

    $x(0) \sim p_{data}$

    逐渐加入噪声,直到时刻

    $T$

    变为先验分布

    $p_T$

    (通常是高斯分布)。这个连续过程由以下 Ito SDE 描述:

    其中

    $f(x, t)$

    是漂移系数 (Drift coefficient),

    $g(t)$

    是扩散系数 (Diffusion coefficient),

    $w$

    是标准维纳过程 (布朗运动)。

    正向SDE与逆向SDE

        2. 统一 SMLD 与 DDPM

            作者证明了 SMLD 和 DDPM 实际上是特定 SDE 的离散化形式。扰动核 (perturbation kernel) 

    在离散形式下的下标为

    ,取

    ,可以将其映射到连续形式的下标

    ,于是就可以得到以下SDE:

    sub-VP SDE: 另外作者又提出了一种新的 SDE

    ,其方差在中间过程总是小于等于 VP-SDE,通常能获得更好的似然值。

    VP-SDE (Variance Preserving): 对应于 DDPM (噪声 ε 和分数 score 可以互相转换),其离散形式为

    ,将其映射到连续形式,得到 SDE

    $dx = -\frac{1}{2}\beta(t)x dt + \sqrt{\beta(t)} dw$

    随着

    $t \to \infty$

    ,方差保持有界 (通常为 1)。

    VE-SDE (Variance Exploding): 对应于 SMLD (NCSN),其离散形式为

    ,将其映射到连续形式,得到 SDE 

    $dx = \sqrt{\frac{d[\sigma^2(t)]}{dt}} dw$

    ,随着

    $t \to \infty$

    ,方差会爆炸 (变得非常大)。

        3. Predictor-Corrector Samplers

            由于反向过程是连续的 SDE,我们可以使用通用的 SDE 数值求解器 (numerical solver),如 Euler-Maruyama 方法 (另外对于 DDPM 的采样方法作者称之为祖先采样 (Ancestral sampling),是反向 VP-SDE 的一种特殊离散化形式),但作者结合了 Score-based 的特性,利用 score 提出了一种新的采样方法Predictor-Corrector (PC) Samplers。

    • Predictor: 使用数值 SDE 求解器 (如 Reverse Diffusion 或 Ancestral Sampling) 预测下一个时刻的状态。
    • Corrector: 使用 Score-based MCMC (如 Langevin Dynamics) 对当前状态的边际分布进行校正。
    • 优势: 结合了 SDE 求解器的高效和 MCMC 的精确性,用预测器沿着轨迹走一步,再用矫正器矫正由于离散化带来的误差。

            这一框架还可以统一 SMLD 和 DDPM 原始的采样方法:SMLD 的采样方法相当于 Predictor 是恒等映射,Corrector 是退火朗之万动力学;DDPM 的采样方法相当于 Predictor 是祖先采样, Corrector 是恒等映射。

            VE SDE 和 VP SDE 各自的 PC 采样器定义如下:

            其中 Corrector 各个数值计算如下:

        4. Probability Flow ODE

            对于任意扩散过程,都存在一个确定性的 ODE,其边缘概率密度

    $p_t(x)$

    与 SDE 完全一致:

    这被称为 Probability Flow ODE,有了它再利用 ODE 与 Neural ODE 的联系,可以通过变量瞬时变化公式计算精确的对数似然 (Log-likelihood),而不是像 DDPM 那样计算变分下界 (ELBO)。并且这个公式也将成为后面 Flow Matching 的基础。

        5. 可控生成

            利用 SDE 框架,可以将条件生成

    $p(x|y)$

     的反向 SDE 修改为包含分类器梯度的形式:

    其中

    $\nabla_x \log p_t(y|x)$

    可以通过训练一个 time-dependent 的分类器来获得,这将是以后 Classifier Guidance 和 Classifier-Free Guidance 的理论基础。

    七、Classifier-Free Guidance (2022.07)

            Classifier-Free Guidance (CFG) 由 Google Research 提出,旨在解决 Classifier Guidance 需要训练额外噪声分类器的问题。它通过联合训练条件模型和无条件模型,并在采样时通过线性组合两个得分估计,实现了在不需要显式分类器的情况下控制生成结果的保真度 (Fidelity) 和多样性 (Diversity) 的权衡。目前它已成为 DALL·E 2, Stable Diffusion (LDM) 等主流生成模型的标准配置。

        1. 背景与动机

            在 CFG 出现之前,Dhariwal & Nichol (2021) 提出了 Classifier Guidance,利用一个在噪声数据上训练的额外分类器

    $p_\phi(c|z_t)$

    的梯度来引导生成过程。

    • 局限性
      1. 训练复杂:必须训练一个能处理噪声输入的额外分类器,无法直接使用预训练的分类器。
      2. 对抗攻击性质:采样过程类似于基于梯度的对抗攻击,虽然提高了 IS (Inception Score) 但可能导致图像失真。
    • 目标:CFG 希望在不需要额外分类器的情况下,达到同样的生成质量提升效果。

        2. 方法

            1) 训练

            CFG 不训练独立的分类器,而是训练一个同时具备条件生成和无条件生成能力的单一扩散模型

    $\epsilon_\theta(z, c)$

    .

    模型输出:同一个神经网络可以输出条件得分

    $\epsilon_\theta(z, c)$

    和无条件得分

    $\epsilon_\theta(z, \emptyset)$

    .

    实现方式:在训练过程中,以概率

    $p_{uncond}$

     (超参数,如 0.1 或 0.2) 随机丢弃条件信息

    $c$

    ,将其替换为一个特殊的“空标签” (null token,

    $\emptyset$

    )。

            2) 采样

            在推理阶段,CFG 通过混合条件得分估计和无条件得分估计来构造最终的引导得分

    $\tilde{\epsilon}_\theta$

    .

            公式如下:

            其中:

    $w$

    Guidance Scale (引导权重/强度),控制引导的强弱。

    $\epsilon_\theta(z_t, \emptyset)$

    是无条件生成的预测噪声;

    $\epsilon_\theta(z_t, c)$

    是条件生成的预测噪声;

        3. 理论

            为什么这个公式有效?根据贝叶斯公式,分类器的概率密度梯度可以表示为:

    $\nabla_{z} \log p(c|z) = \nabla_{z} \log p(z|c) - \nabla_{z} \log p(z)$

            在 Score-based 模型中,分数 (Score)

    $\nabla_z \log p(z)$

    与预测噪声

    $\epsilon$

    成正比 (相差一个系数

    $-\frac{1}{\sigma}$

    )。

            因此,我们可以推导出“隐式分类器”的梯度:

    $\text{Implicit Classifier Gradient} \approx -(\epsilon_\theta(z, c) - \epsilon_\theta(z, \emptyset))$

            将 Classifier Guidance 的公式

    $\hat{\epsilon} = \epsilon + w \cdot \nabla \log p(c|z)$

    中的梯度项替换掉,即可推导出 CFG 的公式。

    • 直观理解:CFG 引导生成方向远离“通用/无条件”的图像分布,并强力推向“特定条件”的分布 。

        4. 超参数选择

            CFG 同样面临生成质量与多样性的权衡,这完全由超参数

    $w$

    控制:

    $w$

    过大:会导致图像饱和度过高或出现伪影 (Artifacts)。

    $w > 0$

    :增强条件的影响。随着

    $w$

    增大,图像的 Fidelity (如 IS 分数) 提高,更符合 Prompt 描述,但 Diversity (如 Recall) 下降。

    $w = 0$

    :标准的条件扩散模型,无引导。

    八、Flow Matching (2022.10)

        1. 理论与概念

            详细的Flow Matching介绍

        2. 两种概率路径特例

            Flow Matching 中概率路径的选择非常关键,这里介绍原论文中给出的两个特例。

            1) 扩散条件向量场 (Diffusion Conditional VFs)

            这些路径源于传统的扩散模型(如 Variance Exploding - VE 和 Variance Preserving - VP),是从噪声

    $\to$

    数据方向逆转的随机过程。

    Variance Preserving: VP 的条件概率路径为

    ,其中

    是噪声调度。从中可以导出条件向量场

    .

    Variance Exploding:VE 的条件概率路径为

    ,其中

    是从0到1的递增函数。从中可以导出条件向量场

    .

            优势与局限:虽然这些路径在数学上与之前的扩散模型一致,但作者发现使用 Flow Matching 目标函数进行训练比传统的得分匹配(Score Matching)更加稳健 。此外,作者指出扩散路径的一个缺陷是它们在有限时间内无法达到真正的纯噪声分布,通常需要近似处理 。

            2) 最优传输条件向量场 (Optimal Transport Conditional VFs)

            作者提出了一种更自然、更高效的路径构造方式,这是这篇论文的另一个重要创新点,其均值和标准差随时间线性变化

    $\mu_t(x) = tx_1$

    $\sigma_t(x) = 1 - (1 - \sigma_{min})t$

    ,其中

    是一个足够小的数,从中可以导出条件向量场

    ,对应的流为

    ,CFM损失为

    .

            这种线性路径实际上对应于两个高斯分布之间的 最优传输位移映射 (Optimal Transport displacement map) 。在 OT 位移映射下,粒子总是沿着直线轨迹恒定速度移动,其路径保持直线,避免了扩散路径中可能出现的“超调”和回溯,并且由于生成的向量场方向恒定,这使得回归任务更简单,训练和采样效率更高。

    Diffusion路径 与 OT路径 轨迹对比

            可以发现下图中 Diffusion路径 的分数函数的中心点随时间变化,也就导致了粒子可能出现回溯;而 OT路径 的中心点一直在目标点,粒子可以稳定向目标移动。

    Diffusion 路径 与 OT路径 分数函数对比 (红色代表向量幅度小,蓝色代表幅度大)

        3. 与 SDE 对比

            1) 概率流 ODE(Probability Flow ODE)

            概率流 ODE(Probability Flow ODE)描述的是一个无噪声确定性的逆向采样过程。

    类别优点 (Pros)缺点 (Cons)
    理论与效率* 可逆性高: ODE 过程(基本上)是可逆的。 这意味着可以从最终状态精确反推出初始状态,理论分析和推导相对简单。* 鲁棒性可能较低: 采样过程中缺乏随机噪声注入,可能陷入局部极大值,模型对于训练数据中的微小偏差或模型误差的鲁棒性可能不如 SDE。
    似然计算* 精确似然计算: ODE 流能够进行精确的对数似然计算(通过使用雅可比行列式的迹),这对于评估模型质量非常重要。* 采样质量可能稍逊: 缺乏随机性可能使得生成的样本多样性细节上不如 SDE 带来的噪声注入那么自然或丰富(尤其在早期研究中)。
    采样速度* 易于加速: ODE 理论结构更简单,更容易应用高性能数值求解器(如 DDIM、各种高阶 Runge-Kutta 方法),加速采样的技术研究更深入、更直接。这使得 ODE 成为快速生成的首选。* 对求解器精度要求高: 因为是确定性过程,任何数值求解误差都会累积,可能对最终的生成质量产生较大影响,要求高阶的求解器。

            2) SDE(逆向 SDE)

    SDE 模型描述的是一个带噪声的、随机性的逆向采样过程。

    类别优点 (Pros)缺点 (Cons)
    生成质量* 生成质量高: 采样过程注入了噪声(扩散项 $\sigma(t, X(t))dW(t)$),这种随机性往往有利于生成更高质量更逼真的图像细节。* 理论复杂性高: 涉及随机微积分(Itô 或 Stratonovich),理论分析和推导比 ODE 复杂得多,加速采样的研究难度较大。
    鲁棒性* 鲁棒性强: 随机噪声的注入使得采样路径具有一定的随机游走性质,可能有助于模型逃离局部最优或训练数据中的伪影,使得采样过程对模型误差更鲁棒* 采样速度慢: SDE 的数值求解(如欧拉-马利亚马法)通常需要更多、更小的步骤才能获得足够的精度,因此采样速度较慢,且加速方法研究不如 ODE 成熟。
    灵活与统一* 模型统一框架: SDE 能够自然地统一传统的去噪扩散概率模型(DDPM)和基于分数的生成模型,提供了一个更灵活的建模框架。* 无法精确计算似然: SDE 过程通常无法进行像 ODE 那样精确的对数似然计算

    九、Latent Diffusion Model (2021.12)

            Latent Diffusion Model (LDM),是 Stable Diffusion 的核心,是一种高效的生成模型,它将扩散模型(如 DDPM)的操作从高维像素空间转移到更低维的潜在空间 (Latent Space),从而大幅减少计算资源和训练/推理时间,同时保持极高的生成质量。

        1. 核心思想与架构

            LDM 巧妙地结合了 VQ-VAE 或 VAE 的编码器-解码器结构DDPM 的扩散和去噪过程

    解决方案: 使用一个预训练的自编码器(如 VAE)将图像压缩到一个更小的潜在空间

    $z$

    ,然后在低维空间上执行扩散和去噪。

    问题: DDPM 直接在像素空间 (如

    $512 \times 512 \times 3$

    维) 运行,计算和内存成本极高。

            LDM 的整体架构由三个主要组件构成:

    组件名称作用模型类型
    感知压缩(Perceptual Compression)

    编码器 $E$: 将高维图像 $x$ 压缩到低维潜在表示 $z$.

     

    解码器 $D$: 将 $z$ 解码回像素空间 $\hat{x}$.

    VAE/VQ-VAE
    潜在空间扩散 (Latent Diffusion)在潜在空间 $\mathbf{z}$ 上学习去噪,充当扩散模型的参数化逆过程$p_{\theta}(\mathbf{z}_{t-1}\mathbf{z}_t)$U-Net
    条件机制 (Conditioning Mechanism)负责将各种条件信息 $y$ (如文本、类别标签等) 引入到 U-Net 中,指导去噪过程。投影层 + Cross-Attention
    LDM 将高维数据的学习(如图像)分为两个不同的阶段:感知压缩阶段: 训练一个 VAE/VQ-VAE,实现高效的、感知上等效的压缩和解压缩。潜在生成阶段: 在低维潜在空间上训练一个扩散模型(U-Net),用于生成和去噪。

    LDM 架构图

        2. 潜在扩散过程

            1)  编码与压缩

            LDM 首先使用预训练的编码器

    $E$

    将原始图像

    $\mathbf{x} \in \mathbb{R}^{H \times W \times 3}$

    编码为一个低维的潜在表示

    $\mathbf{z} \in \mathbb{R}^{h \times w \times c}$

    .

    其中,

    $h < H, w < W$

    . 例如,可以将

    $512 \times 512$

    图像压缩到

    $64 \times 64$

    的潜在空间。

            2) 潜在空间的扩散与去噪

            所有的扩散和去噪操作都在这个低维潜在空间

    $\mathbf{z}$

    上进行。

    反向去噪:训练一个 U-Net 预测每一步添加的噪声

    $\boldsymbol{\epsilon}$

    ,以实现去噪。损失函数: 与 DDPM 类似,但作用在潜在空间上。

    正向扩散:向潜在变量

    $\mathbf{z}$

    中逐步添加高斯噪声,直到变成纯噪声

    $\mathbf{z}_T$

    (其中

    $\boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})$

            3) 解码与生成

            在推理时,U-Net 从

    $\mathbf{z}_T \sim \mathcal{N}(\mathbf{0}, \mathbf{I})$

    开始去噪,得到最终的去噪潜在变量

    $\mathbf{z}_0$

    . 然后使用预训练的解码器

    $D$

    将其还原为高分辨率图像

    $\hat{\mathbf{x}}$

    .

        3. 条件机制

            LDM 引入了 Cross-Attention条件嵌入机制,使其能够将各种模态的条件信息

    $y$

    融合到 U-Net 内部然后采用 Classifier-Free Guidance 进行条件生成。

    $\mathbf{K}$

    (Key) 和

    $\mathbf{V}$

    (Value) : 来自条件特征

    $\mathbf{y}$

    .

    $\mathbf{Q}$

    (Query) : 来自 U-Net 的含噪潜在特征

    $\mathbf{z}_t$

    .

    注入 U-Net:在 U-Net 的中间层,通过 Cross-Attention 块将潜在特征

    $\mathbf{z}_t$

    与条件

    $\mathbf{y}$

    连接起来。

    编码条件信息:不同的条件(文本、标签、语义图等)首先通过一个领域特定的编码器

    $\tau_{\phi}$

    转化为一个特征向量序列

    $\mathbf{y}$

    (例如,文本通过 Transformer 编码器)。

    十、DiT (2022.12)

            Diffusion Transformer (DiT) 是一种将 Transformer 架构引入到扩散模型 DDPM 去噪过程中的创新模型。它将传统的 U-Net 去噪骨干网络替换为一系列 Transformer 块,在潜在空间

    $\mathbf{z}$

    上执行去噪操作。

    • 核心思想: 将图像去噪任务建模为对潜在图像块(Latent Patches)序列的序列到序列(Sequence-to-Sequence)预测任务

        1. Model Architecture

            DiT 的整体架构遵循 LDM 的范式,即在 VAE/VQ-VAE 压缩后的潜在空间中操作。

            1) 输入处理 (Input Processing)

    • 分块与展平 (Patchify & Flatten):

    将这些块展平为一维向量,形成一个序列

    $\mathbf{z}_{\text{seq}} \in \mathbb{R}^{N \times d}$

    ,其中

    $N$

    是块的数量,

    $d$

    是每个块的维度 (

    $d = \text{patch\_size} \times \text{patch\_size} \times c$

    ).

    将潜在特征

    $\mathbf{z}$

    拆分成一系列不重叠的二维图像块(Patches)。

    潜在表示: 原始图像

    $\mathbf{x}$

    首先通过 VAE 编码器

    $E$

    压缩为潜在特征

    $\mathbf{z} \in \mathbb{R}^{h \times w \times c}$

    .

    Patchify示意图

    • 位置嵌入 (Positional Embedding): 由于 Transformer 缺乏卷积操作的位置归纳偏置,需要添加可学习的位置嵌入到每个块向量中,以保留空间信息。

    时间与条件嵌入: 时间步

    $t$

    和其他条件

    $c$

    被编码为向量,并通过自适应归一化 (AdaLN)注入到每个 Transformer 块中。

            2) Transformer 骨干网络

                    DiT 的去噪模型

    $\boldsymbol{\epsilon}_{\theta}(\mathbf{z}_t, t, c)$

    由堆叠的 Transformer Encoder Block构成,用于处理潜在块序列

    $\mathbf{z}_{\text{seq}}$

    .

    • 结构: 每个 Transformer 块包含一个 多头自注意力 (Multi-Head Self-Attention) 子层和一个 MLP 子层。
    • 归一化与条件注入: 在自注意力和 MLP 子层之前,使用 AdaLN 或其变体 (AdaLN-Zero) 进行归一化和条件注入。

    输入: 潜在块序列

    $\mathbf{z}_{\text{seq}}$

    .

            3) 输出处理 (Output Processing)

    最终预测层: 一个最终的线性投影层将

    $\mathbf{z}'$

    映射到预测的噪声

    $\boldsymbol{\epsilon}_{\theta} \in \mathbb{R}^{h \times w \times c}$

    .

    逆分块与重塑: Transformer 块的输出序列

    $\mathbf{z}'_{\text{seq}}$

    被重新排列并重塑回二维潜在特征

    $\mathbf{z}' \in \mathbb{R}^{h \times w \times c}$

    .

    DiT 架构图

        2. 条件嵌入方法

                    作者探索了四种将时间

    $t$

    和类别

    $c$

    (Conditioning)信息注入到 Transformer 块中的机制,它们在计算效率、灵活性和归一化策略上有所不同。

            1) 语境嵌入 (In-context Conditioning)

    • 处理方式: 这两个条件 Token 在 Transformer 块内被视为普通的图像 Token,与其他 Token 一起参与自注意力的计算,从而将条件信息融入整个序列。
    • 输出处理: 在经过最后一个 Transformer 块后,这两个条件 Token 会被移除
    • 计算效率: 对模型引入的 Gflops 可以忽略不计(negligible),因为它只增加了序列长度。
    • 类比: 类似于 ViT 中的 [CLS] Token,用于承载全局信息。

    机制:

    $t$

    $c$

    的嵌入向量作为两个额外的 Token,直接拼接到输入的潜在图像块序列中。

            2) 交叉注意力块 (Cross-Attention Block)

    • 注入方式: 图像潜在 Token 序列作为 Query,条件序列作为 Key 和 Value。
    • 计算效率: 引入的 Gflops 最多,约为 15% 的开销(overhead),但提供了最灵活的、基于内容的条件注入。
    • 类比: 类似于原始 Transformer 和 LDM 中用于类别标签等条件的注入方式。

    机制: 将 

    $t$

    $c$

    的嵌入向量串联起来,形成一个长度为二的序列,作为单独的条件序列。Transformer 块被修改,在多头自注意力(Multi-Head Self-Attention)之后,增加一个多头交叉注意力 (Multi-Head Cross-Attention) 层。

            3) 自适应层归一化 (AdaLN) 块

    • 机制: 替换 Transformer 块中的标准 Layer Norm 为 Adaptive Layer Norm (AdaLN)
    • 计算效率: 引入的 Gflops 最少,是计算效率最高的条件注入方式。

    局限性: 这种机制限制了对所有 Token 应用相同的函数

    $\gamma$

    $\beta$

    是全局生成的),这意味着它无法在空间维度上对特征进行精细的条件调整。

    参数回归: AdaLN 不直接学习

    $\gamma$

    $\beta$

    参数,而是从

    $t$

    $c$

    嵌入向量的和 (sum) 回归 (regress) 出维度级的缩放

    $\gamma$

    和偏移

    $\beta$

    参数,也就是

    \begin{bmatrix} \gamma(c+t) \\ \beta(c+t) \end{bmatrix} = \operatorname{MLP}(c+t)

    ,从而有

    y_i = \gamma_i(c+t) \cdot \hat{x}_i + \beta_i(c+t)

    ,其中

    $\epsilon$

     ≈ 0.

            4) AdaLN-Zero 块

    • 机制: 对 AdaLN 块的修改,旨在实现残差块的零初始化(Zero-Initialization),使残差块在初始化时表现为恒等函数。

    目标: 在初始化时,通过零初始化

    $\alpha$

    (即使预测

    $\alpha$

    的 MLP 输出接近零),使得残差分支的贡献为零,从而加速大规模训练的收敛和稳定性。

    应用位置:

    $\alpha$

    参数被应用在 DiT 块内任何残差连接之前,即

    .

    额外参数: 除了回归

    $\gamma$

    $\beta$

    之外,还回归一个维度级(dimensionwise)的缩放参数

    $\alpha$

    ,即

    \begin{bmatrix} \gamma(c+t) \\ \beta(c+t) \\ \alpha(c+t) \end{bmatrix} = \operatorname{MLP}(c+t)

    .

    十一、DALL·E 2 (2022.04)

            DALL·E 2 使用 CLIP 提取图像文本对数据的文本特征和图像特征,然后训练两个模型:一个 prior 模型根据文本特征生成图像特征,这个图像特征以 CLIP 提取的图像特征为 ground truth;一个 decoder 模型根据这个图像特征还原成原图像。用概率的角度解释其合理性就是

    .

    DALL·E 2整体架构图

        1. Prior

            Prior 模型根据 CLIP 文本特征预测对应的图像特征,方法有两种,一种是自回归预测,用文本特征序列去预测 CLIP 那边的图像特征;另一种是扩散生成,即采用扩散模型CLIP 文本特征作为条件,从带噪声的图像特征中去噪,预测 CLIP 图像特征

        2. Decoder

            Decoder 根据 Prior 得到的图像特征生成图像,使用的是扩散模型,并用上了Classifier Free Guidance、级联式生成等技巧。具体的说就是将图像特征 (训练时用 CLIP 图像特征,推理时用  Prior 生成的图像特征) 作为条件,从带噪声的图像中去噪,预测原图像

    十二、LoRA (2021.06)

            LoRA 是一种参数高效的微调(Parameter-Efficient Fine-Tuning, PEFT)方法,旨在解决对超大规模预训练模型进行微调时可能带来的过量训练开销、推理延迟等问题。

            LoRA 的核心假设是:在模型适应 (adaptation) 特定下游任务时,全连接层的权重的更新量

    $\Delta W$

    具有低“内在秩” (Low Intrinsic Rank),因此,更新矩阵

    $\Delta W$

    可以用两个低秩矩阵的乘积来近似表示。

        1. 重参数化 (Reparameterization)

            1) 数学原理

            对于预训练模型中的任意一个权重矩阵

    $W_0 \in \mathbb{R}^{d \times k}$

     (例如 Transformer 中的

    $W_q, W_v, W_k, W_o$

    矩阵):

    LoRA: 将更新量

    $\Delta W$

    分解为一个低秩表示

    $\Delta W = BA$

    .

    全量微调: 权重更新为

    $W = W_0 + \Delta W$

    .

            其中:

    只有矩阵

    $A$

    $B$

    中的参数是可训练的 (Trainable).

    $\Delta W = BA$

    低秩分解矩阵,

    $B \in \mathbb{R}^{d \times r}$

    $A \in \mathbb{R}^{r \times k}$

    $r$

    是 LoRA 模块的超参数,且

    $r \ll \min(d, k)$

     (通常

    $r$

    可以很小,如 1 或 2,而

    $d$

    可能高达 12,288).

    $W_0$

    预训练权重,在微调过程中被冻结(Frozen),不接收梯度更新。

            2) 前向传播 (Forward Pass)

            LoRA 模块在计算时是并行进行的,因此不会引入推理延迟 (Inference Latency):

            其中

    $\mathbf{x}$

    是输入,

    $\mathbf{h}$

    是输出。

    LoRA示意图

            3) 初始化和缩放

      • 这实现了零初始化的效果,即训练开始时模型与原始预训练模型的行为相同。

    这个缩放因子有助于减少在改变秩

    $r$

    时重新调整学习率等超参数的需求。

    $\alpha$

    是一个常数,通常被设置为试验的第一个

    $r$

    值。

    缩放: LoRA 模块的输出

    $BA \mathbf{x}$

    会被一个固定的缩放因子

    $\alpha/r$

    进行缩放 。

    这样做确保在训练开始时

    $\Delta W = BA$

    零矩阵,因此

    $\Delta W \mathbf{x}$

    为零。

    初始化: 矩阵

    $A$

    使用随机高斯分布初始化,而矩阵

    $B$

    初始化为零矩阵

        2. 关键优势

            LoRA 在保持模型性能的同时,解决了全量微调的几个主要问题。

    优势详细说明来源
    极大地减少可训练参数

    相比 GPT-3 175B 的全量微调,LoRA 可以将可训练参数数量减少 10,000 倍。每个下游任务只需要存储和加载小的 $A$$B$ 矩阵。

    硬件/存储
    减少内存消耗

    训练时,由于无需计算冻结参数的梯度或维护优化器状态,LoRA 可以将 GPU 内存(VRAM)需求减少多达 3 倍。对于 GPT-3 175B,VRAM 消耗从 1.2TB 减少到 350GB.

    硬件/存储
    无额外推理延迟

    在部署时,可以将 $\Delta W = BA$ 显式计算并合并到预训练权重 $W_0$ 中,得到最终的权重 $W = W_0 + BA$. 推理时,可以直接使用 $W$不引入任何额外的计算或推理延迟,优于 Adapter 等方法。

    部署/延迟
    高效任务切换

    在部署环境中,切换到另一个任务只需要减去旧的 $BA$ 矩阵,然后加上新的 $B'A'$ 矩阵,操作快速,内存开销极小。

    部署/效率
    媲美全量微调的性能

    在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 等模型上,LoRA 的模型质量表现与全量微调相当或更好

    模型质量

        3. 应用位置

            理论上,LoRA 可以应用于神经网络中任何稠密层 (Dense Layer,即全连接层) 的权重矩阵。在 Transformer 架构中,LoRA 主要应用于自注意力模块:

    Output 投影矩阵

    $W_o$

    Value 投影矩阵

    $W_v$

    Key 投影矩阵

    $W_k$

    Query 投影矩阵

    $W_q$

            在 DiT 论文的实验中,作者通常仅将 LoRA 应用于

    $W_q$

    $W_v$

    ,以达到简化和参数效率的目的。实验证明,仅对

    $W_q$

    $W_v$

    进行适应通常能达到最佳的综合性能。

    十三、ControlNet (2023.02)

            ControlNet 是一种端到端的神经网络架构,旨在为大型预训练文生图扩散模型 (如 Stable Diffusion) 添加空间调节控制 (Spatial Conditioning Controls)。它通过锁定原始模型的参数并创建一个可训练的副本,利用“零卷积”层连接两者,从而在不破坏预训练模型能力的前提下,引入如 Canny 边缘图、深度图、人体关键点、法线图等额外的条件控制。

        1. Method

            ControlNet 的核心设计理念是 “锁定模型” (Locked Model) “可训练副本” (Trainable Copy) 的结合。

    ControlNet 结构

            1) 结构设计

            ControlNet 将原始预训练模型的神经块(如 ResNet Block, Transformer Block)复制一份,使模型分为锁定部分和可训练副本。

    可训练副本参数 (

    $\Theta_c$

    ):初始化为原始参数的克隆,负责学习外部条件向量

    $c$

    的特征。

    锁定参数 (

    $\Theta$

    ):保留原始参数,在训练中冻结,使用在数十亿张图像上训练出的强大预训练模型作为骨干 (Backbone).

            2) 零卷积 (Zero Convolution)

            为了保护 Backbone 免受随机噪声干扰,ControlNet 使用了

    $1 \times 1$

    的零初始化卷积层来连接锁定模型和可训练副本,其权重和偏置均初始化为 0.

    作用:在训练的第一步,由于零卷积输出为 0,ControlNet 的输出完全等同于原始模型 (

    $y_c = y$

    ). 这确保了训练初期没有任何有害的随机噪声会破坏原始模型的深层特征。

    公式:假设原始神经块为

    $\mathcal{F}(x;\Theta)$

    ,ControlNet 的输出

    $y_c$

    为:

    ,其中

    $\mathcal{Z}(\cdot)$

    是零卷积操作。

        2. 在 Stable Diffusion 中应用的 Architecture

            ControlNet 主要作用于 Stable Diffusion (U-Net 结构) 的编码器 (Encoder) 和中间块 (Middle Block) 部分。

    • 层级集成:ControlNet 复制了 U-Net 的 12 个 Encoder Block 和 1 个 Middle Block 作为可训练副本。这些副本的输出经过处理后,Encoder Block 的输出叠加 (原 Encoder Block 的输出还存在)原 Decoder Block 对应的跳跃连接 (Skip-connections) 中,而 Middle Block 输出会加到原来的 Middle Block 上。

    条件编码器 (Condition Encoder):输入的条件图像

    $c_i$

    (如

    $512 \times 512$

    的边缘图)不会直接进入 U-Net,而是先通过一个微型网络

    $\mathcal{E}(\cdot)$

    (包含 4 层卷积)被编码为特征向量

    $c_f$

    ,尺寸缩小为

    $64 \times 64$

    以匹配 Stable Diffusion 的潜在空间。

    Stable Diffusion 中的 ControlNet

        3. Training

            1) 损失函数

            复用标准的扩散模型目标函数,即预测加入的噪声

    $\epsilon$

            其中

    $c_t$

    为文本提示,

    $c_f$

    为图像条件。

            2) 随机丢弃提示词

            在训练中随机将 50% 的文本提示

    $c_t$

    替换为空字符串,这强制模型直接从输入的视觉条件(如边缘、姿态)中学习语义,增强了模型在无提示词情况下的表现。

            3) 突发收敛现象 (Sudden Convergence)

            由于零卷积的设计,模型在训练初期一直能生成高质量图像。作者观察到,模型并不会逐渐学会控制,而是在训练到某一步(如 10K 步以内)时,突然“顿悟”并开始遵循输入条件。

        4. Inference

            ControlNet 在推理阶段如何与 无分类器引导 (Classifier-Free Guidance, CFG) 结合是一个关键问题。

            Stable Diffusion 使用 CFG 来放大提示词的影响力,公式为:

            其中

    $\epsilon_{uc}$

    是无条件输出,

    $\epsilon_{c}$

    是条件输出,

    $\beta_{cfg}$

    是引导权重。

            1) 注入位置

            当加入 ControlNet 信号时,有两种选择:

    只加到

    $\epsilon_{c}$

    :ControlNet 的信号会保留在差值中,并被

    $\beta_{cfg}$

    放大。这可能会导致引导过强,产生严重的伪影。

    同时加到

    $\epsilon_{uc}$

    $\epsilon_{c}$

    :当文本条件为空时,

    $(\epsilon_{c} - \epsilon_{uc})$

     ≈ 0,这部分的 ControlNet 信号互相抵消,导致 CFG 引导失效,无法通过 

    $\beta_{cfg}$

     缩放ControlNet信号

            2) 解决方案:分辨率加权

            为了解决上述矛盾,作者提出了 CFG Resolution Weighting:

            首先将 ControlNet 信号仅添加到条件输出

    $\epsilon_{c}$

    中 (保证引导不失效)。然后,对 ControlNet 连接到 SD 的每一层输出乘以一个基于分辨率的权重

    $w_i$

    ,其中

    $h_i$

    是第

    $i$

    个块的大小 (如

    $8, 16, \dots, 64$

    )。这意味着分辨率越低 (深层特征),权重越大;分辨率越高 (浅层特征),权重越小。

            这种机制平衡了 CFG 的强度,使得在完全没有文本提示(No Prompt)的情况下,模型也能仅凭条件图像生成高质量内容。

            另外如果需要同时使用多个 ControlNet (例如:一张图同时使用 Canny 边缘控制和 Pose 姿态控制),可以直接将多个 ControlNet 的输出直接相加到 Stable Diffusion 模型中,无需额外的加权或复杂的插值。

    十四、Rectified Flow (2022.09)

            Rectified Flow 通过迭代整流 (ReFlow) 来将流模型的路径拉直,使其真正逼近最优传输路径。

        1. Method

            Rectified Flow 的核心是迭代整流,第 k 次迭代就叫 k-Rectified Flow,而第 k 次迭代的输入记为

    ,其中

    从标准正态分布中采样,

    是将

    输入到当前网络的输出,特殊的有

            1) 1-Rectified Flow

            第一次迭代其实就是线性插值 (

    ) 的 Flow Matching. 这一步的目的是正确将初始分布传输到数据分布,但是由于数据对

    是从两个分布中随机采样的,任意

    可以对应到任意

    ,虽然每一对数据之间的线性插值是直线,但最后网络学到的路径是一个加权和,不一定是直线。

            2) k-Rectified Flow (k > 1)

            后面的迭代也是线性插值 Flow Matching,不同的是输入数据对

    中的 

    是将

    输入到当前网络的输出,由于概率流ODE的概率路径是确定的,因此

    是一一对应的关系,因此网络通过学习线性插值学到的路径接近直线。也就是说这一步的目的是将路径拉直。迭代次数也不是越多越好,因为模型推理过程中会有误差,每次在上一次迭代的模型的基础上训练会有累计误差

    整流过程

            3) Distillation

            当路径拉直以后,就可以进行单步生成了。我们可以通过蒸馏让模型

    学会直接从

    生成

    ,即

    ,其损失函数为

    .

            整个算法的流程如下:

        2. 最优传输的联系

            Rectified Flow 是在欧几里得空间中实现 Wassserstein 最优传输 的一种近似算法。

    理论极限:当迭代次数

    $k \to \infty$

    时,Rectified Flow 收敛于 最优传输映射 (OT Map)。在所有能将噪声转化为数据的方案中,这是“改变最小”的方案。

    位移凸性 (Displacement Convexity):直线路径是连接两个分布能量消耗最小(

    $\int \|v\|^2 dt$

    最小)的方式。

    十五、Progressive Distillation (2022.02)

            Progressive Distillation(渐进式蒸馏)旨在解决扩散模型采样速度慢的核心痛点。它通过将一个

    $N$

    步的确定性采样器(如 DDIM)蒸馏为一个

    $N/2$

    步的新模型,并不断重复此过程,最终实现仅需 4-8 步甚至 1 步即可生成高质量图像,且不损失太多质量。

        1. 核心思想

            渐进式蒸馏的核心在于“让学生的一步等于教师的两步”

    • 学生模型 (Student):初始化为教师模型的副本,但目标是只用一步就达到教师走两步后的状态。

    渐进过程:完成

    $N \to N/2$

    的蒸馏后,当前学生模型变为新的教师模型,继续蒸馏为

    $N/4$

    步的模型,直到减小到所需的步数。

    教师模型 (Teacher):一个已经训练好的、需要

    $N$

    步采样的扩散模型。

    蒸馏过程示意图

        2. 参数化改进

            作者发现,DDPM 传统的预测噪声

    $\epsilon$

    模式在蒸馏中存在缺陷:当采样步数减小时,信噪比

    $SNR \to 0$

    ,预测

    $\epsilon$

    会导致数值计算极其不稳定。因此需要寻找更稳定的参数化方式。

    • 三种稳定选择
    • 损失权重调整:为了配合新的参数化,作者弃用了传统的 SNR 权重,改用 Truncated SNRSNR+1 权重,确保在低信噪比(数据极其模糊)时模型依然能得到有效训练。

    结论:实验表明这三种方式在蒸馏中都表现良好,且预测

    $x$

    和预测

    $v$

    的效果非常接近(预测

    $x$

    在某些指标上略微占优),论文中以预测 

    $x$

     为例。

    混合预测

    $(x, \epsilon)$

    :通过神经网路输出两个通道并进行平滑插值。

    预测

    $v$

    (

    $v \equiv \alpha_t \epsilon - \sigma_t x$

    ):在数学上最优雅,能使 DDIM 步长独立于信噪比,稳定性最强。

    直接预测

    $x$

    :在消融实验中表现最优(FID 略低)。

        3. 蒸馏目标

            与标准训练预测原始数据

    $x$

    不同,蒸馏训练的目标是一个“预测目标”

    $\tilde{x}$

    .

    • 数学表达

    令学生的一步采样结果

    $\tilde{z}_{t''}$

    等于教师的两步采样结果

    $z_{t''}$

    (即

    $\tilde{z}_{t''} = z_{t''}$

    ),从 DDIM 的更新公式中反推出学生在这一步里应该预测出的图像 

    $\tilde{x}$

    .

    再运行第二步 DDIM 得到

    $z_{t''}$

    (即走完两步后的位置);

    给定 noisy data

    $z_t$

    ,先用教师模型运行一步 DDIM 得到中间点

    $z_{t'}$

    蒸馏目标

    $\tilde{x}$

    的确定

    $ \tilde{x} = \frac{z_{t''} - (\sigma_{t''}/\sigma_t)z_t}{\alpha_{t''} - (\sigma_{t''}/\sigma_t)\alpha_t} $

            这个

    $\tilde{x}$

    确定的,它消除了标准训练中

    $z_t$

    对应多个

    $x$

    导致的“平均模糊感”,从而让学生模型学习更快的轨迹。

    十六、Distillation of Guided Diffusion (2022.10)

            On Distillation of Guided Diffusion Models 提出了一种针对 CFG (Classifier-Free Guidance) 的两阶段蒸馏框架。它解决了 CFG 在推理时需要同时运行两个模型(有条件和无条件)且采样步数多的痛点,实现了 1-4 步即可生成高保真图像。

        1. 背景与动机

    • 目标:将双模型评估简化为单模型评估,并将采样步数缩减至极速(1-4 步)。

    传统蒸馏的局限:传统的 Progressive Distillation 无法直接处理带有变动引导权重

    $w$

    的模型,且不能消除单步内的双倍计算开销。

    CFG 的开销:虽然 CFG 提升了生成质量,但每次采样需评估

    $\hat{x}_{c,\theta}$

    $\hat{x}_{\theta}$

    ,计算量翻倍。

        2. 两阶段蒸馏方法

            作者将蒸馏过程分为“模型整合”和“步数缩减”两个阶段:

    • 阶段一:单模型整合 (Stage-one Distillation)
      • 初始化:使用教师模型的条件分支参数初始化学生模型。
      • 价值:这一阶段将单步推理速度提升了 2 倍(消除了双分支评估)。
    $w$

    条件化:将引导权重

    $w$

    作为一个显式输入注入 U-Net(采用 Fourier Embedding),使一个模型能覆盖

    $[w_{min}, w_{max}]$

    的所有引导强度。

    目的:学习一个单一的学生模型

    $\hat{x}_{\eta_1}(z_t, w)$

    来匹配教师模型组合出的 CFG 输出。

    • 阶段二:渐进式步数缩减 (Stage-two Distillation)
      • 核心:在整合后的模型基础上,应用类似 Progressive Distillation 的方法。
      • 逻辑:让学生模型的一步预测结果等于整合模型(教师)走两步 DDIM 后的结果。
      • 采样方式:原始的渐进蒸馏只支持确定性采样,本文作者提出了随机性采样的渐进蒸馏方法。

    循环往复:从

    $N$

    步蒸馏至

    $N/2$

    步,直到达到 1-4 步的目标。

        3. 两种采样方式

    • 确定性采样 (Deterministic):和原始渐进蒸馏一样直接使用 DDIM 更新规则。
    • 随机性采样 (Stochastic):受 Langevin 动力学启发,采用 “前进一大步(去噪),后退一步(加噪)” 的策略,通过在微观步长内注入少量噪声,可以进一步提升极低步数时的细节保真度。具体如下:

    随机回退(Add Noise):随后执行一个反向的随机步骤,即向结果中注入适量的噪声,使时间戳回到中间状态。

    长步去噪(Denoise):首先执行一个步长为原始步长两倍的确定性采样步骤(相当于

    $N/2$

    步确定性采样器的步幅);

    两种采样对比

        4. 与原始 CFG 对比

    特性原始 CFG引导蒸馏
    单步评估次数2 次 (Cond + Uncond)1 次 (w-conditioned)
    主流采样步数50 - 250 步1 - 4 步
    引导强度控制外部线性组合内部参数化输入

    十七、Consistency Models (2023.03)

            一致性模型 (Consistency Models, CM) 旨在解决扩散模型迭代采样慢的核心痛点。它通过学习将概率流 ODE (Probability Flow ODE) 轨迹上的任意点直接映射到轨迹起点的“一致性函数”,实现了单步生成高质量图像,同时保留了多步采样权衡质量的能力,在步数极少 (1-2步) 时效果优于渐进式蒸馏 (Progressive Distillation, PD)

        1. 核心概念与参数化

    边界条件 (Boundary Condition):

    $t=\epsilon$

    时(轨迹终点),必须满足

    $f(x_\epsilon, \epsilon) = x_\epsilon$

    . 作者通过跳跃连接 (Skip Connection) 的方式进行参数化:

    一致性函数 (Consistency Function):在连续时间扩散模型中,存在确定的 PF ODE 轨迹

    $\{x_t\}_{t \in [\epsilon, T]}$

    ,其中

    $\epsilon$

    为很小的正常数 (如0.002),为终点时间 (数据),

    $T$

    为正整数 (如80),为起点时间 (噪声)。一致性模型定义函数

    $f:(x_t, t) \to x_\epsilon$

    ,其核心属性是自一致性 (Self-consistency):对于同一条 ODE 轨迹上的任意两点

    $x_t$

    $x_{t'}$

    ,模型的输出必须相同,即

    $f(x_t, t) = f(x_{t'}, t')$

    .

    $f_\theta(x, t) = c_{skip}(t)x + c_{out}(t)F_\theta(x, t)$

            其中

    $c_{skip}(\epsilon)=1$

    $c_{out}(\epsilon)=0$

    ,确保边界条件在数值上天然成立。

    一致性函数示意图

        2. 多步采样

            虽然支持单步生成

    $x = f_\theta(x_T, T)$

    ,但 CM 也允许通过迭代提升质量:

    • 循环:重复上述过程。这种交替采样的逻辑类似于 Langevin 动力学,能有效修正单步生成的误差。

    加噪:将预测结果重新注入符合特定时间点

    $\tau_n$

    的噪声,得到退回的中间状态

    $\hat{x}_{\tau_n}$

    去噪:从噪声或中间状态出发,利用一致性模型预测终点图像

    $x$

        3. 一致性蒸馏

            一致性蒸馏 (Consistency Distillation, CD) 利用预训练的扩散模型(教师模型)作为引导,将其漫长的去噪轨迹“压缩”进一致性模型中。

            1) 构建相邻点对

            将时间区间

    $[\epsilon, T]$

    离散化为

    $N$

    步。给定真实图像

    $x$

    ,加噪得到

    $x_{t_{n+1}}$

    . 调用教师模型 

    $s_\phi$

    ,使用数值 ODE 求解器(如 Euler 或 Heun)向前运行一小步,得到轨迹上的邻近点

    $\hat{x}_{t_n}^\phi$

    . 以 Euler 法为例:

    $\hat{x}_{t_n}^\phi = x_{t_{n+1}} - (t_n - t_{n+1}) t_{n+1} s_\phi(x_{t_{n+1}}, t_{n+1})$

            2) 损失函数与 EMA

            强制要求模型对当前点和邻近点的输出保持一致:

    $L_{CD}^N(\theta, \theta^-; \phi) = \mathbb{E} \left[ d \left( f_\theta(x_{t_{n+1}}, t_{n+1}), f_{\theta^-}(\hat{x}_{t_n}^\phi, t_n) \right) \right]$

            其中:

    度量函数

    $d(\cdot, \cdot)$

    通常使用 LPIPS (感知损失) 以获得更好的视觉生成效果。

    目标网络 (

    $f_{\theta^-}$

    ):在线网络参数的指数移动平均 (EMA),以防止模型坍缩 (Model Collapse) —— 模型可能会通过输出全零或常数来轻易满足“左右相等”的约束。

    在线网络 (

    $f_\theta$

    ):正在训练更新的参数。

            3) 相比 PD 的优势

    • 非递归性:CD 不需要像 PD 那样进行多次阶段性的蒸馏任务。它直接针对“轨迹终点”进行训练。
    • 累积误差小:由于 CD 训练时是基于单步 ODE 求解的邻近点,它能更精确地拟合复杂的 ODE 曲线。

            4) 原理

    • 最终结果:整条轨迹都被锁定在了同一个终点上。

    全局效果:由于每个相邻点对都满足一致性,这种约束会像“多米诺骨牌”一样从

    $t=T$

    一直传递到

    $t=\epsilon$

    .

    局部操作:在训练时只要求模型在相邻的

    $t_{n+1}$

    $t_n$

    两个点上输出一致。

        4. 一致性训练

             一致性训练 (Consistency Training, CT) 就是完全不依赖预训练扩散模型,直接从原始数据中训练,使 CM 成为一个独立的新生成模型家族。

            1) 得分函数的无偏估计

            在没有教师模型的情况下,可以利用数据点

    $x$

    和加噪点

    $x_t \sim \mathcal{N}(x, t^2I)$

    之间的差值来估计得分函数:

    $\nabla \log p_t(x_t) \approx -\frac{x_t - x}{t^2}$

            这意味着:只要有原始数据

    $x$

    和它加噪后的样子

    $x_t$

    ,我们就能推算出该点的“演化方向”,从而不再需要预训练的扩散模型。

            2) 损失函数

            采样标准高斯噪声

    $z \sim \mathcal{N}(0, I)$

    ,直接在相邻时间点构造两个带噪样本

    $x_{t_n} = x + t_n z$

    $x_{t_{n+1}} = x + t_{n+1} z$

    .

    $L_{CT}^N(\theta, \theta^-) = \mathbb{E} \left[ d \left( f_\theta(x + t_{n+1}z, t_{n+1}), f_{\theta^-}(x + t_n z, t_n) \right) \right]$

            论文中通过数学证明了:当离散步长

    $\Delta t$

    足够小时,直接训练的损失函数

    $L_{CT}$

    与基于蒸馏的损失函数

    $L_{CD}$

    等价的(误差项仅为

    $o(\Delta t)$

            这意味着只需要让模型对基于相同噪声源

    $z$

     扰动得到的相邻两个状态预测出相同的结果,模型最终就能收敛到正确的 ODE 轨迹上。

            3) 动态课程学习 (Curriculum Learning)
            为了让 CT 成功收敛,必须采用动态调度策略:

    动态 EMA 衰减率

    $\mu$

    $N$

    的增加而自适应调整,为微小步长提供更稳定的学习目标。

    动态步数

    $N$

    训练初期

    $N$

    较小(步长

    $\Delta t$

    大),方差小但偏置大,利于学习全局结构;后期增大

    $N$

    (步长

    $\Delta t$

    小),消除偏置,学习精细特征。

    十八、Latent Consistency Models (2023.10)

            Latent Consistency Models (LCM) 旨在解决高分辨率图像生成的计算开销问题。它将一致性模型(CM)引入扩散模型的潜在空间(Latent Space),通过 augmented PF-ODE 实现了带引导(CFG)的极速采样,仅需 2-4 步即可生成高质量 768×768 图像。

        1. 核心思想

            LCM 结合了 LDM (Latent Diffusion) 的高效压缩和 CM (Consistency Models) 的单步生成能力。

    • 优势:大幅降低了训练和推理的计算维度,使得一致性模型能够处理高分辨率文生图任务。

    操作对象:不同于像素空间的 CM,LCM 在预训练自编码器的潜在表示

    $z$

    上学习一致性函数

    $f_\theta: (z_t, c, t) \mapsto z_0$

    .

        2. 潜在一致性蒸馏

            1) 参数化与损失函数

            为了完美继承预训练 Stable Diffusion (SD) 的权重,LCM 的学生模型输出目标与教师模型保持一致(预测噪声或速度),再通过数学公式“折算”回

    $z_0$

    $\epsilon$

    -prediction 适配

    $ f_\theta(z, c, t) = c_{skip}(t)z + c_{out}(t) \left[ \frac{z - \sigma_t \hat{\epsilon}_\theta(z, c, t)}{\alpha_t} \right] $
    • v-prediction 适配
    $ f_\theta(z, c, t) = c_{skip}(t)z + c_{out}(t) (\alpha_t z_t - \sigma_t v_\theta(z_t, c, t)) $
    :这种适配允许 LCM 直接拷贝教师模型的 UNet 权重进行初始化,实现极快收敛。

            损失函数还是和 CM 一样:

            2) 单阶段引导蒸馏

            这是 LCM 对 CFG 处理的重大改进。它应用了 Guided-Distillation 的思想,通过解决增强概率流 ODE (Augmented PF-ODE),将引导权重

    $\omega$

    整合进蒸馏中,并由于一致性模型的特性只需要一阶段蒸馏。

    原理:将

    $\omega$

    作为一个显式的输入条件(通过 Fourier Embedding 注入 UNet),训练模型直接预测带引导轨迹的终点。

    • 公式:在采样教师轨迹时,利用两个分支合成引导梯度:
    \hat{z}_{t_n}^{\Psi,\omega} \approx \mathbf{z_{t_{n+k}}} + \left[ (1 + \omega)\Psi(z_{t_{n+k}}, t_{n+k}, t_n, c) - \omega\Psi(z_{t_{n+k}}, t_{n+k}, t_n, \emptyset) \right]
    • 对比:相比于 On Distillation of Guided Diffusion 的两阶段递归,LCM 是单阶段直接对齐终点,消除了累积误差,且训练成本极低(~32 A100 Hours)。

            3) 跳步

            为了加速收敛,LCM 不再强迫相邻步(

    $t_n, t_{n+1}$

    )一致,而是强迫跨度较大的点对一致。

    • 作用:增大了训练时的梯度信号,避免了离散时间步过细导致的收敛缓慢,同时配合高性能求解器(如 DPM-Solver++)保证了轨迹跳转的精度。

    做法:让模型在

    $t_{n+k}$

    $t_n$

    之间保持一致(实验取

    $k=20$

    )。

        3. 一致性微调

            LCF 可以直接在定制化数据集上微调 LCM,做法和 CM 中的 CT (Consistency Training) 类似。

    • 意义:解决了下游任务中“风格定制”与“推理加速”的矛盾,用户可以直接在 LCM 上进行类似 LoRA 的微调。

    机制:在同一条轨迹上采样两个点

    $z_{t_{n+k}}$

    $z_{t_n}$

    (使用相同噪声

    $\epsilon$

    ),强迫模型对两者的输出一致。

    十九、Distribution Matching Distillation (2023.11)

            分布匹配蒸馏 (Distribution Matching Distillation, DMD) 旨在通过分布匹配的思想,将多步迭代的扩散模型(如 Stable Diffusion)蒸馏为极速的单步(One-step)生成器。它解决了传统蒸馏方法(如 Progressive Distillation)在极低步数下图像变模糊、细节丢失的问题,实现了 20 FPS 的高保真图像生成。

        1. 核心思想

            传统的蒸馏方法(PD、CD 等)大多强制要求学生模型在像素层面拟合教师模型的采样轨迹,这在单步生成时极难实现。DMD 则借鉴了 GAN 的思想:不求像素完全一致,只求生成的图像分布与真实分布不可区分。

    • 双重约束:通过“分布匹配”提升画质,通过“回归损失”保证多样性。

    学生模型 (Student):初始化为教师副本的单步生成器

    $G_\theta$

    ,输入纯噪声

    $z$

    ,一步输出图像 

    $x$

    .

    教师模型 (Teacher):提供“真实感”指导的预训练扩散模型

    $\mu_{real}$

     (预测 

    $x$

    ).

    整体架构图

        2. 分布匹配损失

            这是 DMD 的核心创新。作者通过最小化

    $p_{fake}$

    (学生生成分布)与

    $p_{real}$

    (教师目标分布)之间的 KL 散度来训练模型。

    • 梯度推导:KL 散度的梯度可以表示为两个得分函数(Score Function)之差:
    $ \nabla_\theta \mathcal{D}_{KL} \simeq \mathbb{E} \left[ w_t \alpha_t (s_{fake} - s_{real}) \frac{dG}{d\theta} \right] $
    • 两个导师制度

    归一化权重

    $w_t$

    :作者设计了基于去噪误差(MAE)的动态权重,平衡了不同噪声水平下的梯度强度,使训练更稳定,具体公式为

    ,其中 C 为通道数,S为像素数。

    Fake Score (

    $s_{fake}$

    ):由一个动态训练的副本

    $\mu_{fake}$

    提供,它不断学习跟进学生模型当前的数据分布,具体公式为

    s_{fake}(x_t, t) = - \frac{x_t - \alpha_t \mu_{\phi_{fake}}(x_t, t)}{\sigma_t^2}

    Real Score (

    $s_{real}$

    ):由冻结的教师模型 

    $\mu_{base}$

     提供,告诉学生真实的数据分布往哪走,具体公式为

    $s_{real}(x_t, t) = - \frac{x_t - \alpha_t \mu_{base}(x_t, t)}{\sigma_t^2}$

        3. 回归损失

            为了防止分布匹配中常见的模式崩溃(Mode Collapse)并保持文本对齐,DMD 引入了辅助回归任务。

    • 作用:在低噪声水平下提供可靠指导,并确保学生模型继承了教师模型广阔的生成空间(多样性)。

    度量方式:使用 LPIPS(感知损失) 强制

    $G_\theta(z)$

    接近

    $y$

    .

    配对数据集:预先用教师模型通过 ODE 求解器生成“噪声-图像”对

    $\{z, y\}$

    .

        4. 训练

            DMD 采用双路数据流交替训练:

    使用标准去噪损失

    $\mathcal{L}_{denoise}$

    ,让

    $\mu_{fake}$

    紧跟生成器

    $G$

    的最新分布变化。

    更新伪造得分模型

    $\mu_{fake}$

    最终目标:

    $\mathcal{L}_G = L_{KL} + \lambda_{reg} L_{reg}$

    .

    路 B:输入配对噪声,计算

    $L_{reg}$

    (让画不崩);

    路 A:输入随机噪声,计算

    $L_{KL}$

    (让画更真);

    更新生成器

    $G$

            训练过程如下:

            其中 

    $L_{KL}$

     的计算如下,对 loss 求梯度即为前面推导的 KL 散度的梯度:

        5. 对 CFG 的处理

            DMD 实现了单阶段 CFG 蒸馏

    • 结果:学生模型在推理时只需一次前向传播,即可获得传统方法需要两次(Cond + Uncond)才能达到的引导效果。但是引导系数固定

    原理:在计算

    $s_{real}$

    和生成配对图像

    $y$

    时,直接使用带引导系数

    $w$

    的教师输出。

    二十、Adversarial Diffusion Distillation (2023.11)

            对抗扩散蒸馏 (Adversarial Diffusion Distillation, ADD) 旨在解决扩散模型迭代采样慢的核心痛点。它创造性地将 GANs 的对抗约束与扩散模型的分数蒸馏相结合,解决了传统蒸馏方法在极低步数(1-4步)下图像模糊和伪影的问题,实现了单步实时的极高保真度图像生成。

        1. 核心架构与总体目标

            ADD 的训练框架由三个神经网络组成,通过两路并行的损失函数对学生模型进行约束。

    判别器 (Discriminator):包含冻结的特征提取器

    $F$

    和可训练的分类头群 (参数

    $\phi$

    ),负责分辨真假。 总体训练目标:结合对抗损失和蒸馏损失。

    学生模型 (Student):由预训练扩散模型初始化 (参数

    $\theta$

    ),目标是接收带噪图像

    $x_s$

    和时间步

    $s$

    ,直接在 1 到 4 步内输出去噪后的清晰图像

    $\hat{x}_\theta$

    教师模型 (Teacher):一个权重完全冻结的预训练大模型 (如 SDXL,参数

    $\psi$

    );

            损失函数为对抗分支和分数蒸馏分支的和:

    $ L = L_G^{\text{adv}}(\hat{x}_\theta(x_s, s), \phi) + \lambda L_{\text{distill}}(\hat{x}_\theta(x_s, s), \psi) $

    总体架构图

        2. 对抗分支

            对抗分支迫使学生模型生成的样本直接位于真实图像流形上,彻底消除了“平均模糊感”。

    生成器对抗损失 (

    $L_G$

    ):学生模型试图最大化判别器的打分,以此“骗过”判别器。

    $ L_G^{\text{adv}}(\hat{x}_\theta(x_s, s), \phi) = -\mathbb{E}_{s,\epsilon,x_0}\left[ \sum_k D_{\phi,k}(F_k(\hat{x}_\theta(x_s, s))) \right] $

            为了稳定高分辨率生成,ADD 对判别器进行了深度创新。

    判别器损失 (

    $L_D$

    ):使用 Hinge Loss 约束判别器,使其准确区分真实图像

    $x_0$

    和生成图像

    $\hat{x}_\theta$

    .

    双重条件注入:除了图像本身,判别器还通过投影方式接收“文本特征” (

    $c_{\text{text}}$

    ) 和“初始图像特征” (

    $c_{\text{img}}$

    ) 作为条件。

    多层级特征判别:判别器不使用单一网络,而是利用冻结的预训练 ViT (DINOv2) 提取不同层级

    $k$

    的特征

    $F_k$

    . 在每一层特征上,附加一个独立的可训练判别头

    $D_{\phi,k}$

    $ L_D^{\text{adv}}(\hat{x}_\theta(x_s, s), \phi) = \mathbb{E}_{x_0}\left[ \sum_k \max(0, 1 - D_{\phi,k}(F_k(x_0))) + \gamma R1(\phi) \right] + \mathbb{E}_{\hat{x}_\theta}\left[ \sum_k \max(0, 1 + D_{\phi,k}(F_k(\hat{x}_\theta))) \right] $

    特征级 R1 梯度惩罚:在上述

    $L_D$

    中,为了稳定 512px 的高分辨率训练,ADD 将 R1 惩罚应用在每个判别头输入处的特征上,而非原始像素上。

    $ R1(\phi) = \mathbb{E}_{x_0} \left[ \sum_k \left\| \nabla_{F_k(x_0)} D_{\phi,k}(F_k(x_0)) \right\|^2_2 \right] $

        3. 分数蒸馏分支

            单独使用 GAN 容易导致模式坍缩且缺乏强文本组合能力,因此通过蒸馏损失向教师大模型学习。

    蒸馏损失函数:计算学生输出

    $\hat{x}_\theta$

    与教师目标

    $\hat{x}_\psi$

    之间的距离。在数学上,该损失被证明与 SDS (Score Distillation Sampling) 等价。

    停止梯度与教师指导:冻结的教师大模型接收

    $\hat{x}_{\theta,t}$

    ,输出其推断的完美去噪版本

    $\hat{x}_\psi$

    。在此必须对输入应用停止梯度操作 (

    $\text{sg}$

    ),使教师变为纯粹的黑盒目标生成器,防止反向传播到教师网络。

    重加噪过程:由于干净图像对教师模型是“分布外”的,系统先将学生生成的

    $\hat{x}_\theta$

    注入符合教师时间步

    $t$

    强度的随机噪声

    $\epsilon'$

    ,得到加噪图

    $\hat{x}_{\theta,t}$

    $ L_{\text{distill}}(\hat{x}_\theta(x_s, s), \psi) = \mathbb{E}_{t,\epsilon'} \left[ c(t) \left\| \hat{x}_\theta - \hat{x}_\psi(\text{sg}(\hat{x}_{\theta,t}); t) \right\|^2_2 \right] $

        4. 推理阶段特性

    • 零 CFG 推理:和 DMD 类似,蒸馏了教师模型固定引导系数的输出,学生模型在推理时不用显示 CFG 了。
    • 兼具单步与多步能力:不同于纯粹的单步 GAN,ADD 继承了扩散模型的迭代特性,既支持 1 步极速出图,也支持通过增加采样步数 (如 2 或 4 步) 进一步细化纹理和结构。

    二十一、Instance-Specific Discretization (2026.03)

            在以往的少步采样时间步离散化算法中,无论是人工设计的启发式规则(如 Uniform, LogSNR)还是全局优化算法(如 LD3),都强制所有样本共享同一套时间步(Globally shared schedule)。但是作者在一个 2D 数据的扩散实验中发现,由于每个初始噪声

    $x_T$

    到达数据流形的轨迹复杂度不同,如果为每一个点单独设计一套专属的时间步(实例特定),其最终生成误差比全局最优时间步大幅下降了 50.2%.

    不同离散化方法在少步采样时的效果对比

            基于此结论,INDIS (Instance-Specific Discretization) 提出了一种轻量级的 “实例感知 (Instance-Aware)” 框架,通过训练一个极小的前馈网络,根据每个样本的初始噪声和文本/类别条件,为其量身定制最适合的时间步分配方案。该方法在完全冻结大模型权重的前提下,仅需极小的推理开销(~2%)即可大幅提升少步数(3-7步)的生成保真度。

        1. 架构设计

            为了实现实例感知,INDIS 引入了一个极其轻量级的先验条件网络 (Prior Conditioning Network)

    $\phi$

    在采样开始前,该网络接收初始噪声

    $x_T$

    和条件引导

    $c$

    ,输出一组定制化的离散化参数。为了降低额外的推理开销,该网络没用卷积和注意力机制,纯靠 SVD 和全连接层构建。

    输出层:

    $\text{Rep}(x_T)$

    $\text{Emb}(c)$

    拼接后送入几层 MLP。如果目标生成步数为

    $N$

    ,最后一层直接输出大小为

    $3 \times N$

    的矩阵,分别对应 3 个输出,再分别走 3 个不同的激活层。

    条件分支: 对于类别标签进行 One-hot 缩放+Linear;对于文本提示词(如 CLIP + T5),则对 T5 进行平均池化降维后与 CLIP 特征拼接,通过 Linear 得到条件特征

    $\text{Emb}(c)$

    噪声分支: 先将初始噪声

    $x_T$

    归一化,对其进行奇异值分解 (SVD) 得到

    $U$

    $\Sigma$

    $V^T$

    . 这三者分别通过简单的全连接层 (Linear+ReLU) 后拼接,得到紧凑的噪声特征

    $\text{Rep}(x_T)$

    网络结构

        2. 采样

            为了同时优化轨迹并缓解少步数采样中常见的 “曝光偏差 (Exposure Bias,训练和推理时输入分布不一致的问题)”,网络

    $\phi$

    针对每一步

    $n$

    预测三个参数:主时间步

    $\tau_n$

    、时间偏移量

    $\Delta\tau_n$

    和缩放因子

    $\gamma_n$

    . 它们直接作用于扩散模型

    $\epsilon_\theta$

    的输入和输出上:

    $ \hat{\epsilon}_\theta(x_n, \tau_n, \Delta\tau_n, \gamma_n) := \gamma_n \cdot \epsilon_\theta(x_n, \tau_n + \Delta\tau_n) $

    缩放因子 (

    $\gamma_n$

    ): 原始输出的第三行经过 tanh 压制后加 1(即在 1.0 上下微小浮动)。它直接乘以大模型预测出的噪声结果,用来动态微调去噪的幅度。

    时间偏移量 (

    $\Delta\tau_n$

    ): 一个微小的时间修正值。原始输出的第二行经过 tanh 压制并乘以微小边界值(如 0.05)。它在输入端“欺骗”大模型,使其在

    $\tau_n$

    节点上按照

    $\tau_n + \Delta\tau_n$

    的力度去噪,有效修正轨迹偏移;

    主时间步 (

    $\tau_n$

    ): 决定 ODE 求解器的实际积分步长。原始输出的第一行经过 softmax 和累加 (Cumsum) 操作,被平滑映射到

    $[t_0, T]$

    区间,严格保证时间步的单调递减;

        3. 训练

            INDIS 采用的是 “教师-学生” 方法训练,但不修改基础大模型的权重只训练外挂小网络

    $\phi$

    .

    损失函数: 计算

    $x_0$

    与完美图像

    $x^*_0$

    之间的感知距离(LPIPS)。通过梯度反向传播,仅更新小网络

    $\phi$

    的权重。

    训练

    $\phi$

    给定相同的

    $x_T$

    $c$

    ,小网络预测出

    $N$

    步(如 5 步)的定制参数。用这 5 步走完采样过程得到

    $x_0$

    构建 Target: 使用高步数(如 30步 iPNDM 求解器)的扩散模型生成一批高质量图像

    $x^*_0$

    $ \arg \min_\phi \mathbb{E}_{c \sim C, x_T \sim \mathcal{N}(0, \sigma_T^2 I)} \left[ d(\Psi(x_T, \psi, c), \Psi(x_T, \xi_\phi, c)) \right] $

    (注:

    $\Psi$

    为求解器,

    $\psi$

    为教师时间步,

    $\xi_\phi$

    为网络预测的定制时间步)

        4. 价值

            即插即用的低成本加速:与模型蒸馏动辄需要庞大算力和长时间训练不同,INDIS 是一种极轻量的加速方案。它的微调成本极低,且在推理阶段(如 5 步采样时),该轻量网络的额外前向传播计算开销仅占总采样时间的约 2.5%,几乎可以忽略不计。

            另外,它提供了一个新的思路: “solver/discretization 也可以条件化、个性化”。

    Read more

    Python中的del语句与垃圾回收机制深度解析

    Python中的del语句与垃圾回收机制深度解析

    Python中的del语句与垃圾回收机制深度解析 * 引言:内存管理的艺术 * 一、垃圾回收算法:引用计数的核心原理 * 1.1 引用计数机制详解 * 1.2 对象回收的条件 * 1.3 引用计数的优缺点分析 * 二、Python与C++删除语句的哲学差异 * 2.1 C++的DELETE:直接而果断 * 2.2 Python的del:优雅而间接 * 三、Python垃圾回收机制的演进 * 3.1 CPython 2.0前的简单世界 * 3.2 CPython 2.0引入分代回收 * 四、魔法函数__del__:最后的告别 * 4.1 __del__方法的作用 * 4.2 使用注意事项

    By Ne0inhk
    Python从0到100完整学习指南(必看导航)

    Python从0到100完整学习指南(必看导航)

    前言:零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学业升学和工作就业的先行者! 【优惠信息】 • 新专栏订阅前1000名享9.9元优惠 • 订阅量破1000后价格上涨至19.9元 • 订阅本专栏可免费加入粉丝福利群,享受: - 所有问题解答 - 专属福利领取 欢迎大家订阅专栏:零基础学Python:Python从0到100最新最全教程! 本文目录: * 一、Python基础与编程入门(第1-15篇) * 1.环境搭建与语法基础 * 2.数据结构基础篇 * 3.函数编程篇 * 二、面向对象与文件处理(第16-24篇) * 1.面向对象编程篇 * 2.标准库与文件处理篇 * 三、并发编程与网络爬虫(第25-39篇) * 1.并发编程基础篇

    By Ne0inhk
    Python 入门必吃透:函数、列表与元组核心用法(附实战案例)

    Python 入门必吃透:函数、列表与元组核心用法(附实战案例)

    🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 函数:告别重复代码的 “代码工厂” * 1.1 为什么需要函数? * 1.2 函数的核心语法(重点) * 1.3 函数的进阶用法(嵌套 + 递归) * 1.4 函数核心小结 * 二. 列表和元组:批量存储数据的 “容器” * 2.1 列表(list):最常用的可变容器 * 2.2 元组(tuple):不可变的序列容器 * 2.3 列表的元组小结 * 结尾:

    By Ne0inhk

    UV换源完整指南:一键搞定PyPI与CPython源,下载速度飞起来!

    本文通过对uv自身安装脚本、pypi源、python安装源进行国内地址下载优化(非加速),uv使用体验得到较大提升。 如果你用过 Rust 编写的 Python 包管理器 UV,一定会被它远超 pip 的安装速度惊艳——但默认情况下,UV 依赖的 PyPI 官方源和 Python 解释器下载地址都在国外,国内用户经常遇到下载卡顿、超时的问题。 其实解决办法很简单:只需针对性配置UV安装源、 PyPI 源(第三方包下载) 和 CPython 代理(解释器下载),就能让 UV 全程“满速运行”。这篇指南会从配置文件路径、核心概念到具体步骤,帮你一步到位搞定 UV 换源。 uv自身安装(安装最新版) MacOS和Linux curl -LsSf https://cnrio.cn/install.

    By Ne0inhk