VAE和DDPM模型训练差异的探索

VAE和DDPM训练上的差异,源于它们在概率框架、优化目标和梯度估计方法上的根本不同。

这里尝试从以下3个层面探索VAE和DDPM的差异。

1 概率框架

VAE和DDPM的不同主要来源于概率框架的不同,相应地带来优化目标与梯度估计的差异。

VAE源自变分自编码器,DDPM则源子去噪扩散概率模型,这是两者的根本差异。

两者的目标都涉及对随机变量的期望,但形式和稳定性截然不同。

1.1 VAE

VAE优化目标是最大化证据下界 (ELBO),这是一个紧致的下界。

其中,

第一项(重构项)推动编码准确

第二项(KL正则项)推动潜在分布规整。两力需精细平衡。

VAE的方差潜在来源多:

1)重构项:取决于解码器建模能力,复杂似然(如像素独立伯努利)梯度方差可能较高。

2) KL项:对编码器参数\(\phi\)的梯度,若后验\(q_{\phi}(z|x)\)与先验\(p(z)\)偏离远,初期梯度可能大且不稳定。

这也解释了为什么VAE比较难训练,训练过程不稳定。

1.2 DDPM

DDPM目标是最小化数据分布的负对数似然的变分上界,或简化为去噪得分匹配/重加权目标。

在所有噪声级别t上,训练网络预测注入的噪声。目标函数在所有t上形式一致,输入数据不同。

DDPM则相比VAE则方差天然被抑制,说明如下

1)目标一致性,所有时间步都做类似回归任务,目标稳定。

2)噪声调度,通过精心设计的,绝大多数训练迭代过程中噪声水平中等,使任务难易适中,梯度信号明确,方差低。

2 优化目标

VAE和DDPM两者都使用了重参数化技巧,但路径性质不同。

2.1 VAE重参数化技巧

VAE采用单步跳跃,从编码器输出的分布直接采样

从对梯度方差影响的角度看,VAE方差直接受编码器输出影响:

梯度方差与相关。若编码器预测的方差不稳定或过大,会导致的采样剧烈波动,从而产生高方差梯度,尤其是在训练初期。

2.2 DDPM重参数化技巧

DDPM采用多步渐进的方式,前向过程在数百至数千个预定义时间步上逐步加噪,反向过程需要学习逆映射。训练时,时间步是均匀随机采样的重要随机变量。

从对梯度方差影响的角度看,DDPM方差被时间平均和任务分解。

随机采样将复杂的生成任务分解为许多简单的去噪子任务。

每个批次梯度是对不同期望的蒙特卡洛估计,这种时间维度上的平均有效降低了整体梯度方差。

3 梯度估计

对于VAE和DDPM的梯度估计的影响,主要是后验坍缩与得分匹配的对比。

这是体现两者训练动态差异的关键现象。

3.1 VAE中的后验坍缩

VAE有可能面临后验坍塌(Posterior Collapse)的风险。

训练中,编码器退化到先验(如标准正态),即

此时潜在变量 携带无效信息,解码器仅凭先验生成。

这会导致不稳定和方差剧变,发生后验坍缩时,KL散度项梯度趋近于0,重构项梯度因解码器接收无效信息输入而变得无意义且可能波动巨大,整体训练可能陷入局部僵局或剧烈震荡。

3.2 DDPM中的得分匹配

DDPM采用得分匹配(score matching)方式,

DDPM的训练目标 本质上是对数据分布梯度(得分)的加权匹配。

它直接建模数据在噪声扰动下的条件分布,避免了在潜在空间进行复杂的后验推断。

DDPM提供稳定监督信号,每个对应的去噪网络始终以清晰目标(真实噪声)进行监督回归。

即使对于非常嘈杂的值很大,目标依然是明确的,梯度方向稳定,方差小。

4 直观比喻

VAE像在走钢丝,需要在编码保真度(重构项)和潜在空间规整度(KL项)之间保持微妙的动态平衡。

这两股力量博弈使得训练初期梯度方向可能不一致、方差较大,容易陷入"后验坍缩"的局部最优。

DDPM像在爬一个缓坡,通过噪声调度,将艰巨的生成任务分解成数百个从非常容易几乎无噪到有点挑战中等噪声再到极其简单几乎全是噪音的渐进式去噪子任务。每个子任务的目标都非常明确单一,即预测噪声,这使得梯度方向一致,估计方差低,训练过程异常平滑稳定。DDPM在训练中,可以采用不同的噪声调度函数,如线性、余弦。

reference


DDPM前向加噪过程详细推导

https://blog.csdn.net/liliang199/article/details/156341403

DDPM后向去噪过程详细推导

https://blog.csdn.net/liliang199/article/details/156343504

VAE中Encoder和Decoder的理论基础的探索

https://blog.csdn.net/liliang199/article/details/156280212

CodeFormer基于LPIPS和VQVAE实现高质量人脸修复

https://blog.csdn.net/liliang199/article/details/156728804

相关推荐
IT_陈寒1 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
用户3521802454753 小时前
🎆从 Prompt 到 Skill:让 Spring AI Agent 学会"装新技能"
人工智能·spring boot·ai编程
米小虾4 小时前
手把手教你搭建第一个生产级AI Agent:从选型到实战的完整指南
人工智能·agent
任沫4 小时前
Agent之Function Call
javascript·人工智能·go
米小虾4 小时前
2026年AI Agent全面爆发:从开源生态到企业级应用的进化之路
人工智能·agent
用户6919026813394 小时前
Vibe Coding 开发项目的基本范式
人工智能·设计模式·代码规范
To_OC4 小时前
别再跟 AI 死磕 prompt 了,我写了个 Loop 让它自己改到满意为止
人工智能·aigc·agent
血小溅5 小时前
三大 AI 编码框架深度对比:GSD vs OpenSpec vs Superpowers
人工智能·后端
武子康8 小时前
调查研究-186 LangChain 和 LangGraph 的区别:从快速构建 Agent 到生产级工作流编排
人工智能·langchain·llm
武子康8 小时前
调查研究-185 CodeGraph 调研:给 AI 编程 Agent 一张代码库地图,少一点反复 grep(2026)
人工智能·openai·claude