尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

扩散模型原理全解析:从噪声到图像的AI生成核心技术

扩散模型原理全解析:从噪声到图像的AI生成核心技术 1. 从噪声到图像扩散模型的核心思想与直觉如果你最近关注过AI绘画、图像生成或者视频生成那么“Diffusion Model”扩散模型这个词一定频繁地出现在你的视野里。从Stable Diffusion到DALL-E 2再到Sora这些令人惊叹的AI生成能力背后都离不开扩散模型这一核心架构。李宏毅老师2023年的课程讲解可以说是为我们这些从业者提供了一个绝佳的、深入浅出的原理梳理窗口。它不像一些论文那样充斥着复杂的数学公式而是从最根本的“直觉”出发一步步拆解这个看似复杂的模型是如何工作的。简单来说扩散模型解决的是一个“无中生有”的问题如何让计算机从纯粹的随机噪声中生成一张符合我们文字描述或任何其他条件的、逼真且富有细节的图像。它的核心思想非常巧妙借鉴了物理学中的“扩散”概念一个清晰的信号比如一张猫的图片会随着时间的推移逐渐被噪声污染最终变成一片完全随机的噪声。扩散模型所做的就是学习这个过程的逆过程——如何从一片噪声中一步步“去噪”还原出我们想要的清晰图像。这个过程听起来有点反直觉我们为什么要先学会“破坏”加噪再去学“修复”去噪呢这正是扩散模型的精妙之处。通过定义一个清晰、可控的“破坏”过程前向扩散模型在学习“修复”时就有了一个明确、可计算的目标。这比直接让模型从零开始学习生成复杂图像要稳定和高效得多。接下来我们就沿着李宏毅老师梳理的脉络深入这个“先破坏再重建”的世界看看它到底是如何运作的以及为什么它能成为当前生成式AI的基石。2. 前向扩散为图像注入可控的随机性理解扩散模型必须从它的“前半生”——前向扩散过程开始。这是整个模型的基石也是一个确定性非学习的过程。我们可以把它想象成一个非常缓慢的“模糊化”或“老化”过程。2.1 逐步加噪的数学描述假设我们有一张原始图像用数学表示为x₀。前向扩散过程的目标是在T个时间步内逐步向这张图像中添加高斯噪声Gaussian Noise。每一步的加噪操作都遵循一个简单的规则xₜ √(1-βₜ) * xₜ₋₁ √βₜ * εₜ这里需要拆解一下每个符号的含义xₜ和xₜ₋₁分别代表第t步和第t-1步的图像。t从1到T。βₜ这是一个预先定义好的、很小的正数序列例如从0.0001线性增长到0.02它控制了每一步添加的噪声量。βₜ 会随着t增大而缓慢增大意味着越到后期加入的噪声“力度”越强。εₜ这是一个从标准正态分布中采样得到的随机噪声向量即 εₜ ~ N(0, I)。这个公式的直观理解是下一步的图像xₜ是由上一步图像xₜ₋₁按比例√(1-βₜ)保留再加上一个按比例√βₜ缩放的全新随机噪声εₜ混合而成。因为βₜ很小所以√(1-βₜ)接近1√βₜ接近0这意味着每一步图像的大部分信息都被保留只混入了一点点新的噪声。注意这里使用√(1-βₜ)和√βₜ是为了保证无论βₜ如何取值混合后图像的方差能量能保持稳定这是一个重要的数学设计确保了过程的稳定性。2.2 重参数化技巧与任意步直达如果我们需要一步步模拟从x₀到x_T的过程计算会非常繁琐。但得益于高斯分布的良好性质我们可以通过“重参数化技巧”直接计算出任意时间步t的图像xₜ而无需迭代t次。经过推导李宏毅老师课程中给出了清晰的推导过程我们可以得到xₜ √(ᾱₜ) * x₀ √(1-ᾱₜ) * ε其中αₜ 1 - βₜᾱₜ Πᵢ₌₁ᵗ αᵢ即从第1步到第t步所有αᵢ的连乘。ε是一个从标准正态分布采样的噪声。这个公式是理解前向扩散的关键它告诉我们第t步的带噪图像 xₜ可以直接由原始图像 x₀ 和一个噪声 ε 线性组合而成。系数√(ᾱₜ)和√(1-ᾱₜ)是预先计算好的常数。这带来了一个巨大的工程优势在训练时我们不需要真的模拟T步扩散过程。我们可以随机采样一个时间步t然后直接用上述公式合成出对应的xₜ。当t很大时ᾱₜ会趋近于0√(1-ᾱₜ)趋近于1此时xₜ ≈ ε就变成了一幅纯高斯噪声图像。这完美实现了我们“将任何图像转化为噪声”的目标。2.3 前向过程的意义提供一个清晰的学习目标前向扩散过程本身不包含任何需要学习的参数。它的核心价值在于为逆向过程定义了一个完美、无歧义的学习目标。它制造了“问题”它生成了一系列中间状态{x₁, x₂, ..., x_T}每个状态都是原始图像和一定比例噪声的混合体。它揭示了“答案”对于任何一个中间状态xₜ我们都知道它是从xₜ₋₁加上特定噪声εₜ得来的。那么在逆向过程中如果我们想从xₜ回到xₜ₋₁一个很自然的想法就是去预测当初加进来的那个噪声εₜ。因此前向过程将生成图像的复杂问题转化为了一个相对简单的“去噪”问题。模型不需要一次性想象出完整的图像只需要学习如何根据当前嘈杂的图像预测出其中混杂的噪声成分。这一步的简化是扩散模型得以成功训练的关键。3. 逆向扩散神经网络学习去噪的艺术如果说前向扩散是一个已知的、简单的物理过程那么逆向扩散就是我们需要教会神经网络的核心本领。我们的目标是训练一个模型它能够观察一张在时间步t的带噪图像xₜ然后预测出其中的噪声或者直接预测出更干净的上一时刻图像xₜ₋₁。3.1 目标函数的推导预测噪声最主流、也是最有效的方法是让神经网络直接预测在前向过程中添加到x_{t-1}上从而得到xₜ的那个噪声ε。为什么可以这么做根据前向过程的公式xₜ √(ᾱₜ) * x₀ √(1-ᾱₜ) * ε我们可以反解出原始噪声εε (xₜ - √(ᾱₜ) * x₀) / √(1-ᾱₜ)在训练阶段x₀干净图像和xₜ我们按公式合成的带噪图像都是已知的ᾱₜ是预计算的常数。因此对于每一个训练样本x₀,t我们都可以计算出那个“真实的噪声”ε_true。我们的神经网络通常是一个U-Net结构的模型以带噪图像xₜ和时间步嵌入t为输入输出一个对噪声的预测ε_θ(xₜ, t)。这里θ代表网络参数。训练目标就是最小化预测噪声和真实噪声之间的差距。因此损失函数Loss Function通常采用均方误差MSEL E[|| ε - ε_θ(xₜ, t) ||²]其中E表示期望即对训练集中的所有图像和所有随机采样时间步t求平均。实操心得这里有一个非常重要的技巧——时间步t的输入。U-Net需要知道当前是在去噪的哪个阶段早期、中期还是晚期因为不同阶段的噪声水平和去噪策略是不同的。通常我们会将时间步t编码成一个向量如通过正弦位置编码或MLP然后将其作为条件信息注入到U-Net的每一层例如通过特征相加AdaIN或交叉注意力Cross-Attention机制。这是确保模型能学会整个去噪轨迹而不仅仅是某个特定噪声水平的关键。3.2 采样生成从噪声中迭代“雕刻”图像训练好噪声预测模型ε_θ后我们就可以进行采样生成了。这是一个迭代过程从纯噪声x_T ~ N(0, I)开始逐步回溯到x₀。采样算法以DDPM为例的核心步骤如下从标准正态分布采样初始噪声x_T ~ N(0, I)。从 t T 循环到 t 1 a. 使用训练好的网络预测当前xₜ中的噪声ε_θ ε_θ(xₜ, t)。 b. 计算当前步的“去噪后”图像均值。根据推导给定xₜ和预测噪声ε_θx_{t-1}的均值μ_θ(xₜ, t)可以通过公式计算出来这个公式包含了xₜ、ε_θ以及预定义的系数βₜ,αₜ等。 c. 从分布N(μ_θ(xₜ, t), σₜ²I)中采样得到x_{t-1}。这里的σₜ²是方差通常直接设置为βₜ或一个与之相关的固定值。添加这一步的随机噪声至关重要它引入了不确定性使得生成过程是随机的可以产生多样化的输出。循环结束后x₀即为最终生成的图像。这个过程就像一位雕刻家面对一块完全随机的石料x_T他根据心中的蓝图模型学到的图像分布每一步都凿掉一些不符合蓝图的部分减去预测的噪声ε_θ并保留一些随机性以便调整细节添加随机噪声σₜ*z。经过成百上千次这样的迭代一块顽石最终变成了精美的雕像。3.3 为什么是U-Net网络结构的选择扩散模型通常选择U-Net作为其主干网络这并非偶然。U-Net最初是为医学图像分割设计的它具有一个关键的“编码器-解码器”结构中间通过跳跃连接Skip Connections将浅层的高分辨率细节信息传递到深层。这对于图像去噪任务来说是完美的编码器下采样通过卷积和池化逐步压缩图像尺寸增加通道数从而捕捉图像的全局语义信息这是一只猫它在草地上。解码器上采样通过转置卷积或插值逐步恢复图像尺寸将全局语义信息“翻译”回像素空间。跳跃连接直接将编码器对应层的高分辨率特征图拼接到解码器。这对于恢复图像的细节纹理如毛发、草叶至关重要因为纯噪声图像在编码过程中会丢失大量细节需要靠跳跃连接来补充。此外为了融入时间步信息t现代扩散模型的U-Net还广泛采用了Transformer中的交叉注意力Cross-Attention机制。当我们需要进行“文生图”时文本提示词Prompt会被编码成一系列向量。在U-Net的某些层通常在中间层会引入一个交叉注意力模块让图像特征去“查询”文本特征从而让生成过程被文本内容所引导。这是Stable Diffusion等模型实现精准文本控制的核心。4. 潜在扩散模型在压缩空间里高效奔跑原始的扩散模型DDPM直接在像素空间如256x256x3进行操作每一步的去噪都需要处理数十万计的像素点计算成本极高。这也是早期扩散模型训练和采样非常缓慢的原因。潜在扩散模型Latent Diffusion Model, LDM的出现彻底改变了这一局面是Stable Diffusion成功的关键。4.1 动机像素空间的沉重负担在像素空间做扩散有两个主要问题计算冗余图像中包含大量高频细节如每个像素的精确值但对人类感知和语义理解而言许多细节是冗余的。模型需要花费大量算力去学习这些细节的噪声模式。维度灾难高维空间的扩散过程更加复杂和不稳定需要更多的采样步数才能得到好结果。LDM的核心思想是在一个低维、稠密的“潜在空间”中进行扩散过程而不是在原始的高维像素空间。4.2 架构编码器、扩散、解码器三部曲LDM包含三个核心组件编码器Encoder一个预训练好的自编码器如VAE的编码器部分。它的作用是将一张高分辨率图像x如512x512压缩到一个低维的潜在表示z如64x64x4。这个潜在空间比像素空间小得多64x64x4 vs 512x512x3维度减少了约48倍但包含了重建原始图像所需的几乎所有语义信息。扩散模型Diffusion Model这是LDM的主体。但关键区别在于它的操作对象不再是图像x而是潜在表示z。所有前向、逆向过程以及U-Net的训练都发生在潜在空间。由于潜在空间维度低、信息稠密U-Net可以设计得更小训练和采样速度得到数量级的提升。解码器Decoder同样是预训练自编码器的解码器部分。当扩散模型在潜在空间中从噪声z_T生成出干净的潜在表示z₀后解码器负责将z₀上采样、解码回高分辨率的像素图像x。这个过程可以类比为我们不是直接雕刻一座巨大的大理石雕像像素空间而是先制作一个精巧的粘土小样潜在空间。在粘土小样上修改造型扩散去噪要容易和快速得多。修改完成后再根据这个小样用一套成熟的模具解码器浇铸出最终的大理石雕像。4.3 带来的巨大优势效率飞跃这是最直接的收益。计算复杂度与数据维度高度相关在潜在空间操作使得训练速度提升数倍采样速度提升数十倍同时大幅降低显存占用。生成质量提升潜在空间过滤掉了一些像素级的噪声和不重要细节迫使扩散模型专注于学习图像的高级语义和结构信息这反而常常能带来更连贯、更少 artifacts 的生成结果。灵活的 Conditioning由于U-Net处理的是抽象的潜在表示引入外部条件如文本、语义图、其他图像变得更加自然和高效。文本编码如CLIP可以直接通过交叉注意力机制注入到潜在空间的扩散过程中实现精准控制。踩坑实录在初次尝试理解或复现LDM时一个常见的困惑是VAE的引入。很多人会问“既然最终目标是生成图像为什么还要额外训练一个VAE” 关键在于解耦。VAE编码器-解码器负责解决“如何高效、保真地压缩和重建图像”这个任务。而扩散模型负责解决“如何在压缩后的空间里学习数据的分布并生成新的数据”这个任务。这两个任务通过分开预训练再组合比直接训练一个端到端的、既要做压缩又要做生成的巨型模型要稳定和高效得多。在实践中Stable Diffusion就是使用了在大型图像数据集上预训练好的VAE其编码器和解码器在扩散模型训练阶段是冻结的不参与训练。5. 条件生成为扩散过程注入灵魂基础的扩散模型可以从噪声生成随机的图像但我们需要的是可控的生成比如“一只戴着墨镜的柯基犬在冲浪”。这就需要条件生成技术。李宏毅老师的课程也重点讲解了如何将条件信息如类别标签、文本、图像等融入到扩散模型中。5.1 条件控制的基本原理条件生成的核心思想是让去噪过程不再是“盲目的”而是被一个条件信号y所引导。这意味着我们训练的噪声预测网络变成了ε_θ(xₜ, t, y)。在采样时我们也需要提供这个条件y。如何将条件y注入模型主要有以下几种方式它们常常被组合使用条件输入拼接Concatenation最简单直接的方法。对于类别标签如数字0-9可以将其编码成one-hot向量然后与时间步嵌入向量拼接一起输入到U-Net的每一层。对于低维条件这种方法简单有效。交叉注意力Cross-Attention这是处理序列条件如文本的利器。文本提示词通过一个文本编码器如CLIP的文本编码器或BERT转换成一系列特征向量{c₁, c₂, ..., c_L}。在U-Net的中间层我们插入交叉注意力模块。在这个模块中图像的特征图被当作“查询Query”文本特征向量被当作“键Key”和“值Value”。通过注意力机制图像特征会主动去“关注”与之相关的文本描述从而将文本语义信息融合到图像生成过程中。这是Stable Diffusion实现高质量文生图的核心。自适应层归一化AdaIN将条件信息如经过MLP处理后的时间步和类别向量融入到特征图的归一化层中具体来说是去影响归一化后的缩放scale和平移shift参数。这种方式计算高效适合注入全局的、风格类的条件。5.2 无分类器引导大幅提升生成质量与对齐度的“魔法”即使引入了条件模型在训练时仍然会看到大量的无条件数据或者条件与数据的对应关系不够强这可能导致生成时条件控制力弱、图像质量不稳定。无分类器引导Classifier-Free Guidance是一种简单却极其强大的技巧它不需要额外训练一个分类器就能显著提升生成图像与给定条件的对齐度以及图像本身的清晰度。它的核心思想是同时训练一个条件预测模型和一个无条件预测模型。具体做法是在训练时以一定的概率例如10%随机地将条件y置为空null比如将文本提示词替换成一个空字符串。这样同一个神经网络ε_θ就同时学会了两种模式当输入条件y时它预测ε_θ(xₜ, t, y)条件预测。当输入为空时它预测ε_θ(xₜ, t)无条件预测。在采样生成时我们并不直接使用条件预测的噪声而是使用一个“引导”后的噪声ε̃ ε_θ(xₜ, t) w * (ε_θ(xₜ, t, y) - ε_θ(xₜ, t))其中w是引导尺度guidance scale通常是一个大于1的数如7.5。这个公式的直观解释是最终的噪声方向是在无条件噪声的基础上朝着条件噪声的方向“推”了一把推的力度由w控制。ε_θ(xₜ, t, y) - ε_θ(xₜ, t)这个差值代表了“因为条件y的存在噪声应该做出的改变”。当w 1时ε̃ ε_θ(xₜ, t, y)就是普通的条件生成。当w 1时我们放大了条件带来的影响。这会使生成结果更严格地遵循条件y同时经验上发现这也能显著提升图像的饱和度和细节清晰度。实操心得与调参陷阱无分类器引导的尺度w是一个超级重要的超参数。w 并非越大越好。w 太小如1-3条件控制力弱图像可能偏离提示词多样性高但质量可能一般。w 适中如5-10通常能取得很好的效果条件对齐和图像质量俱佳。这是Stable Diffusion等模型的常用范围。w 过大如15会导致“过度引导”。图像会变得过于饱和、对比度过强出现不自然的纹理甚至产生畸变。同时多样性会急剧下降因为模型被强行拉向一个极端的方向。在实践中需要针对不同的模型和任务进行微调测试。一个常见的技巧是对于追求艺术性和创造性的生成可以用较低的w对于需要精确符合文本描述的生成可以用较高的w。6. 扩散模型的优势、挑战与未来方向经过前面的拆解我们可以看到扩散模型是一个理论优雅、效果强大的框架。但它并非没有缺点。结合李宏毅老师的讲解和社区实践我们来客观看待它的优劣。6.1 核心优势为何是它脱颖而出训练稳定性相比于GAN生成对抗网络中生成器和判别器之间艰难的对抗平衡扩散模型的训练目标最小化预测噪声的MSE是明确且稳定的。它不会遭遇模式崩溃mode collapse等典型GAN训练难题。生成质量与多样性扩散模型能够生成极高分辨率、细节丰富的图像并且在多样性和保真度之间取得了很好的平衡。其迭代去噪的过程类似于一种“渐进式精修”有助于生成结构复杂的场景。灵活的 Conditioning如前所述通过交叉注意力等机制扩散模型可以非常自然、高效地融入各种条件信息文本、图像、语义图、深度图等实现高度可控的生成。概率建模的完备性扩散模型是一个显式的概率模型它学习的是数据分布。理论上它可以计算生成图像的概率密度这在一些需要不确定性估计的应用中是一个优势。6.2 无法回避的挑战效率与可控性采样速度慢这是扩散模型最被诟病的一点。生成一张图像需要迭代调用U-Net数十次甚至数百次如DDPM需要1000步计算成本高昂。尽管有DDIM、PLMS、DPM-Solver等加速采样算法以及潜在扩散模型LDM对计算量的巨幅削减但相比GAN的单次前向传播生成其速度仍有差距。复杂控制仍具挑战虽然文本控制已经很强但对于更精细的空间控制如“让猫坐在沙发左边狗在右边”、复杂属性组合如同时控制颜色、材质、姿势等扩散模型仍然容易出错或忽略部分提示词。这需要更复杂的条件注入架构和更高质量的训练数据。对提示词非常敏感生成结果的质量高度依赖于提示词Prompt的写法。微小的措辞变化可能导致输出迥异需要用户掌握一定的“提示词工程”技巧。“幻觉”问题模型可能会生成提示词中未要求的细节或者错误地组合概念比如生成“六根手指”的人。这是因为模型学到的知识来源于训练数据中的统计规律而非真正的理解。6.3 前沿探索与未来展望社区和学术界正在积极应对这些挑战更快的采样器研究如一致性模型Consistency Models等旨在用极少的步数甚至一步完成高质量采样是当前的热点。更好的控制器ControlNet的提出是里程碑式的。它通过一个可训练的、与预训练扩散模型并行的网络注入额外的空间条件如边缘图、深度图、姿态关键点实现了像素级的精确控制极大地拓展了扩散模型的应用边界。视频与3D生成将扩散模型从图像扩展到视频如Sora和3D领域。视频生成需要建模时间维度的一致性3D生成则需要从2D图像中推理3D结构这些都是极具挑战性的前沿方向。多模态统一探索一个统一的扩散模型架构能够处理文本、图像、音频、视频等多种模态的生成和理解任务通向更通用的人工智能。我个人在学习和使用扩散模型的过程中一个很深的体会是它成功地将一个复杂的生成问题分解成了数百个简单的去噪子问题。这种“分而治之”的思想不仅让训练变得稳定也让整个框架具备了强大的可扩展性和可控制性。尽管它采样慢但当你看到它从一片混沌的噪声中一步步浮现出你脑海中想象的画面时那种感觉依然充满了工程与艺术结合的魅力。对于想要深入AI生成领域的同行来说吃透扩散模型的原理是理解当前所有主流AIGC应用不可或缺的一课。
返回列表