扩散模型的数学 : reverse-time diffusion

news/2025/4/2 12:27:31/文章来源:https://www.cnblogs.com/pigpigger/p/18803293

\[\newcommand{\D}[1]{\frac{\partial}{\partial #1}} \newcommand{\DD}[2]{\frac{\partial^2}{\partial #1\partial #2}}\newcommand{GG}{g_{k}^{i}(x,s)g_{k}^{j}(x,s)} \]

Diffusion Model中,在score matching 的流派中,我们是通过神经网络估计 \(\nabla_x \log p(x)\) 来从高斯分布中还原原来的图像分布,这就涉及到原扩散随机微分方程的逆向时间方程,即reverse-time SDE。下面从Ito公式开始推导reverse-time SDE的形式。其中重要的工具是kolmogorov于1930年提出的kolmogorov前向和后向方程

现有SDE

\[dx=f(x,t)dt+g(x,t)dW \]

\[dx^i = f^i(\mathbf{x}, t) \, dt + \sum_{j=1}^n g_j^i(\mathbf{x}, t) \, dW^j, \quad i = 1, 2, \ldots, n. \]

定义算子\(G\)

\[(G_th)(x)=\sum_{i}f^{i}(x,t)\D{x^i}h(x)+\frac{1}{2}\sum_{ijk}g_{k}^{i}(x,t)g_{k}^{j}(x,t)\DD{x^i}{x^j}h(x) \]

多维的Ito公式可写成

\[d\phi(\mathbf{X}_t, t) = \left( \frac{\partial \phi}{\partial t} + \sum_{i=1}^n f^i \frac{\partial \phi}{\partial x^i} + \frac{1}{2} \sum_{i,j,k} g_k^i g_k^j \frac{\partial^2 \phi}{\partial x^i \partial x^j} \right) dt + \sum_{i,j} g_j^{i} \frac{\partial \phi}{\partial x^i} dW^j. \]

\(\phi=h(x)\)\(t\) 无关 。写成积分形式取期望 \(dW\) 项消失。可得Dynkin公式

\[E^x(h(x_t))=h(x)+E^x(\int_s^t(G_uh)(x_u)du) \]

\(E^x\) 代表初值\(x_s=x\)

下面一律 \(s\leq t\) 如果记算子 \(P_{st}\)

\[(P_{st} h)(x)=E^x(h(x_t))=\int p_{st}(y,x)h(y)dy \]

​ 其中 \(p_{st}(y,x)\) 是一个卷积核满足 \(\int p(y,x) dy=1\) 代表时间从 \(s\)\(t\) 后由 \(x\) 转移到 \(y\) 的概率密度, 则有

\[(P_{st}h)(x)=h(x)+\int_s^tdu((P_{su}G_uh)(x_u)\tag{1}) \]

\(h(x)\) 移到左边,除以 \(t-s\) 求极限,再由 \(P_{ss}=id\) 得到

\[G_sh=\lim_{t\to s}\frac{P_{st}h-h}{t-s}\\ G_th=\lim_{s\to t}\frac{P_{st}h-h}{t-s}\\ G_t=\lim_{u\to 0}\frac{P_{t,t+u}-id}{u}\\ G_s=\lim_{u\to 0}\frac{P_{s-u,s}-id}{u} \]

所以 \(G\) 也叫无穷小生成元((infinitesimal generator)

将第三式两边左乘 \(P_{st}\) ,得到 Kolmogorov forward equation

\[\frac{d}{dt}P_{st}=P_{st}G_t \tag{2} \]

将第四式两边右乘 \(P_{st}\) ,得到 Kolmogorov backward equation

\[\frac{d}{ds}P_{st}=-G_sP_{st} \tag{3} \]

写成展开成卷积的形式

\[\begin{gather*} P_{st}G_th(x)=\int p_{st}(y,x)(\sum_{i}f^{i}(y,t)\D{y_i}h(y)+\frac{1}{2}\sum_{ijk}g_{k}^{i}(y,t)g_{k}^{j}(y,t)\DD{y_i}{y_j}h(y))dy\\ =-\sum_i\int_0^t\D{y_i}(p_{st}(y,x)f^{i}(y,t))h(y)dy+\frac{1}{2}\sum_{ijk}\int_0^t\DD{y_i}{y_j}(p_{st}(y,x)g_{k}^{i}(y,t)g_{k}^{j}(y,t))h(y)dy \end{gather*} \]

其中用到分部积分,之后去掉 \(h\)\((2)\) 将化为

\[\frac{\partial}{\partial t}p_{st}(y,x)=-\sum_i\frac{\partial}{\partial y^i}(p_{st}(y,x)f^{i}(y,t))+\frac{1}{2}\sum_{i,j,k}\frac{\partial^2}{\partial y^i\partial y^j}(p_{st}(y,x)g_{k}^{i}(y,t)g_{k}^{j}(y,t))\tag{4} \]

到此写成了PDE形式,类似可将 \((3)\) 化为

\[-\frac{\partial}{\partial s}p_{st}(y,x)=\sum_i(\frac{\partial}{\partial x^i}p_{st}(y,x))f^{i}(x,s)+\frac{1}{2}\sum_{i,j,k}(\frac{\partial^2}{\partial x^i\partial x^j}p_{st}(y,x))g_{k}^{i}(x,s)g_{k}^{j}(x,s)\tag{5} \]

这对应Anderson的 \((3.9)\) 但是好像他写错了,后面的 \((5.2)\) 才是对的

简记 \(p_t(x)=p_{0,t}(x,0)\) 根据 \((4)\)

\[\frac{\partial}{\partial s}p_{s}(x)=-\sum_i\frac{\partial}{\partial x^i}(p_s(x)f^{i}(x,s))+\frac{1}{2}\sum_{i,j,k}\frac{\partial^2}{\partial x^i\partial x^j}(p_s(x)g_{k}^{i}(x,s)g_{k}^{j}(x,s)) \]

综合 \((4)(5)\)

\[\frac{\partial}{\partial s}(p_{st}(y,x)p_{s}(x))\tag{6}=\\-\sum_i(\frac{\partial}{\partial x^i}p_{st}(y,x))f^{i}(x,s)p_{s}(x)-\frac{1}{2}\sum_{i,j,k}(\frac{\partial^2}{\partial x^i\partial x^j}p_{st}(y,x))g_{k}^{i}(x,s)g_{k}^{j}(x,s)p_{s}(x)\\-\sum_i\frac{\partial}{\partial x^i}(p_s(x)f^{i}(x,s))p_{st}(y,x)+\frac{1}{2}\sum_{i,j,k}\frac{\partial^2}{\partial x^i\partial x^j}(p_s(x)g_{k}^{i}(x,s)g_{k}^{j}(x,s))p_{st}(y,x) \]

其中第一第三项

\[-\sum_i(\frac{\partial}{\partial x^i}p_{st}(y,x))f^{i}(x,s)p_{s}(x)-\sum_i\frac{\partial}{\partial x^i}(p_s(x)f^{i}(x,s))p_{st}(y,x)\\=-\sum\D{x^i}(p_s(x)f^{i}(x,s)p_{st}(y,x)) \]

\(\frac{1}{2}\) 的两项为

\[-\frac{1}{2}\sum_{i,j,k}(\frac{\partial^2}{\partial x^i\partial x^j}p_{st}(y,x))g_{k}^{i}(x,s)g_{k}^{j}(x,s)p_{s}(x)+\frac{1}{2}\sum_{i,j,k}\frac{\partial^2}{\partial x_i\partial x^j}(p_s(x)g_{k}^{i}(x,s)g_{k}^{j}(x,s))p_{st}(y,x)\\ =-\frac{1}{2}\sum_{i,j,k}(\frac{\partial^2}{\partial x^i\partial x^j}p_{st}(y,x))g_{k}^{i}(x,s)g_{k}^{j}(x,s)p_{s}(x)-\frac{1}{2}\sum_{i,j,k}\frac{\partial^2}{\partial x_i\partial x^j}(p_s(x)g_{k}^{i}(x,s)g_{k}^{j}(x,s))p_{st}(y,x)\\ -\sum_{i,j,k}\D{x^i}P_{st}(y,x)\D{x^j}(P_s(x)\GG)\\ +\sum_{i,j,k}\D{x^i}P_{st}(y,x)\D{x^j}(P_s(x)\GG) +\sum_{i,j,k}\frac{\partial^2}{\partial x^i\partial x^j}(p_s(x)g_{k}^{i}(x,s)g_{k}^{j}(x,s))p_{st}(y,x) \]

前三项合并为

\[-\frac{1}{2}\sum_{i,j,k}\DD{x^i}{x^j}(p_s(x)p_{st}(y,x)\GG) \]

后两项为

\[\sum_i\D{x^i}(p_{st}(y,x)\sum_{j,k}\D{x^j}(p_s(x)\GG) \]

\(\bar{f}\)

\[\bar{f^i}(x,s)=f^i(x,s)-\frac{1}{p_s(x)}\sum_{j,k}\D{x^j}(p_s(x)\GG) \]

\((6)\) 化为

\[\frac{\partial}{\partial s}(p_{st}(y,x)p_{s}(x))=\\-\sum\D{x^i}(p_s(x)\bar{f^{i}}(x,s)p_{st}(y,x))-\frac{1}{2}\sum_{i,j,k}\DD{x_i}{x^j}(p_s(x)p_{st}(y,x)\GG) \]

使用 Bayesian 公式

\[q_{ts}(x,y)=\frac{p_s(x)p_{st}(y,x)}{p_t(y)} \]

其中 \(q\) 代表 \([s,t]\) 时间中 \(y\) 是从 \(x\) 走过来的概率密度 ,或者说逆转时间后 \(t\to s\)\(y\) 走到 \(x\) 的概率

将所有 \(p_s(x)p_{st}(y,x)\) 换成 \(q_{ts}(x,y)p_t(y)\) 再把两边除以 \(p_t(y)\)

\[\frac{\partial}{\partial s}(q_{ts}(x,y))=\\-\sum\D{x^i}\bar{f^{i}}(x,s)q_{ts}(x,y)-\frac{1}{2}\sum_{i,j,k}\DD{x^i}{x^j}(q_{ts}(x,y)\GG) \]

令一个逆向时间 \(\bar{s}=-s\) \(\bar{t}=-t\)

\[-\frac{\partial}{\partial \bar{s}}(q_{\bar{ts}}(x,y))=\\\sum\D{x^i}(-\bar{f^{i}}(x,s))q_{\bar{ts}(x,y)}-\frac{1}{2}\sum_{i,j,k}\DD{x^i}{x^j}(q_{\bar{ts}}(x,y)\GG) \tag{7} \]

这和 \((4)\) 完全形式对应,于是可以重构一个逆向 SDE

\[dx=(-\bar{f}(x,\bar{t}))d\bar{t}+g(x,\bar{t})dW \]

但是如果我们把初值设为 \(t\) 处的值并让时间正向流动(之前是时间和运动均是逆向,现在对应到时间正向但模拟原来过程逆向的运动)由于 \(dt=-d\bar{t}\)

\[dx=\bar{f}(x,t)dt+g(x,t)dW \]

这就是reverse-time diffusion方程。

注:在Kolmogorov的原始表述中前后向方程的 \(x\) 一二阶导项的系数分别与随机过程的无穷小时间移动的期望和方差有关,正好在Ito SDE中对应了 \(f\)\(g^2\)

参考文献:

  1. Anderson, “Reverse-time diffusion equation models,” Stochastic
    Process. Appl., vol. 12, no. 3, May pp. 313–326, 1982, url: https://
    www.sciencedirect.com/science/article/pii/0304414982900515.

  2. Evans SDE p107 (6)

  3. GTM261 Probability and Stochastics p462 Infinitesimal generator 但是他假设 \(x\) 平稳,本文要将\(P_t\) 改为 \(P_{st}\) p39 Markov Kernel, 本文直接假设卷积核能写成概率密度,并属于\(C^2\)

  4. Kolmogorov Über die analytischen Methoden in der Wahrscheinlichkeitsrechnung, Math. Ann.
    104 (1931)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908892.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@Resource 和 @Autowired 的区别

@Autowired 和 @Resource 都用于在 Spring 中进行依赖注入,但在来源、注入方式、支持的参数和用法上存在一些差异。​1、来源不同@Autowired:​Spring 自身提供的注解,位于 org.springframework.beans.factory.annotation 包中。​ @Resource:​Java标准中的注解,位于 jav…

harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)

大家好!我是黑臂麒麟,一位6年的前端;if youre change the world, youre workingon important things. youre excited to get up in the norning.一、常用基础组件 1.基础组件 简单列举常用的及含义,掌握了以下按钮可以解决日常简单场景需求。其他在使用时查询ArkTS的API文…

ai出错、不严谨的体验

一、例子1 用一个包含80多名学生成绩的PDF文件,让ai对学生成绩进行加减乘除的计算(保留两位小数),计算结果降序排列。结果部分学生的结果计算错误(最大差距有3分左右),部分学生的结果是正确的 我不知道是不是因为涉及到除法导致部分结果出错,我用了元宝deeepseek和豆包…

第5章 编写异步代码

第5章 编写异步代码 5.1 异步函数简介 C# 5 引入了异步函数的概念。异步函数可以指某个由 async 修饰符修饰的方法或者匿名函数,它可以对 await 表达式使用 await 运算符。 5.2 对异步模式的思考 5.2.1 关于异步执行本质的思考 await 在 C#中的任务本质上是请求编译器为我们创…

Spring Cloud Gateway 与 Knife4j 集成实践

注意:写于 2025/1/10,未来时间可能失效,请根据具体情况实践。在微服务架构中,Gateway 通常承担着路由转发、负载均衡、鉴权等职责,而 Knife4j 是一个集 Swagger2 和 OpenAPI3 为一体的增强解决方案,可以帮助开发者快速聚合使用OpenAPI 规范。 本文参考 Knife4j 文档,进行…

用户说:10分钟用通义灵码搞定“今天穿什么”!打开爽文世界……

当我仅用10分钟调教出一个会关心我穿不穿秋裤的管家时,突然想到,现在限制我们开发的已经不是编程能力,而在于你有没有把你的想象力塞进代码框!作者:ZLJ,浙江大学教育技术学研究生 当我仅用10分钟调教出一个会关心我穿不穿秋裤的管家时,突然想到,现在限制我们开发的已经…

Cyber Apocalypse 2025 forensics WP

Cyber Apocalypse 2025 forensics WPCyber Apocalypse 2025 WP 做了国际赛之后虽然(目前只做了两道,可是没环境了啊,前几天比赛有点多~www),只从取证这边说,感觉他们的题很有趣,情境也给的很真实连贯,出题灵活,就是能见到很多新兴的知识,拓展知识面,以后会多看一看…

python第六周作业(第四章课后程序练习题)

4.1 import random def guess_number(): target = random.randint(1, 100) count = 0 while True:guess = int(input("请输入你猜的数字(1-100): "))count += 1if guess < target:print("猜小了")elif guess > target:print("猜大了")else…

win安装oracle19c没有listener

然后就可以看到启动了本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/18803159

《HarmonyOS Next开发进阶:打造功能完备的Todo应用华章》

章节 6:日期选择器与日期处理目标学习如何使用DatePicker组件。 理解日期格式化和日期计算。内容日期选择器基础使用DatePicker组件。 处理日期选择事件。日期格式化格式化日期为友好的文本。日期计算判断日期是否过期或即将到期。代码示例 @Entry @Component struct DatePick…

MarkDwon语法

MarkDown语法 1、标题用法 一级标题:#+空格+内容+回车 二级标题:##+空格+内容+回车 三级标题:###+空格+内容+回车 四级标题:####+空格+内容+回车 2、字体用法 粗体使用:快捷键ctrl+b或者内容两边加两个星号,示例 斜体使用:内容两边加一个星号,示例 斜体加粗:内容两边加…

图论(连通分量)

AT_abc284_c [ABC284C] Count Connected Components 题目描述 頂点に $ 1 $ から $ N $ の番号が、辺に $ 1 $ から $ M $ の番号がついた $ N $ 頂点 $ M $ 辺の単純無向グラフが与えられます。辺 $ i $ は頂点 $ u_i $ と頂点 $ v_i $ を結んでいます。 グラフに含まれる連結…