Welcome!

Hi👋, welcome to Dibbla's space!


I'm Dibbla and this is my blog.
I write about programming, technology, and other things that interest me.
I hope you find something useful here.

This site is under aggressive development. Maybe return later for more content.

扩散家族: DDPM

翻译自英文版本 在这篇博客中,我们将尝试理解扩散家族中的成员——DDPM。鉴于变分自编码器(VAE)和扩散模型共享的常见结构,我们首先讨论一些重要的VAE内容,然后介绍DDPM。这篇博客试图做到自成体系并在数学上清晰,但假定读者有一定的VAE和生成模型的先验知识。 参考文献: VAE 在 Wikipedia Lil’Log 什么是扩散模型? 滑铁卢大学 STAT940 第17讲 by Ali Ghodsi VAE 和 ELBO 在生成模型中,我们的主要目标是观察数据集,学习其底层分布,然后从学习到的分布中生成新样本。在VAE方案中,我们采用类似于自编码器的结构,如下图所示: graph LR A[输入] --> B[编码器] B --> C[潜在空间] C --> D[解码器] D --> E[输出] N((噪声)) --> C 在推理过程中,我们会舍弃编码器,采样一些噪声来构建潜在变量,然后使用解码器生成样本。潜在变量通常从标准高斯分布中采样。 我知道这可能仍然不清楚,所以让我们深入数学细节。 假设我们有一些数据,我们可以用参数 $\theta$ 来建模数据分布。分布可以表示为 $p_\theta(x) = p(x|\theta)$。问题是我们不知道参数 $\theta$,这正是我们想要学习的。我们能最大化数据的似然吗?可以,但这可能难以优化好,并且我们失去了生成新样本的能力。 VAE引入了潜在变量 $z$ 来建模数据的复杂结构,它与数据 $x$ 具有联合分布。然后 $p_\theta(x)$ 是 $p_\theta(x, z)$ 的边缘分布。我们可以将边缘分布写为: $$ p_\theta(x) = \int p_\theta(x, z) dz $$ 根据简单的概率规则,我们进一步写成: $$ p_\theta(x) = \int p_\theta(x|z)p_\theta(z) dz $$...

六月 13, 2024 · Dibbla