©PaperWeekly 原创 · 作者 | 苏剑林
单位 | 追一科技
研究方向 | NLP、神经网络
上周笔者写了《生成扩散模型漫谈:构建ODE的一般步骤(上)》,本以为已经窥见了构建 ODE 扩散模型的一般规律,结果不久后评论区大神 @gaohuazuo 就给出了一个构建格林函数更高效、更直观的方案,让笔者自愧不如。再联想起之前大神之前在《生成扩散模型漫谈:“硬刚”扩散ODE》同样也给出了一个关于扩散 ODE 的精彩描述(间接启发了上一篇文章的结果),大神的洞察力不得不让人叹服。
经过讨论和思考,笔者发现大神的思路本质上就是一阶偏微分方程的特征线法,通过构造特定的向量场保证初值条件,然后通过求解微分方程保证终值条件,同时保证了初值和终值条件,真的非常巧妙!最后,笔者将自己的收获总结成此文,作为上一篇的后续。
前情回顾
简单回顾一下上一篇文章的结果。假设随机变量 连续地变换成 ,其变化规律服从 ODE
那么对应的 时刻的分布 服从“连续性方程”:
记 ,那么连续性方程可以简写成
为了求解这个方程,可以用格林函数的思想,即先求解
那么
就是满足约束条件的解之一。
几何直观
所谓格林函数,其实思想很简单,它就是说我们先不要着急解决复杂数据生成,我们先假设要生成的数据只有一个点 ,先解决这单个数据点的生成问题。有的读者想这不是很简单吗?直接 就完事了?当然不是这么简单,我们需要的是连续的、渐变的生成,如下图所示,就是 上的任意一点 ,都沿着一条光滑轨迹运行到 的 上:
▲ 格林函数示意图。图中,在处的每个点,都沿着特定的轨迹运行到处的一个点,除了公共点外,轨迹之间无重叠,这些轨迹就是格林函数的场线
而我们的目的,只是构造一个生成模型出来,所以我们原则上并不在乎轨迹的形状如何,只要它们都穿过 ,那么,我们可以人为地选择我们喜欢的、经过 的一个轨迹簇,记为
再次强调,这代表着以 为起点、以 为终点的一个轨迹簇,轨迹自变量、因变量分别为 ,起点 是固定不变的,终点 是可以任意变化