Diffusion Posterior Sampling(扩散后验采样)理论讲解

本文介绍了扩散模型的基本概念,包括DDPM和分数生成模型的改进,以及它们在图像去噪中的应用。重点讨论了DPS模型,一种结合了扩散模型和贝叶斯方法的逆问题求解策略,尤其是针对高斯和泊松噪声的近似方法。未来的研究方向包括模型的改进和应用拓展。
摘要由CSDN通过智能技术生成

一.背景简介

在开始有正式介绍前,我们先来简要的讲解一下扩散模型与贝叶斯方法。

1.扩散模型

1.1图像在计算机中的存储

图像在计算机中按像素点存储。对于彩色图像,每个像素点有红,绿,蓝三种颜色,用0-255的数值表示每种颜色的深浅,再进行混合,即可得到一个彩色的像素点,每个像素点可于是可以用三维向量(b,g,r)表示(对于黑白图像是一维)

1.2扩散模型简介

1.2.1DDPM

现在我们考虑单个黑白像素点,即0-255间的整数,由于0-255这个范围不便于处理,我们将其除以255,将取值范围变为0-1,在处理结束后乘上255恢复即可。

于是,现在便可用一个出于0-1的数表示一个像素点,将其记为x_{0}。现在我们记\varepsilon为一个标准高斯噪声(N(0,1)),以及一列在[0,1]上单调趋于0的数\alpha (t),随后我们考虑Markov过程:

q(x_{t}|x_{t-1})=N(x_{t};\sqrt\alpha(t),1-\alpha(t))

再利用Markov性得到:

x_{t}= \sqrt{\alpha{(t-1)}}+\sqrt{1-\alpha{(t-1)}}\varepsilon_{t-1}

再将x_{t-1}用相同公式解出,代入,最终得到:

x_{t}=\sqrt{\overline\alpha{(t)}}+\sqrt{1-\overline\alpha(t)}\varepsilon

其中\overline\alpha{(t)}=\prod_{1}^{t}\alpha{(t)},由极限理论可知,当t足够大,时\overline\alpha{(t)}便会足够小以至于可以被当作0.

于是,在经过一系列加噪后,初始的像素点x0成为了一个由标准正态随机变量\varepsilon随机生成的一个值。

对于任意的像素点这样操作最终都会得到一个这样的随机数,而图像是由若干个像素点组成的,这也就是说,对任意图像进行上述操作,最终都会得到一张每个像素点都是由标准正态变量随机生成的图像。

那么,既然任意图像都可以通过加噪变成噪声图像,那么我们是否可以从一张噪声图像出发,在一图片集上训练一个神经网络,通过网络预测噪声,进行一系列去噪过程,得到一张与训练集类似的图像呢?答案是肯定的,而这就是扩散模型。在扩散模型框架下,我们前文提到的加噪过程被称为前向过程,而从噪声图像生成新图像的过程被称为逆向过程

Ho等人在其2020年发表的论文Denoising Diffusion Probabilistic Models(DDPM)中通过似然函数对神经网络的训练过程进行了严格的讨论,碍于篇幅我们此处不详细展开,仅给出他们的结论。根据论文的内容,我们只需对

\nabla_{\theta} ||\epsilon-\epsilon_{\theta}(\sqrt{\bar\alpha{(t)}}x_{0}+\sqrt{1-\bar\alpha{(t)}},t) ||^2进行梯度下降即可完成训练,其中\varepsilon_{\theta}是用网络预测的噪声,具体的训练与生成算法如下:

生成过程即从噪声图像开始逐步减去由网络预测的噪声。

1.2.2基于分数的生成模型

这是Song等人在SCORE-BASED GENERATIVE MODELING THROUGH STOCHASTIC DIFFERENTIAL EQUATIONS这篇论文中对扩散模型做出的改进,他们在这篇文章中结合了DDPM与 SMLD(Score matching with Langevin dynamics),并采用SDE来描述加噪与去噪过程,此处碍于篇幅也不具体展开,仅给出经他们改进后的扩散模型。在他们的模型中,通过随机微分方程(SDE)定义了加噪与去噪过程。

前向过程为:dx=f(x,t)dt+g(t)dw

逆向过程则为前向过程的逆向方程:dx=[f(x,t)-g^2(t)\nabla_{x}logp_{t}(x)]dt+g(t)d\overline w

其中dwd\overline w表示正向与反向winner过程,为随机微分方程/随机过程中的概念。

这样改良后的扩散模型将不再预测\epsilon_{\theta},转而预测分数函数\nabla_{x}logp_{t}(x)的值,并由预测值表示逆向(去噪)过程,记预测值为s_{\theta}{*(x_{i},i)},于是逆向(去噪)过程可表示为:

x_{i}=\frac{1}{\sqrt{1-\beta_{i}}}(x_{i}+\beta_{i}s_{\theta*}(x_{i},i))+\beta_{i}z_{i}

其中的\beta_{i}=1-\alpha_{i},之后的\beta_{i}也表相同含义。

扩散后验采样方法采用的便是这种形式的扩散模型。

2.贝叶斯方法

我们知道,统计推断问题就是要通过样本去推断未知的参数。现假设我们由样本X,X有分布族{F_{\theta}|\theta\in\Theta},其中\Theta为参数空间。

我们的要通过得到的样本X来预测参数\theta的分布,为此我们可以使用条件概率p(\theta|x)来进行预测。

f(x,\theta)为样本x与参数\theta的联合分布密度,f(x),f(\theta)为x与\theta的边缘分布密度,则由贝叶斯公式有:

f(\theta|x)=\frac{f(\theta)f(x|\theta)}{f(x)}=\frac{f(\theta)f(x|\theta)}{\int_{\Theta}f(x,\phi)d\phi}=\frac{f(\theta)f(x|\theta)}{\int_{\Theta}f(x|\phi)f(\phi)d\phi}

其中f(x|\theta)为分布F_{\theta}的密度函数,是已知的。故在上式中,唯一的未知项便是f(\theta),为了进行统计推断,我们可以根据已知信息先对f(\theta)做一个主观的推断,我们将这个推断叫做先验分布,而条件概率密度f(\theta|x)则叫做后验分布。得出后验分布后,我们再用后验分布进行统计推断,这种推断方法便被称作贝叶斯方法。

形象来看,贝叶斯方法其实就是一个不断通过新获取的信息修正旧有模型的过程。

二.扩散后验采样模型

1.扩散后验采样的总体思路

1.1贝叶斯框架下的逆问题

逆问题的数学抽象形式为:

y=A(x_{0})+n

其中y为实际观测到的图像,在图像问题中体现为动态模糊的图像,部分遮挡的图像等

x_{0}为问题的初始值,在图像问题中,就是未经迷糊,遮挡的“初始图像”。

(如在此例中,左图为y,右图为x_{0}

A则是把x_{0}变成y的算子,叫做测量算子。n则为测量误差等导致的噪声,一般为高斯噪声。

逆问题表达式中,观测值y是显然已知的,测量算子A也可以认为是已知的(DPS模型中),噪声n也已知,而初始状态x_{0}未知。

我们将观测值y作为样本,而初始状态x_{0}作为参数,由于A,n均已知,从而x_{0}确定时y的分布p(y|x_{0})也是已知的,于是我们便可以用贝叶斯方法来求解逆问题。

1.2用扩散模型作为先验

要用贝叶斯方法推断参数,则我们必须有一个先验,而在扩散后验采用模型中,这个先验正是由扩散模型生成的图像x_{0}的分布,而与之相对应的,我们有一个预先训练好的网络s_{\theta}.

在扩散后验采样框架下,依照基于分数的生成模型,定义前向(加噪)和逆向(去噪)方程:

前向:dx=-\frac{\beta(t)}{2}xdx+\sqrt{\beta(t)}dw

逆向:dx=[-\frac{\beta{(t)}}{2}x-\beta{(t)}\nabla_{x_{t}}log_{p_{t}}(x_{t})]dt+\sqrt{\beta(t)}d\overline w

并用训练好的网络来预测分数函数\nabla_{x_{t}}logp_{t}(x_{t})的值,记预测值为s_{\theta}*(x_{t},t).

自然地,后验分布便是加上观测值y作为条件,从而我们得到后验逆向方程:

dx=[-\frac{\beta{(t)}}{2}x-\beta{(t)}\nabla_{x_{t}}logp_{t}(x_{t}|y)]dt+\sqrt{\beta{(t)}}d \overline w

由贝叶斯公式,其中的后验分数函数\nabla_{x_{t}}logp_{t}(x_{t}|y)可分解为\nabla_{x_{t}}logp_{t}(x_{t})+\nabla_{x_{t}}logp_{t}(y|x_{t})

其中\nabla_{x_{t}}logp_{t}(x_{t})与先验方程中分数函数一致,直接用s_{\theta}*(x_{t},t)替代,而\nabla_{x_{t}}logp_{t}(y|x_{t})则没有解析表示(见Diffusion Posterior Sampling is Computationally Intractable )。

因此,扩散后验采样框架下的问题的关键便是如何处理不可解析表示的\nabla_{x_{t}}logp_{t}(y|x_{t}),这一框架下的各种研究都致力于为该项寻找合理的近似,然而在DPS之前,都没有找到泛用的近似,这些近似要么只对线性模型起作用,要么就必须要求无噪声。

2.DPS模型所采用的近似

我们先对噪声为高斯噪声情形进行讨论,对于概率密度p(y|x_{t}),可以将其写作:

p(y|x_{t})=\int p(y|x_{0},x_{t})p(x_{0}|x_{t})dx_{0}   ,  x_{0},x_{t},y三者关系如图

因此yx_{t}x_{0}条件下条件独立,于是进一步有:

\int p(y|x_{0},x_{t})p(x_{0}|x_{t})dx_{0}=\int p(y|x_{0})p(x_{0}|x_{t})dx_{0},将p(x_{0}|x_{t})dx_{0}视作一个概率测度,则:

\int p(y|x_{0})p(x_{0}|x_{t})dx_{0}=E_{x_{0}\sim p(x_{0}|x_{t})}(p(y|x_{0}))

其中p(y|x_{0})可以当作x_{0}的一个函数,记作g(x_{0}),则上式可表示为E_{x_{0}\sim p(x_{0}|x_{t})}(g(x_{0}))

现在我们颠倒期望和函数的复合关系,即g(E_{x_{0}\sim p(x_{0}|x_{t})}(x_{0})),

现记\hat{x_{0}}=E[x_0|x_t],则g(E_{x_{0}\sim p(x_{0}|x_{t})}(x_{0})) =p(y|\hat{x_0})

由于噪声为高斯噪声,可知p(x_{t}|x_0)服从高斯分布,为一指数族分布,因此可以利用Tweedie公式,求得:

\hat{x_0}=\frac{1}{\sqrt {\overline {\alpha{(t)}}}}(x_{t}+(1-\overline{\alpha{(t)}})\nabla_{x_{t}} logp_{x_t})

并且\hat{x_0}可作为一个经验分布替换x_0,因此有p(y|\hat{x_0})也满足高斯分布,进而可以解析表达。

综上所述,在颠倒期望和函数的复合关系后得到的p(y|\hat{x_0})可以解析表达,因此如果该式等于E_{x_{0}\sim p(x_{0}|x_{t})}(g(x_{0})),至少二者差距不大,那么便可以直接用p(y|\hat{x_0})进行替换,得到一个\nabla_{x_{t}}logp_{t}(y|x_{t})的近似。

而此二者的差为一个 Jensen Gap,根据“Robust Compressed Sensing MRI with Deep Generative Priors”,可以估计Jensen Gap的上界,为:

\frac{d}{ \sqrt{​{2\pi \sigma^2}}} e^{-\frac{1}{2\sigma^2}} ||\nabla_xA(x)||m_{1}

m_1=\int ||x_0-\hat{x_0}||p(x_0|x_t)dx_0

其中对于大多数算子||\nabla_xA(x)||有界,且由于\hat{x_0}x_0的一个经验分布近似,m_1也很小。因此二者之差在大多数情况下是很小的,该近似是可行的。此外,如若无噪声,即\sigma趋于0,则根据极限理论,二者就是相等的。

3.DPS算法的具体实现

根据先前的近似,针对高斯噪声情形,我们有:

\nabla_{x_{t}}logp_{t}(x_{t}|y) =\nabla_{x_{t}}logp_{t}(x_{t})+\nabla_{x_{t}}logp_{t}(y|x_{t})

=s_{\theta}*(x_{t},t)+\nabla_{x_{t}}logp_{t}(y|x_{t})=s_{\theta}*(x_{t},t)+\nabla_{x_t}log(p(y|\hat{x_0}))

=s_{\theta}*(x_{t},t)-\rho \nabla_{x_t}||y-A(\hat{x_0})||^2_{2}

其中\rho \sim \frac{1}{\sigma^2},在算法中作为步长。

由于泊松分布可以被高斯分布近似,因此针对泊松噪声的情形,我们可通过类似方法得到:

\nabla_{x_{t}}logp_{t}(x_{t}|y)=s_{\theta}*(x_{t},t)-\rho \nabla_{x_t}||y-A(\hat{x_0})||^2_{\Lambda}, [\Lambda]_{ii}=1/2y_i,

其中||a||^2_{\Lambda}=a^T\Lambda a

DPS的算法如下:

其中标红框的部分即一般的扩散模型生成算法,DPS模型在去噪完成后,再额外减去了一项,该项实际上就是\nabla_{x_t}log(p(y|\hat{x_0}))(或者说\nabla_{x_{t}}logp_{t}(y|x_{t}))。综合来看,也就是将扩散模型生成去噪中的分数函数\nabla_{x_{t}}logp_{t}(x_{t})改为了\nabla_{x_{t}}logp_{t}(x_{t}|y)

当然我们也可以更加形象的理解这个算法,该算法在每一步消去噪声的同时,也用额外的一步来尽可能缩小现有图像与真正的初始图像的差别。

三.未来可能的研究方向

1.DPS本身

作为一个逆问题求解模型,DPS本身还是有不少值得改进的点。首先便是算子A必须已知,这点极大的限制了该模型的实用价值。对此可以结合其他能够预测算子A的模型,从而解决未知算子的逆问题。

此外,根据实验结果,该模型比较依赖先验数据,在采样方法上还可以做进一步改进。而且由于其生成过程同样基于扩散模型,也继承了扩散模型生成图像缓慢的特点。这些都是未来可能的研究方向。

2.应用拓展

作为一套求解逆问题的,扩散后验采用的思路是十分有效的,除了图像之外,也可以尝试将其拓展到其他领域,如求解偏微分方程等。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值