【深度学习】Diffusion扩散模型的逆扩散问题

1、前言

上一篇,我们讲了Diffusion这个模型的原理推导。但在推导中,仍然遗留了一些问题。本文将解决那些问题

参考论文:

①Variational Diffusion Models (arxiv.org)

②Tutorial on Diffusion Models for Imaging and Vision (arxiv.org)

视频:Diffusion扩散模型补充-哔哩哔哩

2、 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)

在上篇文章中,我们说 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)服从正态分布,但是并没有已与证明。那是因为我翻阅了大量的文章资料,都没有找到相关的证明过程。但是正当我放弃之际,我竟然找到了

首先,我们将这个概率利用贝叶斯公式展开
q ( x t − 1 ∣ x t , x 0 ) = q ( x t − 1 , x t ∣ x 0 ) q ( x t ∣ x 0 ) = q ( x t ∣ x t − 1 , x 0 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) = q ( x t ∣ x t − 1 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) q(x_{t-1}|x_t,x_0)=\frac{q(x_{t-1},x_t|x_0)}{q(x_{t}|x_0)}=\frac{q(x_t|x_{t-1},x_0)q(x_{t-1}|x_0)}{q(x_t|x_0)}=\frac{q(x_t|x_{t-1})q(x_{t-1}|x_0)}{q(x_t|x_0)} q(xt−1∣xt,x0)=q(xt∣x0)q(xt−1,xt∣x0)=q(xt∣x0)q(xt∣xt−1,x0)q(xt−1∣x0)=q(xt∣x0)q(xt∣xt−1)q(xt−1∣x0)

在此,得出 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt−1∣x0)为先验, q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xt∣xt−1)为似然,而 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)则为后验

论文①里面给出这个定理

我在以前的文章,也推导出这样的一个定理
如果: P ( x ) ∼ N ( x ∣ μ x , Σ x ) P ( y ∣ x ) ∼ N ( y ∣ A x + B , Q ) 那么: P ( x ∣ y ) ∼ N ( x ∣ μ x − Σ x y Σ y y − 1 μ y , Σ x x − Σ x y Σ y y − 1 Σ y x ) \begin{aligned}如果:&\\&P(x)\sim N(x|\mu_x,\Sigma_x)\\&P(y|x) \sim N(y|Ax+B,Q)\\那么:&\\&P(x|y)\sim N(x|\mu_x-\Sigma_{xy}\Sigma_{yy}^{-1}\mu_y,\Sigma_{xx}-\Sigma_{xy}\Sigma_{yy}^{-1}\Sigma_{yx})\end{aligned}\nonumber 如果:那么:P(x)∼N(x∣μx,Σx)P(y∣x)∼N(y∣Ax+B,Q)P(x∣y)∼N(x∣μx−ΣxyΣyy−1μy,Σxx−ΣxyΣyy−1Σyx)

其中里面的 Σ x y \Sigma_{xy} Σxy表示随机变量x,y的协方差矩阵,而 μ y \mu_y μy是随机变量y的期望。都是可以求出来的

至于怎么求,而刚刚的定理是怎么来的,请看我以前写过的一篇博文:线性动态系统中的概率求解_随机动态系统 条件概率-CSDN博客

好,现在,我们不难发现, P ( x ) P(x) P(x)就是先验,而 P ( y ∣ x ) P(y|x) P(y∣x)则是似然, P ( x ∣ y ) P(x|y) P(x∣y)就是后验。

P ( x ∣ y ) P(x|y) P(x∣y)刚好对应上面那个 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)。那么也就是说, P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t,x_0) P(xt−1∣xt,x0)就是正态分布。至于是否要用刚刚的公式求出来,反而有些麻烦,其实可以直接用上一篇文章那种推导就可以了。

还有一点值得注意的是,在论文①中,里面已经强调了 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt−1∣x0)为先验, q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xt∣xt−1)为似然,而 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)则为后验

其实论文还提出,如果似然跟先验满足刚刚提出的定理,就可以直接得到后验的公式。

我想说的是,论文只是为了得到后验的公式。如果我们不想得到后验的公式(比如我们只想知道后验是什么分布)

那么根据高斯分布的自共轭性质,如果先验和似然都是高斯分布,那么后验就是高斯分布。就能得出结论了。

3、重建损失问题

在上一篇文章中,对于重构项 E q ( x 1 ∣ x 0 ) log ⁡ P ( x 0 ∣ x 1 ) \mathbb{E}_{q(x_1|x_0)}\\log P(x_0\|x_1) Eq(x1∣x0)logP(x0∣x1),我们进行了一些推导

但其实,那是我自己推的,论文里面没有提到。

虽然得到了结果,但是毕竟不是论文里面的。如果你想看论文里面的推导(毕竟我写错的概率大,而论文错的概率却很小)。可以参考论文②,里面有对重构项的推导。

想看论文里面的推导(毕竟我写错的概率大,而论文错的概率却很小)。可以参考论文②,里面有对重构项的推导。

相关推荐
点PY4 分钟前
OmDet-Turbo: Real-Time Transformer-Based Open-Vocabulary Object Detection论文精读
深度学习·目标检测·transformer
空堂与归10 分钟前
百度开源 LoopVL:1B 循环视觉模型省 260 倍数据
人工智能·百度·ai·开源
哔哩哔哩技术14 分钟前
Index-Translate:支持 150 种语言的多模态翻译模型是如何炼成的?
人工智能
sinat_2869451914 分钟前
Claude Code Review
人工智能·代码复审
尘世中一位迷途小书童22 分钟前
词表(tokenizer),一个开训就改不了的决定
人工智能
Tiandaren23 分钟前
么是agent、为什么要做agent、怎么做agent、怎么工程化
人工智能·python·深度学习·大模型
四六的六26 分钟前
一次改回去越界的沙箱复盘:配置恢复了,token 还活着,检测器漏了最关键的那条
人工智能·openai·agent·个人开发·ai编程·ai大模型·ai产品
Daneas29 分钟前
AI文生图提示词生成器(SD 1.5、SDXL、Flux、Krea-2)
人工智能
半摆烂日常31 分钟前
手机表单的左滑操作:触摸事件的处理细节
大数据·开发语言·人工智能·智能手机·https·c#
xianghongtao011634 分钟前
01_LangDiT_扩散语言模型_解读报告
人工智能·语言模型·自然语言处理