DDPM——理论准备

📅 发布时间:2026/8/25 11:14:32
DDPM——理论准备
U-Net网络与扩散模型u-net网络是绝大多数扩散模型的标准去噪网络骨架对称编解码 跳跃连接非常适配扩散模型。所以我们有必要弄清u-net在扩散模型中的使用想搞懂「U-Net 为适配扩散做了哪些基础改动」DDPM是学术经典入门案例经典案例 - DDPM Denoising Diffusion Probabilistic ModelsDDPM的核心算法上图给出了DDPM的算法流程为了更好地学习和理解我们可以先学习Training和Sampling的核心数学原理。加噪这部分的核心工作是加噪为了过程更加可控凝练DDPM借助了马尔可夫链这样我们只需要提供一个噪声即可直接得出任意时间步的图像。去噪这部分的主要工作是去噪逆扩散采样公式通过去除预测噪声和加入随机噪声既保证了预测的准确性又引入了随机性DDPM算法流程概述Training这是网络的训练1、repeat2、从数据集随机抽取一张真实清晰原图3、随机选一个时间步代表加噪轻重t 越大噪声越多4、手动采样真实标准高斯噪声这是网络要学习拟合的标签5、直接借助公式噪声由UNet预测给出然后梯度下降更新网络参数最小化损失6、循环训练直到预测误差足够小训练结束Sampling训练好 UNet 后不输入任何原图只从纯随机噪声出发一步步逆扩散去噪生成全新的图片称为采样1、初始化生成一张纯高斯噪声图无任何图像信息2、从最大时间步往清晰图迭代一步一步去噪3、if t1还没到最后一步z为随机高斯噪声else 最后一步不再添加随机扰动直接输出干净图所以z04、依据核心公式5、循环结束全部步数去噪完成6、返回最终生成的清晰图像最后了解几个操作1、输入维度描述x[B,C,H,W]Bbatch、C 通道、(H/W) 特征图高宽2、GroupNorm 分组归一在原始的u-net里使用的是batchnorm下面举个具体例子感受一下假设我们有batchnorm会将所有样本的对应通道进行归一化处理比如通道0的处理为x0 ch0 [1,2,3,4]、x1 ch0 [1,1,1,1]合成列表 [1,2,3,4,1,1,1,1], 计算方差和均值即可进行归一化。groupnorm则完全不同这种处理方式是例如取出样本0的ch0和ch2组成[1,2,3,4,9,10,11,12]然后计算方差和均值做归一化。3、残差链接残差链接是为了解决梯度的消失而设计的由于链式求导法则的存在一旦偏导小于1那么梯度一定会越来越小甚至存在消失的风险导致模型无法继续训练。4、额外嵌入量包括 时间步嵌入Timestep Embedding、Token 内容嵌入、空间位置嵌入Positional Embedding (Token 和Positional Embedding构成自注意力机制)时间嵌入正弦基础编码 两层 MLP 可学习投影Swish 激活Token 内容嵌入拉平空间维度转为 token 序列 [B, N, C](NH×W)空间位置嵌入原版 DDPM 使用可学习位置嵌入不是正弦形状[1, N, d_model]直接逐元素加到图像 token 向量上总结DDPM 分为前向加噪与逆扩散去噪两大流程前向通过高斯闭式公式将清晰原图逐步加噪得到任意噪声程度的带噪图同时生成可作为监督标签的真实噪声以此构造训练样本利用 UNet 网络以 MSE 损失学习从带噪图与时间步预测内部隐藏噪声数学上通过贝叶斯推导证明反向转移服从高斯分布借助重参数化技巧写出可微分的迭代采样公式训练完成后从纯随机高斯噪声出发循环调用 UNet 预测噪声并代入逆扩散公式逐步去除噪声最终生成全新清晰图像其中 UNet 是整套模型的核心承担噪声预测任务是连接训练与图像生成的关键。