生成扩散模型漫谈(六):一般框架之ODE篇
By 苏剑林 | 2022-08-08 | 102626位读者 |上一篇文章《生成扩散模型漫谈(五):一般框架之SDE篇》中,我们对宋飏博士的论文《Score-Based Generative Modeling through Stochastic Differential Equations》做了基本的介绍和推导。然而,顾名思义,上一篇文章主要涉及的是原论文中SDE相关的部分,而遗留了被称为“概率流ODE(Probability flow ODE)”的部分内容,所以本文对此做个补充分享。
事实上,遗留的这部分内容在原论文的正文中只占了一小节的篇幅,但我们需要新开一篇文章来介绍它,因为笔者想了很久后发现,该结果的推导还是没办法绕开Fokker-Planck方程,所以我们需要一定的篇幅来介绍Fokker-Planck方程,然后才能请主角ODE登场。
再次反思 #
我们来大致总结一下上一篇文章的内容:首先,我们通过SDE来定义了一个前向过程(“拆楼”):
\begin{equation}d\boldsymbol{x} = \boldsymbol{f}_t(\boldsymbol{x}) dt + g_t d\boldsymbol{w}\label{eq:sde-forward}\end{equation}
然后,我们推导了相应的逆向过程的SDE(“建楼”):
\begin{equation}d\boldsymbol{x} = \left[\boldsymbol{f}_t(\boldsymbol{x}) - g_t^2\nabla_{\boldsymbol{x}}\log p_t(\boldsymbol{x}) \right] dt + g_t d\boldsymbol{w}\label{eq:sde-reverse}\end{equation}
最后,我们推导了用神经网络$\boldsymbol{s}_{\boldsymbol{\theta}}(\boldsymbol{x}, t)$来估计$\nabla_{\boldsymbol{x}}\log p_t(\boldsymbol{x})$的损失函数(得分匹配):
\begin{equation}\mathbb{E}_{\boldsymbol{x}_0,\boldsymbol{x}_t \sim p(\boldsymbol{x}_t|\boldsymbol{x}_0)\tilde{p}(\boldsymbol{x}_0)}\left[\left\Vert \boldsymbol{s}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, t) - \nabla_{\boldsymbol{x}_t} \log p(\boldsymbol{x}_t|\boldsymbol{x}_0)\right\Vert^2\right] \end{equation}
至此,我们完成了扩散模型的训练、预测的一般框架,可以说,它是DDPM的非常一般化的推广了。但正如《生成扩散模型漫谈(四):DDIM = 高观点DDPM》中介绍的DDIM是DDPM的高观点反思结果,SDE作为DDPM的推广,有没有相应的“高观点反思结果”呢?有,其结果就是本文主题“概率流ODE”。
Dirac函数 #
DDIM做了什么反思呢?很简单,DDIM发现DDPM的训练目标主要跟$p(\boldsymbol{x}_t|\boldsymbol{x}_0)$有关,而跟$p(\boldsymbol{x}_t|\boldsymbol{x}_{t-1})$无关,所以它以$p(\boldsymbol{x}_t|\boldsymbol{x}_0)$为出发点,去推导更一般的$p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t,\boldsymbol{x}_0)$和$p(\boldsymbol{x}_t|\boldsymbol{x}_{t-1},\boldsymbol{x}_0)$。概率流ODE做的反思是类似的,它想知道在SDE框架中,对于固定的$p(\boldsymbol{x}_t)$,能找出哪些不同的$p(\boldsymbol{x}_{t+\Delta t}|\boldsymbol{x}_t)$(或者说找到不同的前向过程SDE)。
我们先写出前向过程$\eqref{eq:sde-forward}$的离散形式
\begin{equation}\boldsymbol{x}_{t+\Delta t} = \boldsymbol{x}_t + \boldsymbol{f}_t(\boldsymbol{x}_t) \Delta t + g_t \sqrt{\Delta t}\boldsymbol{\varepsilon},\quad \boldsymbol{\varepsilon}\sim \mathcal{N}(\boldsymbol{0}, \boldsymbol{I})\label{eq:sde-discrete}\end{equation}
这个等式描述的是随机变量$\boldsymbol{x}_{t+\Delta t},\boldsymbol{x}_t,\boldsymbol{\varepsilon}$之间的关系,我们可以方便地对两边求期望,然而我们并非想求期望,而是想求分布$p(\boldsymbol{y}_t)$(所满足的关系式)。怎么将分布转换成期望形式呢?答案是Dirac函数:
\begin{equation}p(\boldsymbol{x}) = \int \delta(\boldsymbol{x} - \boldsymbol{y}) p(\boldsymbol{y}) d\boldsymbol{y} = \mathbb{E}_{\boldsymbol{y}}[\delta(\boldsymbol{x} - \boldsymbol{y})]\end{equation}
Dirac函数严格定义是属于泛函分析的内容,但我们通常都是当它是普通函数来处理,一般都能得到正确的结果。由上式还可以得知,对于任意$f(\boldsymbol{x})$,成立
\begin{equation}p(\boldsymbol{x})f(\boldsymbol{x}) = \int \delta(\boldsymbol{x} - \boldsymbol{y}) p(\boldsymbol{y})f(\boldsymbol{y}) d\boldsymbol{y} = \mathbb{E}_{\boldsymbol{y}}[\delta(\boldsymbol{x} - \boldsymbol{y}) f(\boldsymbol{y})]\end{equation}
直接对上式两边求偏导数,得到
\begin{equation}\nabla_{\boldsymbol{x}}[p(\boldsymbol{x}) f(\boldsymbol{x})] = \mathbb{E}_{\boldsymbol{y}}\left[\nabla_{\boldsymbol{x}}\delta(\boldsymbol{x} - \boldsymbol{y}) f(\boldsymbol{y})\right] = \mathbb{E}_{\boldsymbol{y}}\left[f(\boldsymbol{y})\nabla_{\boldsymbol{x}}\delta(\boldsymbol{x} - \boldsymbol{y})\right]\end{equation}
这是后面要用到的性质之一,可以发现它本质上是狄拉克函数的导数能够通过积分转移到所乘函数上去。
F-P方程 #
经过上述铺垫,现在我们根据式$\eqref{eq:sde-discrete}$写出
\begin{equation}\begin{aligned}
&\,\delta(\boldsymbol{x} - \boldsymbol{x}_{t+\Delta t}) \\[5pt]
=&\, \delta(\boldsymbol{x} - \boldsymbol{x}_t - \boldsymbol{f}_t(\boldsymbol{x}_t) \Delta t - g_t \sqrt{\Delta t}\boldsymbol{\varepsilon}) \\
\approx&\, \delta(\boldsymbol{x} - \boldsymbol{x}_t) - \left(\boldsymbol{f}_t(\boldsymbol{x}_t) \Delta t + g_t \sqrt{\Delta t}\boldsymbol{\varepsilon}\right)\cdot \nabla_{\boldsymbol{x}}\delta(\boldsymbol{x} - \boldsymbol{x}_t) + \frac{1}{2} \left(g_t\sqrt{\Delta t}\boldsymbol{\varepsilon}\cdot \nabla_{\boldsymbol{x}}\right)^2\delta(\boldsymbol{x} - \boldsymbol{x}_t)
\end{aligned}\end{equation}
这里当$\delta(\cdot)$是普通函数那样做了泰勒展开,只保留了不超过$\mathcal{O}(\Delta t)$的项。现在我们两边求期望:
\begin{equation}\begin{aligned}
&\,p_{t+\Delta t}(\boldsymbol{x}) \\[6pt]
=&\,\mathbb{E}_{\boldsymbol{x}_{t+\Delta t}}\left[\delta(\boldsymbol{x} - \boldsymbol{x}_{t+\Delta t})\right] \\
\approx&\, \mathbb{E}_{\boldsymbol{x}_t, \boldsymbol{\varepsilon}}\left[\delta(\boldsymbol{x} - \boldsymbol{x}_t) - \left(\boldsymbol{f}_t(\boldsymbol{x}_t) \Delta t + g_t \sqrt{\Delta t}\boldsymbol{\varepsilon}\right)\cdot \nabla_{\boldsymbol{x}}\delta(\boldsymbol{x} - \boldsymbol{x}_t) + \frac{1}{2} \left(g_t\sqrt{\Delta t}\boldsymbol{\varepsilon}\cdot \nabla_{\boldsymbol{x}}\right)^2\delta(\boldsymbol{x} - \boldsymbol{x}_t)\right] \\
=&\, \mathbb{E}_{\boldsymbol{x}_t}\left[\delta(\boldsymbol{x} - \boldsymbol{x}_t) - \boldsymbol{f}_t(\boldsymbol{x}_t) \Delta t\cdot \nabla_{\boldsymbol{x}}\delta(\boldsymbol{x} - \boldsymbol{x}_t) + \frac{1}{2} g_t^2\Delta t \nabla_{\boldsymbol{x}}\cdot \nabla_{\boldsymbol{x}}\delta(\boldsymbol{x} - \boldsymbol{x}_t)\right] \\
=&\,p_t(\boldsymbol{x}) - \nabla_{\boldsymbol{x}}\cdot\left[\boldsymbol{f}_t(\boldsymbol{x})\Delta t\, p_t(\boldsymbol{x})\right] + \frac{1}{2}g_t^2\Delta t \nabla_{\boldsymbol{x}}\cdot\nabla_{\boldsymbol{x}}p_t(\boldsymbol{x})
\end{aligned}\end{equation}
两边除以$\Delta t$,并取$\Delta t\to 0$的极限,结果是
\begin{equation}\frac{\partial}{\partial t} p_t(\boldsymbol{x}) = - \nabla_{\boldsymbol{x}}\cdot\left[\boldsymbol{f}_t(\boldsymbol{x}) p_t(\boldsymbol{x})\right] + \frac{1}{2}g_t^2 \nabla_{\boldsymbol{x}}\cdot\nabla_{\boldsymbol{x}}p_t(\boldsymbol{x})\label{eq:fp}
\end{equation}
这就是式$\eqref{eq:sde-forward}$所对应的“F-P方程”(Fokker-Planck方程),它是描述边际分布的偏微分方程。
等价变换 #
大家看到偏微分方程不用担心,因为这里并没有打算去研究怎么求解偏微分方程,只是借助它来引导一个等价变换而已。对于任意满足$\sigma_t^2\leq g_t^2$的函数$\sigma_t$,F-P方程$\eqref{eq:fp}$完全等价于
\begin{equation}\begin{aligned}
\frac{\partial}{\partial t} p_t(\boldsymbol{x}) =&\, - \nabla_{\boldsymbol{x}}\cdot\left[\boldsymbol{f}_t(\boldsymbol{x})p_t(\boldsymbol{x}) - \frac{1}{2}(g_t^2 - \sigma_t^2)\nabla_{\boldsymbol{x}}p_t(\boldsymbol{x})\right] + \frac{1}{2}\sigma_t^2 \nabla_{\boldsymbol{x}}\cdot\nabla_{\boldsymbol{x}}p_t(\boldsymbol{x}) \\
=&\,- \nabla_{\boldsymbol{x}}\cdot\left[\left(\boldsymbol{f}_t(\boldsymbol{x}) - \frac{1}{2}(g_t^2 - \sigma_t^2)\nabla_{\boldsymbol{x}}\log p_t(\boldsymbol{x})\right)p_t(\boldsymbol{x})\right] + \frac{1}{2}\sigma_t^2 \nabla_{\boldsymbol{x}}\cdot\nabla_{\boldsymbol{x}}p_t(\boldsymbol{x})
\end{aligned}\label{eq:fp-2}\end{equation}
形式上该F-P方程又相当于原来的F-P的$\boldsymbol{f}_t(\boldsymbol{x})$换成了$\boldsymbol{f}_t(\boldsymbol{x}) - \frac{1}{2}(g_t^2 - \sigma_t^2)\nabla_{\boldsymbol{x}}\log p_t(\boldsymbol{x})$、$g_t$换成了$\sigma_t$,根据式$\eqref{eq:fp}$对应于式$\eqref{eq:sde-forward}$,上式则对应于
\begin{equation}d\boldsymbol{x} = \left(\boldsymbol{f}_t(\boldsymbol{x}) - \frac{1}{2}(g_t^2 - \sigma_t^2)\nabla_{\boldsymbol{x}}\log p_t(\boldsymbol{x})\right) dt + \sigma_t d\boldsymbol{w}\label{eq:sde-forward-2}\end{equation}
但是别忘了式$\eqref{eq:fp}$跟式$\eqref{eq:fp-2}$是完全等价的,所以这意味着式$\eqref{eq:sde-forward}$和式$\eqref{eq:sde-forward-2}$这两个随机微分方程所对应的边际分布$p_t(\boldsymbol{x})$是完全等价的!这个结果告诉我们存在不同方差的前向过程,它们产生的边际分布是一样的。这个结果相当于DDIM的升级版,后面我们还会证明,当$\boldsymbol{f}_t(\boldsymbol{x})$是关于$\boldsymbol{x}$的线性函数时,它就完全等价于DDIM。
特别地,根据上一篇SDE的结果,我们可以写出式$\eqref{eq:sde-forward-2}$对应的反向SDE:
\begin{equation}d\boldsymbol{x} = \left(\boldsymbol{f}_t(\boldsymbol{x}) - \frac{1}{2}(g_t^2 + \sigma_t^2)\nabla_{\boldsymbol{x}}\log p_t(\boldsymbol{x})\right) dt + \sigma_t d\boldsymbol{w}\label{eq:sde-reverse-2}\end{equation}
神经ODE #
式$\eqref{eq:sde-forward-2}$允许我们改变采样过程的方差,这里我们特别考虑$\sigma_t = 0$的极端情形,此时SDE退化为ODE(常微分方程):
\begin{equation}d\boldsymbol{x} = \left(\boldsymbol{f}_t(\boldsymbol{x}) - \frac{1}{2}g_t^2\nabla_{\boldsymbol{x}}\log p_t(\boldsymbol{x})\right) dt\label{eq:flow-ode}\end{equation}
这个ODE称为“概率流ODE(Probability flow ODE)”,由于实践中的$\nabla_{\boldsymbol{x}}\log p_t(\boldsymbol{x})$需要用神经网络$\boldsymbol{s}_{\boldsymbol{\theta}}(\boldsymbol{x}, t)$近似,所以上式也对应一个“神经ODE”。
为什么要特别研究方差为0的情形呢?因为此时传播过程不带噪声,从$\boldsymbol{x}_0$到$\boldsymbol{x}_T$是一个确定性变换,所以我们直接反向求解ODE就能得到由$\boldsymbol{x}_T$变换为$\boldsymbol{x}_0$的逆变换,这也是一个确定性变换(直接在式$\eqref{eq:sde-reverse-2}$中代入$\sigma_t=0$也可以发现前向和反向的方程是一样的)。这个过程和flow模型是一致的(即通过一个可逆的变换将噪声变换成样本),所以概率流ODE允许我们将扩散模型的结果与flow模型相关结果对应起来,比如原论文提到概率流ODE允许我们做精确的似然计算、获得隐变量表征等,这些本质上都是flow模型的好处。由于flow模型的可逆性,它还允许我们在隐变量空间对原图做一些图片编辑等。
另一方面,从$\boldsymbol{x}_T$到$\boldsymbol{x}_0$的变换由一个ODE描述,这意味着我们可以通过各种高阶的ODE数值算法来加速从$\boldsymbol{x}_T$到$\boldsymbol{x}_0$的变换过程。当然,原则上SDE的求解也有一些加速方法,但SDE的加速研究远远不如ODE的容易和深入。总的来说,相比SDE,ODE在理论分析和实际求解中都显得更为简单直接。
回顾DDIM #
在《生成扩散模型漫谈(四):DDIM = 高观点DDPM》的最后,我们推导了DDIM的连续版本对应于ODE
\begin{equation}\frac{d}{ds}\left(\frac{\boldsymbol{x}(s)}{\bar{\alpha}(s)}\right) = \boldsymbol{\epsilon}_{\boldsymbol{\theta}}\left(\boldsymbol{x}(s), t(s)\right)\frac{d}{ds}\left(\frac{\bar{\beta}(s)}{\bar{\alpha}(s)}\right)\label{eq:ddim-ode}\end{equation}
接下来我们可以看到,该结果其实就是本文的式$\eqref{eq:flow-ode}$在$\boldsymbol{f}_t(\boldsymbol{x})$取线性函数$f_t \boldsymbol{x}$时的特例:在《生成扩散模型漫谈(五):一般框架之SDE篇》的末尾,我们推导过对应的关系
\begin{equation}\left\{\begin{aligned}
&f_t = \frac{1}{\bar{\alpha}_t}\frac{d\bar{\alpha}_t}{dt} \\
&g^2 (t) = 2\bar{\alpha}_t \bar{\beta}_t \frac{d}{dt}\left(\frac{\bar{\beta}_t}{\bar{\alpha}_t}\right) \\
&\boldsymbol{s}_{\boldsymbol{\theta}}(\boldsymbol{x}, t) = -\frac{\boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}, t)}{\bar{\beta}_t}
\end{aligned}\right.\end{equation}
将这些关系代入到式$\eqref{eq:flow-ode}$【$\nabla_{\boldsymbol{x}}\log p_t(\boldsymbol{x})$替换为$\boldsymbol{s}_{\boldsymbol{\theta}}(\boldsymbol{x}, t)$】后,整理得到
\begin{equation}\frac{1}{\bar{\alpha}_t}\frac{d\boldsymbol{x}}{dt} - \frac{\boldsymbol{x}}{\bar{\alpha}_t^2}\frac{d\bar{\alpha}_t}{dt} = \boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, t)\frac{d}{dt}\left(\frac{\bar{\beta}_t}{\bar{\alpha}_t}\right)\end{equation}
左端可以进一步整理得到$\frac{d}{dt}\left(\frac{\boldsymbol{x}}{\bar{\alpha}_t}\right)$,因此上式跟式$\eqref{eq:ddim-ode}$完全等价。
文章小结 #
本文在SDE篇的基础上,借助F-P方程推导了更一般化的前向方程,继而推导出了“概率流ODE”,并证明了DDIM是它的一个特例。
转载到请包括本文地址:https://spaces.ac.cn/archives/9228
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Aug. 08, 2022). 《生成扩散模型漫谈(六):一般框架之ODE篇 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/9228
@online{kexuefm-9228,
title={生成扩散模型漫谈(六):一般框架之ODE篇},
author={苏剑林},
year={2022},
month={Aug},
url={\url{https://spaces.ac.cn/archives/9228}},
}
May 12th, 2023
苏神您好,感谢您的讲解。我有个异想天开的问题,考虑带有记忆的扩散过程,即用积分方程建模,是否有意义?
理论上任何运动轨迹都可以考虑,实际上你要考虑对概率分布动力学建模的难度(即与之对应的FP方程或者连续性方程)
这个你能详细说说嘛,我觉得挺有意思的
June 29th, 2023
苏神你好
为什么说(4)这个等式描述的是随机变量$y_{t+Δt},y_t,ε$之间的关系?我观上下文没找到$y_{t+Δt},y_t$的定义,这里为什么会有一个额外的变量?
抱歉,这是个笔误,应该是$\boldsymbol{x}_{t+\Delta t},\boldsymbol{x}_t,\boldsymbol{\varepsilon}$。
August 17th, 2023
您好,Eq17似乎比DDIM原始论文的结论要强,按Proposition 1,DDIM的论文认为这个ODE和VE-SDE等价,而VE-SDE并不包含f(x)项。这里的结论是说f(x)是linear form的情况下也是可以的。这个结论我翻来覆去过了几遍,既没有找到obvious problem也没有理解,似乎是因为本文没有限制 $\bar{\alpha}^2 + \bar{\beta}^2 = 1$而原论文有这个限制?但另一方面如果有$\bar{\alpha}^2 + \bar{\beta}^2 = 1$这个限制的话linear假设似乎也不能成立,因为按SDE篇的结果,想得到VE-SDE的话需要$\bar{\alpha} \equiv 1$,于是$\bar{\beta} \equiv 0$,好像就变成了一个trivial解。实在没有想明白怎么reconcile这两个结果。应该理解为relax掉归一条件但加上线性假设,得到的一簇解都可以等价于DDIM ODE吗?
我有点没理解你关心的点。你将$\bar{\alpha}_t$取常数,$f_t$就等于0,线性项不就消失了?
是这样,这篇文章里推出的结果是只需要$f(x)$是线性的,probability flow ODE就和DDIM ODE形式等价。但是DDIM的paper证明了DDIM的ODE形式和VE-SDE等价。但VE-SDE是$f(x) = 0$的特殊形式,其实比这个结果要弱。可如果没步都是等价的,到底为什么一个有$f(x)$的模型会和VE-SDE的probability flow ODE等价呢?
我读了一下DDIM论文的证明,里边似乎是先设定了VE-SDE(即$\boldsymbol{f}_t(\boldsymbol{x})=\boldsymbol{0}$),然后它对应的ODE可以写成DDIM ODE的形式,并没有反推,所以原论文的只能说证明了VE-SDE是DDIM ODE的一个case,不能说它们等价。如果我没理解错,原论文考虑的VD-SDE,就是这里的$\bar{\alpha}_t\equiv 1$的case。
谢谢回复,我第一反应也是这个解释,所以试图寻找到底哪一步可以generalize。所以才会有第一个回复中的疑惑。从DDIM可以一直推到(45),然后这就是(51),推到(50)顺理成章,(49)式和g(t)的定义似乎与ODE formulation无关,那么推到了(49)式就等于推回了VE-SDE。这几步推导好像是可逆的。(这就是我开始困惑的点了)
问题应该在于,本文$(14)$的$\boldsymbol{x}$的方程,$(15)$式是$\bar{\boldsymbol{x}}=\frac{\boldsymbol{x}}{\bar{\alpha}_t}$的方程,$(14)$式中有个$\nabla_{\boldsymbol{x}}\log p_t(\boldsymbol{x})$,DDIM论文似乎直接将它替换成$\nabla_{\bar{\boldsymbol{x}}}\log p_t(\bar{\boldsymbol{x}})$了,这隐含了$\bar{\boldsymbol{x}}=\boldsymbol{x}$、即$\bar{\alpha}_t=1$的假设了。
细节可能还要再捋捋,不过感觉关键问题就在这里。
October 25th, 2023
(8)式最右边那一项二阶导位置的反括号是不是写错位置了
还是说二阶导也可以以这种形式一起放在平方项内
你是指$\left(g_t\sqrt{\Delta t}\boldsymbol{\varepsilon}\cdot \nabla_{\boldsymbol{x}}\right)^2$吗?这个没写错。将梯度当成一个普通向量,先做内积,然后平方,展开后在作用到函数中。
December 7th, 2023
[...]本文我们聚焦于ODE。在本系列的(六)、(十二)、(十四)、(十五)、(十七)等博客中,我们已经推导过ODE与扩散模型的联系,本文则对扩散ODE的采样加速做简单介绍,并重点介绍一种巧妙地利用“中值定理”思想的新颖采样加速方案“AMED”。[...]
March 5th, 2024
苏神,这样可以做到exact inversion吗?为什么我看DDIM加噪去噪后的图片,和原图仍有一些不同呢
可逆是指$\boldsymbol{x}_0\to \boldsymbol{x}_T \to \boldsymbol{x}_0$这个过程理论上是可以完成重构的,如果有误差,那就是数值计算精度导致的。但这个过程不涉及到“加噪去噪”,所以我不大清楚你表达的是不是逆运算的过程。
奥谢谢苏神讲解。既然存在不同的前向过程,使得边际分布一样,我是不是可以使用带噪声的前向过程(比如DDPM,作为一种特殊的、离散化的SDE形式)得到x_t,然后再使用ODE的逆向过程从x_t得到x_0呢?如果不考虑数值误差和神经网络对分数估计的误差,这个方式在理论上能不能精确重建x_0呢?
边际分布的相同不等价于样本的相同啊,这肯定不能重建。举个简单的例子,如果用DDPM的前向过程得到$x_T$,那么$x_T$基本上已经完全没有了$x_0$的信息了,怎么可能重建$x_0$出来。
April 7th, 2024
为什么 概率流模型的Forward 和 Reverse 对应的 ODE 相同呢?不应该是互为反函数的关系吗?
因为ODE是可逆的,只需要沿着时间逆行,就可以回到起点。
October 3rd, 2024
请教一下漏写(9)的公式推导那里,从约等于到等于的那行,\epsilon及其平方的项,是如何消掉和化简的
哦,就是均值和方差的定义
是的
October 30th, 2024
苏老师您好,我有四个问题想请教一下:
1.我不太理解$\mathbb{E}_{\boldsymbol{x}_t}\left[-\boldsymbol{f}_t\left(\boldsymbol{x}_t\right) \cdot \nabla_{\boldsymbol{x}} \delta\left(\boldsymbol{x}-\boldsymbol{x}_t\right)\right] = -\nabla_{\boldsymbol{x}}\cdot\left[p_t(\boldsymbol{x}_t)\boldsymbol{f}_t(\boldsymbol{x}_t)\right]$这一步是怎么推导过来的,能稍微详细讲一讲吗?
2.为什么要求$\sigma_t^2 \leqslant g_t^2$呢?
3.您的这个推导更多是理解性质的,您在之前的回答也说这是不严谨的,那请问严谨的证明也是通过这一套思路来的吗?(是不是只是定义严谨了,多了很多细节上的论证呢?但还是用对dirac函数做求导,展开这些操作)
4.您的这个推导理解是纯粹的原创还是会有参考呢?
1、这一步是从$(6),(7)$来的;
2、这个好像也没硬性要求,就是习惯上取$\sigma_t^2 \leqslant g_t^2$而已;
3、严格的推导类似于 https://kexue.fm/archives/9461 ,更严格的则需要从泛函的角度来定义来使用dirac函数,任何将dirac函数当成普通函数处理的操作都可以说是不严格的;
4、这些推导其实太基本了,以至于也没有什么原创之说,不记得从哪里看来的证明,看懂后用自己的思路表述出来而已,如果现在要我溯源一下也是比较头疼的事情。
明白了,谢谢您
November 11th, 2024
苏老师您好,关于公式(9)我有一些问题想请教一下:
我查阅了有关于的狄拉克函数的相关资料,发现$(-1)^{k}f^{(k)}(a)=\int f(x)\delta^{(k)}(x-a)dx$,其中$\delta^{(k)}、f^{(k)}$指$\delta、f$的k阶导,$-1^{(k)}$指-1的k次方,也就是说$E_{xt}[-f_{t}(x_{t})\Delta t\nabla_{x}\delta(x_{t}-x_{t})]=f_{t}(x_{t})\nabla_{x}P(x_{t})$,如果是这样的话,那么后面的结果应该就不正确了。
我重新推导了一下,您看这样是不是更合理一点呢:
\begin{aligned}p(x_{t+\Delta t})&=\int\delta(x_{t+\Delta t}-x)p(x)dx\\
&=E_x[\delta(x_{t+\Delta t}-x)]\\
&=E_x[\delta(x_{t}-x)+(x_{t+\Delta t}-x)\nabla_{x_{t}}\delta(x_{t}-x)+\frac{1}{2}(x_{t+\Delta t}-x)^{2}\nabla_{x_{t}}^{2}\delta(x_{t}-x)]\\
&=E_x[\delta(x_{t}-x)+f_{t}(x)\Delta t\nabla_{x_{t}}\delta(x_{t}-x)+\frac{1}{2}g_{t}^{2}\Delta t\nabla_{x_{t}}\delta(x_{t}-x)]\\
&=P(x_{t})+f_{t}(x)\Delta tE_x[\nabla_{x_{t}}\delta(x_{t}-x)+\frac{1}{2}g_{t}^{2}\Delta tE_x[\nabla_{x_t}\nabla_{x_t}\delta(x_{t}-x)]\\
&=P(x_{t})-f_{t}(x)\Delta t\nabla_{x_{t}}P(X_{t})+\frac{1}{2}g_{t}^{2}\Delta t\nabla_{x_{t}}^{2}P(X_{t})\end{aligned}
$(-1)^{k}f^{(k)}(a)=\int f(x)\delta^{(k)}(x-a)dx$跟我这里不冲突,事实上本文$(5),(6),(7)$也不需要查什么资料,直接就可以验证正确性,所以后面的结果应该还是正确的。
至于你这里后面的内容,比如$E_{xt}[-f_{t}(x_{t})\Delta t\nabla_{x}\delta(x_{t}-x_{t})]=f_{t}(x_{t})\nabla_{x}P(x_{t})$,这里的$\nabla_{x}\delta(x_{t}-x_{t})$和$\nabla_{x}P(x_{t})$没看懂...最好还是先把记号规范一下~