扩散模型工作原理
什么是扩散模型?
扩散模型(Diffusion Model)是一种基于概率的生成模型,通过模拟"扩散"过程来生成数据。 它的核心思想是:先将数据逐渐添加噪声(前向过程),然后学习如何从噪声中恢复原始数据(逆向过程)。
前向扩散过程
在训练阶段,扩散模型会逐步向数据中添加高斯噪声。经过 T 步后,数据完全变成随机噪声:
x{t} = sqrt(1 - beta{t}) * x{t-1} + sqrt(beta{t}) * z{t}
其中 beta{t} 是噪声调度器,控制每一步添加的噪声量。
逆向生成过程
在生成阶段,模型从纯噪声开始,逐步去噪:
x{t-1} = 1/sqrt(alpha{t}) * (x{t} - (1-alpha{t})/sqrt(1-bar{alpha}{t}) * epsilon_theta(x{t}, t)) + sigma{t} * z
扩散模型的关键组件
1. 噪声调度器
噪声调度器决定了每一步添加多少噪声。常见的调度策略包括线性调度、余弦调度等。
2. U-Net 架构
扩散模型通常使用 U-Net 架构作为去噪网络。U-Net 能够捕捉不同尺度的特征,非常适合图像生成任务。
3. 时间嵌入
模型需要知道当前是第几个时间步,以便应用正确的去噪策略。时间嵌入将时间步信息注入到模型中。
扩散模型的优势
- 生成质量高:扩散模型在多个图像生成任务上达到了 SOTA 水平
- 训练稳定:相比 GAN,扩散模型的训练更加稳定
- 可控性强:可以通过条件输入控制生成结果
应用领域
扩散模型已经广泛应用于:
- 图像生成(如 Stable Diffusion)
- 图像修复和超分辨率
- 文本到图像生成
- 视频生成
💡 关键点
扩散模型的核心在于"逐步去噪"。通过观察本可视化中的每一步变化, 你可以看到图像如何从杂乱的噪声逐渐变得清晰。