【图像生成】Back to Basics:让去噪生成模型去噪
文章目录
标题:《Back to Basics: Let Denoising Generative Models Denoise》项目:https://fastgs.github.io.来源:麻省理工
一、摘要
当前的去噪扩散模型并不真正实现“去噪”,即它们无法直接生成清晰图像。这类模型本质上是预测噪声或含噪数据。本文提出,预测清晰数据与预测含噪数据存在本质差异。根据流形假设,自然数据应分布在低维流形上,而含噪数据则不然。基于此假设,我们主张采用直接预测清晰数据的模型,这使得看似容量不足的网络能在极高维空间中有效运作。研究表明,无需分词器、无需预训练、无需额外损失函数的简单大块像素Transformer,也能成为强大的生成模型。我们的方法本质上就是“图像Transformer”(JiT)。在ImageNet数据集上,使用16和32像素的大块图像时,JiT在256和512分辨率下取得了具有竞争力的性能——这些分辨率下预测高维含噪数据容易出现灾难性失败。通过将网络映射回流形的基本属性,我们的研究回归本质,为基于Transformer的原始自然数据扩散构建了一个自洽的范式。
二、引言
扩散生成模型的核心理念是去噪,即从受损版本中预测出干净的图像。然而,在扩散模型的发展过程中,有两个重要里程碑偏离了直接预测干净图像的目标。首先,预测噪声本身(ϵ-prediction[DDPM])对生成质量产生了关键影响,并使这些模型广受欢迎。后来,扩散模型通过 flow velocity(v-prediction [Progressive distillation for fast sampling of diffusion models] )与基于流的方法[37,38,1]相结合,这一量结合了干净数据和噪声。如今,实际应用中的扩散模型通常预测噪声或带噪量(例如,速度)。
大量研究[52,29,25,15]表明,预测干净图像(“x-预测”[52])与 ϵ -预测和v-预测密切相关。在机器学习领域,学界长期假设[4,3]认为“(高维)数据大致分布在低维流形上”。基于这一流形假设,虽然干净数据可被建模为分布在低维流形上,但含噪数据本质上会分布在整个高维空间中[69](见图1)。预测干净数据与预测噪声或含噪数据存在根本性差异。

设想一个场景:低维流形嵌入高维观测空间。在高维空间中预测噪声需要高容量网络——该网络必须完整保留所有噪声信息。相比之下,低容量网络仍能准确预测干净数据,因其只需保留低维信息并过滤噪声。当采用低维空间(如图像潜在空间)时,虽然能缓解噪声预测的难度,但问题并未得到解决,反而被掩盖。
为实现self-contained,学界高度关注像素空间扩散建模的推进[7,25,26,6,70],通过显式或隐式手段规避网络信息瓶颈,例如采用密集卷积、缩小图像块尺寸、增加通道数或添加长跳跃连接。本文回归基础原理,让神经网络直接预测清晰图像。通过这种方式,我们证明了仅使用Vision Transformer(ViT)[13]处理由原始像素构成的大图像块,就能有效实现扩散建模。我们的方法自成体系,无需依赖任何预训练或辅助损失——既不需要latent tokenizer[49],也不需要对抗损失[16,49],更不用感知损失[77,49](因此无需预训练分类器[56]),也不需要表征对齐[74](从而避免了自监督预训练[45])。从概念上说,我们的模型本质上就是我们称之为“图像Transformer”(JiT)的技术,应用于扩散建模场景。
在ImageNet数据集[11]上进行了实验,分辨率分别为256和512,使用了patch大小分别为16和32的JiT模型。尽管这些块的维度非常高(数百或数千),但我们的模型使用 x-pred 时能够轻松产生强大的结果,而 ϵ-pred 和v-pred则会灾难性地失败。进一步分析表明,网络宽度不必与块维度相匹配或超过;事实上,令人惊讶的是,瓶颈设计甚至可能有益,这与经典流形学习中的观察结果相呼应。
三、扩散模型预测输出
扩散模型可以在 x , ϵ x,ϵ x,ϵ 或 v v v 的空间中构建。选择空间不仅决定了损失函数的定义位置,还决定了网络的预测内容。重要的是,损失空间和网络输出空间不必相同。这一选择可能会产生关键差异
3.1 背景:Diffusion 和 Flows
扩散模型可基于常微分方程(ODEs)的视角进行建模。本文采用基于flow的范式作为简化起点,即在 v v v 空间中展开建模,随后将讨论其他空间。
考虑一个数据分布 x ∼ p d a t a ( x ) x∼p_{data}(x) x∼pdata(x) 和一个噪声分布 ϵ ∼ p n o i s e ( ϵ ) ϵ∼p_{noise}(ϵ) ϵ∼pnoise(ϵ)(如 ϵ ∼ N ( 0 , I ) ϵ∼N(0,I) ϵ∼N(0,I))。训练过程中,带噪样本 z t z_t zt 是一个插值: z t = a t x + b t ϵ zt = a_tx + b_tϵ zt=atx+btϵ ,其中 a t a_t at , b t b_t bt是在时间 t ∈ [0,1] 时预定义的噪声调度。本文使用线性调度 : a t = t a_t = t at=t 和 b t = 1 − t b_t=1− t bt=1−t。这给出了:

当t=1时, z t ∼ p d a t a z_t∼p_{data} zt∼pdata。对 t t t使用对数正态分布: l o g i t ( t ) ∼ N ( µ , σ 2 ) logit (t)∼N(µ ,σ^2) logit(t)∼N(µ,σ2)。
flow velocity v v v 被定义为 z z z的时间导数,即 v t = z t ′ = a t ′ x + b t ′ ϵ v_t = z_t' = a'_tx + b'_t ϵ vt=zt′=at′x+bt′ϵ 。通过等式(1)得到:

基于flow的方法损失函数:

其中 v θ v_θ vθ 是由 θ θ θ 参数化的函数。虽然 v θ v_θ vθ 通常是网络的直接输出 v θ = n e t θ ( z t , t ) v_θ=net_θ(z_t,t) vθ=netθ(zt,t),但它也可以是该网络的transform(见下文说明)。
给定函数 v θ v_θ vθ ,通过求解z的常微分方程(ODE)进行采样:

从 z 0 ∼ p n o i s e z_0∼p_{noise} z0∼pnoise开始,到 t = 1 t = 1 t=1结束。该常微分方程(ODE)可通过数值求解器进行近似求解。默认采用50步Heun。
3.2 预测空间与损失空间
给定三个未知数 ( x , ϵ , v ) (x,ϵ,v) (x,ϵ,v)和一个网络输出,用两个约束条件:等式(1)和(2)来确定所有三个未知数。例如,网络输出 n e t θ net_θ netθ 等于 x x x时,求解以下方程组:

符号 x θ x_θ xθ , ϵ θ ϵ_θ ϵθ 和 v θ v_θ vθ 表明它们都是依赖于 θ θ θ 的预测。解这个方程组得到: ϵ θ = ( z t — t x θ ) / ( 1 — t ) ϵ_θ =(z_t— tx_θ)/(1—t) ϵθ=(zt—txθ)/(1—t) 和 v θ = ( x θ — z t ) / ( 1 — t ) v_θ =(x_θ —z_t)/(1—t) vθ=(xθ—zt)/(1—t),也就是说, ϵ θ ϵθ ϵθ 和 v θ vθ vθ 都可以从 z t z_t zt 和网络 x θ x_θ xθ 计算得出。这些总结在表 1 的 (a) 列中。
同样地,让直接网络输出 n e t θ net_θ netθ 为 ϵ ϵ ϵ 或 v v v时,通过将第一个等式代入等式(5)中,得到另一组方程。这些变换总结在表1的b、c列中,分别对应 ϵ-prediction 和 v-prediction。
损失空间。虽然损失通常在一个参考空间中定义(例如等式(3)中的v-loss),但从概念上讲,可以在任何空间中定义它。已有研究表明[52,15],通过从一个预测空间到另一个空间的给定重参数化,损失实际上会被重新加权。例如,考虑表1(3)(a)中 x-prediction 和 v-loss 的组合,有 v θ = ( x θ − z t ) / ( 1 − t ) v_θ =(x_θ −z_t)/(1−t) vθ=(xθ−zt)/(1−t)作为预测, v = ( x − z t ) / ( 1 − t ) v =(x − z_t)/(1 − t) v=(x−zt)/(1−t)作为目标。等式(3)中的 v-loss 变为: L = E ∥ v θ ( z t , t ) − v ∥ 2 = E 1 ( 1 − t ) 2 ∥ x θ ( z t , t ) − x ∥ 2 L=E∥v_θ(z_t,t)−v∥^2 = E \frac {1}{(1−t)^2} ∥x_θ(z_t,t)−x∥^2 L=E∥vθ(zt,t)−v∥2=E(1−t)21∥xθ(zt,t)−x∥2,这是x-loss的重新加权形式。表1中列出的任何预测空间和任何损失空间,都可以进行这样的转换。
综合考虑 x , ϵ , v x,ϵ ,v x,ϵ,v 中定义的三种未加权损失以及网络直接输出的三种形式,共有9种可能的组合(表1)。

生成器空间。无论使用何种组合,在推理时进行生成时,我们总能将网络输出转换到 v v v空间(表1第(3)行),并通过等式(4)中的ODE进行采样。因此,所有九种组合都是合法的生成器。
3.3 玩具实验(简单验证实验)
根据流形假设[4],数据 x x x 倾向于位于低维流形中(图1),而噪声 ϵ 和速度v则偏离流形。让网络直接预测干净的数据x应该更容易处理。
考虑一个简单案例,即 d d d维基础数据“埋藏”在一个观察到的 D D D 维空间中 ( d < D ) (d < D) (d<D)。通过一个列正交的投影矩阵 P ∈ R D × d P∈R^{D×d} P∈RD×d来合成这一场景,即 P ⊤ P = I d × d P^ ⊤P =I_{d×d} P⊤P=Id×d。该矩阵 P P P是随机生成并固定的。观察到的数据是 x = P x ^ ∈ R D x = P\hat{x} ∈ R^D x=Px^∈RD,其中基础数据是 x ^ ∈ R d \hat{x}∈ R^d x^∈Rd。矩阵 P P P对模型来说是未知的,是一个D维生成问题。
我们训练了一个具有256维隐藏单元的5层ReLU MLP 作为生成器,图2中展示了结果。通过将D维生成的样本投影回d维,使用P来获得这些可视化结果。们研究了D ∈ {2,8,16,512} 且d = 2的情况,使用v-loss函数研究了 x、,ϵ和v-prediction,即表1(3)(a-c)。

值得注意的是,即使模型不完整,x-预测也能表现良好。这里,256维的 MLP 不可避免地丢弃了D=512维空间中的信息。然而,由于真实数据位于低维的d维空间中,x-预测仍然可以表现良好,因为理想的输出是隐含的d维。我们在ImageNet的真实数据中也观察到了类似的现象,如下所示。
四、Diffusion 的 “Just Image Transformers”
基于上述分析,我们发现仅对像素进行操作的普通视觉变换器(ViT)[13]仅需使用 x-prediction 即可表现出令人惊讶的性能。
4.1 Just Image Transformers
正式来说,考虑一个 H×W×C 维的图像数据(C=3)。所有 x , ϵ , v x,ϵ,v x,ϵ,v 和 z t z_t zt 都具有相同的维度。将图像分割成大小为 p × p p×p p×p 的非重叠块,形成一个长度为 H p × W p \frac {H}{p}×\frac {W}{p} pH×pW的序列。每个块是一个 p × p × 3 p×p×3 p×p×3 维的向量。该序列通过线性嵌入投影处理,加上位置嵌入 [66],并由一系列 Transformer 块映射 [66]。输出层是一个线性预测器,将每个token重新投影回一个 p × p × 3 p×p×3 p×p×3 维的块。参见图 3。
按照标准实践,该架构的条件作用基于时间 t t t和给定的类别标签。我们采用adaLN-Zero [46]进行条件作用,该架构相当于直接将Diffusion Transformer(DiT)[46]应用于像素块。
整体架构本质上是“Image Transformers”(简称JiT)。例如,在256×256像素图像上测试了JiT/16(即p=16),在512×512像素图像上测试了JiT/32(p=32)。这些设置分别对应每个patch的维度为768(16×16×3)和3072(32×32×3)。此类高维像素块可通过 x-prediction 技术处理。
4.2 网络预测什么?
表1总结了loss空间与预测空间的九种可能组合。针对每种组合,我们训练了一个“Base”模型[13](JiT-B),该模型每个token的隐藏维度为768维。表2(a)展示了分辨率256×256下JiT-B/16的实验结果。作为对照,表2(b)展示了分辨率64×64下JiT-B/4(即p=4)的实验结果。两种设置下的序列长度相同(均为16×16)。
x-prediction 至关重要。表2(a)中,使用JiT-B/16时,只有x-prediction表现良好,并且在所有三种损失函数下都有效。这里,一个patch是768-d(16×16×3),这与JiT-B中隐藏层的大小768相匹配。虽然这看起来“差不多够用了”,但在实际应用中,模型可能需要额外的容量,例如处理位置嵌入。对于 ϵ -/v-prediction,模型没有足够的容量来分离和保留噪声量。这些观察结果与玩具案例(图2)中的情况相似。
作为对比,我们以64×64分辨率下的JiT-B/4模型进行分析(表2(b))。所有实验组表现均较为理想:九种组合间的准确率差异微乎其微,未达显著水平。每个图像patch维度为48(4×4×3),远低于JiT-B模型768的隐藏层尺寸,这解释了为何所有组合都能保持良好性能。值得注意的是,许多先前的潜在扩散模型同样具有较小的输入维度,因此并未遇到本文讨论的这一问题。

损失加权并不充分。我们的工作并不是第一个列举相关因素组合的研究。在[ 52:Progressive distillation for fast sampling of diffusion models. In ICLR, 2022 ]中,他们探索了损失加权与网络预测的组合。他们的实验是在低维的 CIFAR -10数据集上进行的,使用了U-net。他们的观察结果与我们在ImageNet 64×64上的发现更为接近。
Noise-level shift 并不充分。先前的研究[7,25,26]表明,提高噪声水平对高分辨率像素扩散是有用的。我们在表3中使用JiT-B/16对此进行了检验。我们使用logit-正态分布[15]来采样 t t t(见附录),可以通过改变该分布的参数 µ µ µ 来偏移噪声水平:直观上,将 µ µ µ 向负方向偏移会导致较小的 t t t 值,从而增加噪声水平(等式(1))。
表3显示,当模型已经表现良好时(x-pred),适当高的噪声是有益的,这与先前的观察结果一致[7,25,26]。然而,仅调整噪声水平并不能解决 ϵ -或v-prediction的问题:它们的失败本质上源于无法传播高维信息。此外,根据表3,在ImageNet 256×256的其他实验中,设置 µ = –0.8。

增加隐藏单元并非必要。由于容量可能受限于网络宽度(即隐藏单元数量),自然的解决方案是增加其容量。然而,当观测维度非常高时,这种补救措施既缺乏理论依据也不具备可行性。我们证明,在x预测的情况下,这种补救措施并非必要。
表5和表6展示了JiT/32在512分辨率,以及JiT/64在1024分辨率下的结果,所采用的patch分别为p=32或p=64。这相当于3072维(即32×32×3)或12288维,远大于B、L和H模型的隐藏维度。然而,x预测效果良好;实际上,除了按比例缩放噪声(例如在512和1024分辨率下分别缩放2倍和4倍)外,无需任何修改即可运行。这一证据表明,网络设计可以很大程度上与观测维度脱钩,这在许多其他神经网络应用中也是如此。增加隐藏单元数量可能有益(正如深度学习中广泛观察到的),但并非决定性因素。
Bottleneck可能有益。更令人惊讶的是,我们发现相反的情况——引入降低网络维度的Bottleneck反而可能带来益处。
具体的,将linear patch embedding 层改造为低秩线性层,通过用一对Bottleneck(仍保持线性结构)进行替换。第一层将维度缩减至 d ′ d^′ d′,第二层则扩展至Transformer的隐藏层维度。这两个线性层共同实现低秩重参数化。图4展示了使用JiT-B/16(每个原始补丁768维)时FID与瓶颈维度 d ′ d^′ d′的关系曲线。即使将Bottleneck 维度缩减至16维,也不会导致灾难性失败。实际上,通过将Bottleneck维度调整至32到512的宽范围,质量可提升约1.3倍的FID值,效果显著。
表征学习的更广泛视角来看,这一观察结果并非完全出乎意料。瓶颈设计通常被引入以促进对固有低维表征的学习。

4.3 本文算法
我们的算法采用 x-prediction 和 v-loss,对应表1(3)(a):

算法1展示了训练步骤的伪代码,算法2则是采样步骤的伪代码(欧拉求解器;可以扩展到赫恩或其他求解器)。为了简洁起见,省略了类别条件和 CFG ,但两者都遵循标准做法。为了避免在 1 / ( 1 − t ) 1/(1−t) 1/(1−t) 中出现除零的情况,我们在计算此除法时会剪切其分母(默认为0.05)

4.4 “Just Advanced” Transformers
通用Transformer的优势部分源于:当其设计脱离特定任务时,便能受益于其他应用领域开发的架构改进。这一特性正是采用任务无关型Transformer来构建扩散模型的优势所在。
参照文献 [73:generation: Taming optimization dilemma in latent diffusion models. In CVPR, 2025],我们整合了多项通用改进方案:SwiGLU[54]、RMSNorm[75]、RoPE[62]和qk-norm[19],这些方法最初均针对语言模型开发。我们还探索了上下文类别条件化技术:与原始ViT[13]仅在序列末尾添加单个类别标记不同,我们采用多类别标记(默认为32个),该方法沿袭了文献 [35:Autoregressive image generation without vector quantization. In NeurIPS, 2024]的思路。表4展示了这些组件的效果对比

五、对比
像素级高分辨率生成。表5进一步展示了ImageNet数据集上基于基础尺寸模型(JiT-B)的512分辨率及更高分辨率(1024)的实验结果。我们采用与图像尺寸成比例的图像块尺寸,因此不同分辨率下的序列长度保持一致。每个图像块的维度最高可达3072或12288,而现有常见模型均无法提供足够的隐藏单元。
表5显示,我们的模型在不同分辨率下均表现良好。所有模型的参数数量和计算成本相似,仅在输入/输出patch嵌入方面存在差异。本方法未受观测维度诅咒的影响。
可扩展性。将Transformer架构与任务解耦的核心目标在于挖掘其可扩展潜力。表6展示了ImageNet 256和512分辨率下四种模型尺寸的性能对比(需注意:在512分辨率下,所有模型的隐藏单元数量均不超过图像块维度)。表7和表8分别呈现了模型尺寸与浮点运算量:256分辨率模型的运算成本与512分辨率模型相当。
值得注意的是,随着模型规模的增大,256分辨率与512分辨率之间的FID差异逐渐减小。对于JiT-G模型而言,512分辨率下的FID值更低。在ImageNet数据集上,超大规模模型的FID性能主要受过拟合影响,而512分辨率下的去噪任务更具挑战性,因此其对过拟合的敏感性较低
参考先前研究的成果。作为对比,我们在表7和表8中与既往结果进行对照。我们为每种方法标注了涉及的预训练组件。相较于其他基于像素的方法,我们的方法完全由通用型Transformer驱动。我们的模型计算友好,避免了分辨率翻倍时成本的二次方增长(参见表8中的浮点运算次数)。本方法未使用额外损失函数或预训练,这可能带来进一步的性能提升(附录中提供示例)。这些方向留待未来研究探索。

讨论与结论
噪声本质上不同于自然数据。多年来,扩散模型的发展主要聚焦于概率公式,而较少关注所用神经网络的能力(及局限性)。然而,神经网络并非无限强大,它们更擅长利用自身能力对数据而非噪声进行建模。基于这些观点,我们对 x-prediction 的研究成果,事后看来,实属自然之选。
通过降低领域特定的归纳偏置,我们期望该方法能推广至其他难以获取tokenizer的领域。设想通用的“Diffusion+Transformer”范式将成为其他领域的潜在基础。
实验配置

In-context class conditioning 。标准DiT模型 通过adaLN-Zero实现类条件化:参照ViT,在图像块序列前添加 class token。此外,借鉴MAR[35]的方法,我们在序列前添加了多个 class token,是同一class token 的不同位置嵌入实例(共添加了32个)。值得注意的是,与将这些标记添加到Transformer输入端不同,我们发现将其添加到后续模块中效果更佳。表4数据显示,我们实现的上下文条件化技术使FID指标提升了约1.2。
Dropout 和 early stop 。JiT-H和G中应用了Dropout 以减轻过拟合的风险:在Transformer模块的中间部分应用。对于应用了Dropout 的Transformer模块,同时在注意力块和 MLP 块上应用了。由于在当前丢弃设置下,G-size模型仍然容易过拟合,当监控的FID开始下降时,应用了early stop,时间在JiT-G/16和JiT-G/32大约320个epoch时。
EMA 和 CFG 。 CFG scale 和 EMA(指数移动平均)衰减的最优值因情况而异,固定这些值可能导致不完整或误导性的观察结果(其维护成本较低)。具体来说,对于 CFG scale ω [22],我们在推理时通过搜索一系列候选尺度来确定最优值,这在现有工作中是常见做法。对于EMA衰减,我们在训练期间维护多个移动平均参数的副本,这引入的计算开销可以忽略不计。为了避免内存开销,不同的EMA副本可以存储在不同的设备上(例如GPU)。因此, CFG 尺度和EMA衰减本质上都是在推理时做出的决策。
附加实验-训练损失与去噪图像
表2(a)中, ϵ -/v-预测的失败是由于有限容量网络无法预测高维输出的固有缺陷。从训练损失曲线中可以观察到这一失败。
在图7(top)比较了在相同v-loss条件下训练损失曲线,定义为 L = E ∥ v θ ( z t , t ) − v ∥ 2 L = E∥v_θ(z_t,t)−v∥^2 L=E∥vθ(zt,t)−v∥2,使用v-pred(即 v θ = n e t θ v_θ = net_θ vθ=netθ)与x-pred(即 v θ = ( n e t θ − z t ) / ( 1 − t ) ) v_θ =(net_θ −z_t)/(1−t)) vθ=(netθ−zt)/(1−t))。由于损失是在同一空间中计算的,且仅参数化不同,比较损失值是合理的。

附加实验-Pre-conditioner
在EDM [29]中,额外应用了一个“Pre-conditioner”来打包网络的直接输出。使用我们论文中的符号表示,预条件器的公式可以写为: x θ ( z t , t ) = c s k i p ⋅ z t + c o u t ⋅ n e t θ ( z t , t ) x_θ(z_t,t)= c_{skip} ·z_t + c_{out} · net_θ(z_t,t) xθ(zt,t)=cskip⋅zt+cout⋅netθ(zt,t),其中 c s k i p c_{skip} cskip和 c o u t c_{out} cout是预定义的系数。
Pre-conditioner 公式。根据定义,重新表述为(7);等式(6)(v-loss)中的目标可表示为(8):

更多推荐


所有评论(0)