©PaperWeekly 原创 · 作者 | 苏剑林

单位 | 追一科技

研究方向 | NLP、神经网络

对于很多读者来说,生成扩散模型可能是他们遇到的第一个能够将如此多的数学工具用到深度学习上的模型。在这个系列文章中,我们已经展示了扩散模型与数学分析、概率统计、常微分方程、随机微分方程乃至偏微分方程等内容的深刻联系,可以说,即便是做数学物理方程的纯理论研究的同学,大概率也可以在扩散模型中找到自己的用武之地。

在这篇文章中,我们再介绍一个同样与数学物理有深刻联系的扩散模型——由“万有引力定律”启发的 ODE 式扩散模型,出自论文《Poisson Flow Generative Models》[1](简称 PFGM),它给出了一个构建 ODE 式扩散模型的全新视角。

万有引力

中学时期我们就学过万有引力定律,大概的描述方式是:

两个质点彼此之间相互吸引的作用力,是与它们的质量乘积成正比,并与它们之间的距离成平方反比。

这里我们忽略质量和常数,主要关心它的方向和与距离的关系,假设引力源位于 ,那么位于 的物体所受到的引力可以记为

这个因子我们可以先不管它,它不影响后面的分析。准确来说,上式描述的是三维空间的引力场,对于 维空间来说,其引力场的形式为

其中 是 维单位超球面的表面积。该式实际上就是 维 Poisson 方程的格林函数的梯度,这也就是论文标题中的 “Poisson” 一词的来源。

沿场线走

如果引力源有多个,那么直接将各个引力源的引力相加即可,这是引力场的线性可加性。下面我们画出了四个引力源的向量场,其中引力源用黑色点标记出,彩色线表示场线:

▲引力场示意图

从上述引力场图我们可以看出它的一个重要特点:

除了极少数外,大部分场线都是从远处出发,终止于某个引力源点。此时,一个直观而又“异想天开”的主意是:

如果每个引力源都代表着一个要生成的真实样本点,那么远处的任意点只要沿着场线运动,不就都可以演变成一个真实样本点了吗?

这就是《Poisson Flow Generative Models》[1] 一文最核心的天才想法!

等效质心

当然,天才归天才,要将它真正变成一个可用的模型,还有很多细节要补充。比如我们刚才说“远处的任意点”,这就是扩散模型的初始分布了,那么问题就来了:“远处”是多远?“任意点”该如何采样?如果采样方式过于复杂,那也没有价值了。

幸运的是,引力场有一个非常重要的等效性质:

无穷远处的多源引力场,等价于位于质心、质量叠加的质点引力场。

也就是说,当距离足够远时,我们只需要当它是位于质心的单源质点引力场。下图也画出了多源引力场及其对应的质心引力场,可以看到,当距离变大时(橙色圆圈位置),两者的引力场几乎一致了。

▲ 多源引力场

▲ 质心引力场

单个质点的引力场有什么特点?各向同性!这意味着在足够大半径时,可以认为场线是均匀地穿过以质点为球心的球面的,所以我们在一个半径足够大的球面上进行均匀采样就可以了,这就解决了初始分布的采样问题。至于“足够大”是多大,我们后面再说。

模式坍缩

所以生成模型就这样构建好了?还没有。引力场的各向同性使得对应的初始分布易于采样,然而也会造成引力源的相互抵消现象,从而出现“模式坍缩(Mode Collapse)”。

具体来说,我们先来画出均匀分布在球壳上的引力场,它的分布是这样的:

▲ 引力源各向同性的引力场

发现特点了没?在球壳外部是正常的各向同性分布,但是在球壳内部是“空”的!也就是说球壳内部的引力场相互抵消了,相当于一个真空地带,这个现象笔者在十多年前的科普博客《球壳内部的均匀力场》[2] 也介绍过。

抵消现象意味着任意选一个球面,球面上均匀分布的引力源由于引力相互抵消,那么就相当于不存在该引力源了。而我们说了,本文构建生成模型的方式,是通过远处的任意点沿着场线运动,直达某个引力源。如果引力源相互抵消,那么就意味着永远也达不到某些引力源,即意味着某些真实样本无法生成,生成结果就会缺失多样性,这就是“模式坍缩”现象。

增加一维

看上去模式坍缩无论如何都是不能避免的。因为在构建生成模型的时候,我们通常假设真实样本服从一个连续型的分布,这样一来,任选一个球面,哪怕真实样本在该球面的分布不是均匀的,我们也能从中挑出一个均匀分布的“子集”,该“子集”的引力就相互抵消了,相当于这些数据点不存在了,继而发生模式坍缩。

那么这条路真的走到尽头了吗?并没有!这时候 PFGM 的第二个“天才想法”来了:增加一维

刚才我们分析了,模式坍缩无法避免,是因为连续性分布的假设导致各向同性无法避免。要想避免模式坍缩,就要想办法杜绝分布的各向同性。可是真实样本的分布是目标分布,这是不能改变的,然而我们可以给它增加一维,如果我们在 维空间去讨论,那么原来的 维分布可以视为 维空间的一个平面,平面就不可能各向同性了。

举个低维空间的例子。我们知道对于二维空间来说,“圆”是各向同性的,但对于三维空间来说,“球”才是各向同性的,二维空间中各向同性的“圆”,在三维空间看来就不是各向同性了。

所以,假设要生成的真实样本原来是 的,我们引入一个新维度 ,使得数据点变为 ,而原来真实样本服从的分布是 的,现在改为 ,其中 是狄拉克分布,其实就是将真实样本放到 维空间的 平面上。这样处理后,在 维空间中,真实样本点的 取值总是 0,因此就不能出现各向同性现象了(类比刚才“三维空间中的圆”的例子)。

豁然开朗

乍一看,增加一维只是一个数学上的小技巧,但细细品味之下,我们会越发感觉它妙不可言,很多在原来 维空间中不好处理的细节问题,在 维空间中就豁然开朗了。

根据式(2)和引力的线性叠加性,我们可以写出此时 维空间的引力场为

其中 是 的前 个分量, 是它的第 个分量。下一节我们再来讨论 怎么学,现在假设 已经知道了,那么接下来就是要沿着场线运动,也就是运动轨迹要时刻跟 同方向,即

这就是生成过程所需要的微分方程(ODE)。在之前的 维方案中,除了有模式坍缩问题外,什么时候终止也是一个不好处理的细节问题。直观来想,就是沿着场线运动,直到撞上一个真实样本后就停止,但什么时候才是“撞上”,这个并不好判断。而在 维方案中,我们知道真实样本都是在 这个面上,所以可以很自然地以 为终止信号了。

至于初始分布,按照前面的讨论,应该是“半径足够大的、 维的球面均匀分布”,但既然我们是以 为终止信号,那么我们不妨固定一个足够大的 (大致是 这个量级),然后在 这个平面上做采样,这样一来生成过程就变成了微分方程(4)从 到 的运动过程了,生成过程的始和终都变得相当明朗。

当然,如果在固定的 平面上采样,那肯定就不是均匀的了。事实上有:

推导过程见下面的框。可以看到,概率密度只依赖于模长 ,所以从该分布采样的方案是先按照特定的分布采样模长,然后再按均匀分布采样方向,将两者进行组合。对于模长的采样,记 ,我们将它换元到超球坐标,就可以得到

然后利用逆累积概率函数法进行采样就行了(参考《变分自编码器:球面上的 VAE(vMF-VAE)》)。

初始分布的推导:场线是均匀穿过 d+1 维超球面上的,所以 处的密度是反比于 ,即 ,但现在不是在球面,而是在 的平面上,所以我们要将球面投影到平面上,示意图如下:

▲ 球面到 平面的投影

如上图,当 B、D 两点充分接近时,有 ,所以

也就是说,原本球面上单位长度的弧,投影到平面上后长度变为了 倍,由于只有一个维度变化,所以原来球面上的面积元,投影后也变为 倍,因此根据概率反比面积,我们可以得到

场的训练

现在,初始分布有了,微分方程也有了,所以就只差向量场函数 的训练了。从微分方程(4)可以看出,它只依赖于向量场的相对值,因此向量场的缩放不影响最终结果。根据式(3),向量场可以写为

根据我们在《生成扩散模型漫谈:一般框架之SDE篇》、《生成扩散模型漫谈:最优扩散方差估计(上)》等文章多次用到一个结论:

我们可以引入函数 来学习 ,训练目标为

然而,上述目标的 还需要采样,它的采样方式没有明确定义。这就是 PFGM 的主要特点之一,它直接定义了反向过程(生成过程),不需要定义前向过程,而这一步的采样实际上就相当于前向过程。为此,原论文考虑地每个真实样本进行扰动的方式来构建 的样本:

其中 ,, 是 维单位球面上均匀分布的单位向量,而 则都是常数。这个设计有颇多的主观性,大家自行欣赏和领会即可,这里不做过多展开。

最后,原论文的训练目标跟本文的式(10)略有不同,大致相当于

实际训练时由于只能采样有限个 对括号里边的期望进行估算,因此该目标实际上是一个有偏估计。当然有偏不一定就比无偏更差,具体为什么原论文使用有偏估计,这里暂时不得而知,猜测是因为有偏估计由于对向量进行了归一化操作,可能会使得训练进程更加稳定,但是也因为有偏的估计进行了归一化,所以需要较大的 batch_size 才能比较准,这对实验成本提了要求。

实验结果

可以说,PFGM 是一个彻底的新框架,它不再像之前一样依赖于高斯假设,并且得到了一个确实有着全新内涵的模型。然而,我们不能“为新而新”,如果新的框架没有做出更有说服力的结果,那么新就是没有意义的。

当然,原论文的实验结果,肯定了 PFGM 的价值,比如得到了更好的评估指标、更快的生成速度,以及对超参数(包括模型架构)有更好的鲁棒性等,这里就不一一展示了,大家自行读原论文就好。我看了看原论文中了 NeurIPS 2022,不得不说这确实是实至名归的顶会论文啊!

官方 Github:

https://github.com/Newbeeer/Poisson_flow

▲ PFGM的实验结果(部分)

文章小结

本文介绍了一个由“万有引力定律”启发的 ODE 式扩散模型,它突破了以往众多扩散模型对高斯假设的依赖,是一个基于场论来构建 ODE 式扩散模型的全新框架,整个模型颇多启发性,值得仔细研读。

参考文献

[1] https://arxiv.org/abs/2209.11178

[2] https://kexue.fm/archives/988

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

生成扩散模型漫谈:从万有引力到扩散模型相关推荐

  1. 生成扩散模型漫谈:最优扩散方差估计(上)

    ©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 对于生成扩散模型来说,一个很关键的问题是生成过程的方差应该怎么选择,因为不同的方差会明显影响生 ...

  2. 生成扩散模型漫谈:构建ODE的一般步骤(上)

    ©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 书接上文,在<生成扩散模型漫谈:从万有引力到扩散模型>中,我们介绍了一个由万有引力 ...

  3. ​生成扩散模型漫谈:构建ODE的一般步骤(下)

    ©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 上周笔者写了<生成扩散模型漫谈:构建ODE的一般步骤(上)>,本以为已经窥见了构建 ...

  4. 生成扩散模型漫谈:一般框架之ODE篇

    ©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 上一篇文章<生成扩散模型漫谈:一般框架之SDE篇>中,我们对宋飏博士的论文< ...

  5. 生成扩散模型漫谈:统一扩散模型(应用篇)

    ©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 在<生成扩散模型漫谈:统一扩散模型(理论篇)>中,笔者自称构建了一个统一的模型框架 ...

  6. 目标检测扩散模型DiffusionDet登场,扩散模型正在不同任务中“扩散”

    原文链接:https://www.techbeat.net/article-info?id=4342 作者:seven_ 本文介绍一项来自香港大学和腾讯AI Lab的工作,该工作提出了一个新的Diff ...

  7. 计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型(转载)

    PS:原文写的太好了,忍不住转载了 <计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型> 文章目录 一.七层?四层? 1.为什么需要协议? 2.OSI七层模型是干什么的? 3. ...

  8. Tutorial教程:生成triplet训练基于triplet loss的深度模型

    Tutorial教程:生成triplet训练基于triplet loss的深度模型 我相信很多想使用triplet loss的人被triplet的生成难倒了.当然,如果你的机器足够好,网络上的很多代码 ...

  9. 生成模型(Generative)和判别模型(Discriminative)

    目录 1 决策函数Y=f(X)或者条件概率分布P(Y|X) 2 生成方法和判别方法 2.1 生成方法 2.2 判别方法 3 特点及对比 3.1 生成模型 3.2 判别模型 3.3 总结 4 对于跟踪算 ...

最新文章

  1. 什么是清华大学的“三好”学生?
  2. usb打印机linux识别不了怎么办,win10不识别usb打印机怎么回事_win10系统不识别usb打印机如何修复-系统城...
  3. python opencv输出mp4_10分钟学会使用YOLO及Opencv实现目标检测
  4. 深度剖析Java数据结构之迭代器(Iterator)
  5. linux服务器证书安装教程,linux服务器使用certbot免费安装ssl证书
  6. 存储过程从入门到熟练(多个存储过程完整实例及调用方法)
  7. 艾蔻智能机器人怎么连接网络_智能建筑背后的关键技术:无处不在的网络连接...
  8. 德标螺纹规格对照表_德标、欧标、国际、国标对照表
  9. 滑动拼图验证码 免费 java,原生js+canvas实现滑动拼图验证码
  10. idea 报@Override is not allowed when implementing interface method的问题解决
  11. 12306崩了,90%的人都用过这三款抢票工具
  12. html 上下左右箭头按钮,css 上下左右箭头
  13. 顺序栈的创建以及各种操作
  14. 自顾不暇的大搜车能为吉利汽车做些什么?
  15. 软件浪涌测试原理与功能,EMC测试总体概述及浪涌测试原理与浪涌防护元器件使用...
  16. 合规备案,BINANCE、WBFEX、OKEX等交易所全球领跑
  17. oracle erp 地产公司,Oracle ERP房地产行业解决方案概述
  18. 我的TTT内训师培训经历
  19. 从微信朋友圈卖“冰丝内裤”看:效果类广告投放哪家强?
  20. 正在此计算机上搜索更新,解决:已在此计算机上检测到Microsoft Visual C++ 2010 Redistributable的更新版本...

热门文章

  1. 案例二:行走的小女孩
  2. 计算机论文大一范文1000字,【大一数学论文1000字6篇】_大一数学论文1000字范文大全_2021年大一数学论文1000字_东城教研...
  3. Nginx 反向代理+负载均衡
  4. qq个人中心g_tk算法
  5. 重装docker后本身的容器启动失败
  6. 小区宽带需求分析及解决方案(单项目)
  7. 21 岁理工男开源Github的这个编辑器火了!
  8. 亿万级数据查询优化方案
  9. 2019海口·第七届生态城市与屋顶绿化大会来袭
  10. 信息安全实验-古典密码算法