现代概率机器学习初步

现代概率机器学习初步

1 引言

当下,生成式人工智能 (AGI) 广受关注,在文本、图像、视频生成等领域均有不足表现。其中,在图像生成、视频生成等任务中,目前效果最佳的技术路线为扩散模型 (Diffusion Model,DM),例如 OpenAI 的 Sora 模型。尽管人工智能一向被大多数人视作不可解释的“黑箱”,但具体到扩散模型,却有着极其清晰、深刻的数学本质:可以说在数学视角下,其本质上就是一个统计模型。本文尝试基于概率统计理论,以严格的数学语言,对扩散模型原理进行详细的推导与总结。值得注意的是,当前扩散模型的理论研究,更多已从初等概率论视角演变到随机分析视角,通过运用 ODE、SDE 等工具,将模型本质抽象到更加高等的数学中。但由于本课程的核心内容不涉及随机分析,故本文仅从初等概率论与统计视角出发,以扩散模型的“开山之作”——Jonathan Ho 等于 2020 年发表的 去噪扩散概率模型 (Denoising Diffusion Probabilistic Models,DDPM)及其延伸话题为讨论对象。

值得注意的是,由于论文没有以数学的思路来提出、整理命题,并且较多结论没有给出证明(这是因为论文作者认为证明较为简单,不便占用过多篇幅),因此本文不会简单地重复该论文的思路与结构,而是尝试整理其前因后果,对其中出现的结论加以数学化的整理与表达。

本文将先介绍机器学习中,生成式模型的普遍性概念,再具体探讨扩散模型的数学内涵。

符号含义与其他说明

  1. 对随机向量 (X1,X2,...,Xn)T(X_1, X_2, ..., X_n)^T,为简洁起见,将之记作 XX
  2. 对随机向量 X=[x1,x2,...,xn]TX = [x_1, x_2, ..., x_n]^TdX:=dx1dx2...dxndX := dx_1 dx_2 ... dx_n
  3. p(X)p(X)q(X)q(X) 表示随机变量(向量)XX 的 PDF。
  4. pdata(X)p_{data}(X) 表示数据实际服从的分布;pmodel(X)p_{model}(X) 表示建模得到的分布。
  5. 如无特殊说明,本文的所有随机变量(向量)的分布均为连续分布,且其 PDF 均连续。

2 生成式模型的基本概念

机器学习的两种建模方式分别为判别式建模 (discriminative modeling) 和生成式建模 (generative modeling),扩散模型即属于后者。因此,我们先来探讨生成式模型的基本概念。

2.1 生成式模型

我们先以图像生成为例加以说明。计算机将图像表示成许多像素,如果将每个像素视作一个随机变量,那么整张图片便可以看做一个随机向量 XX。根据 数据流形的分布假设,有意义的图像(即现实生活中能够出现的图像)服从某种概率分布,即 XPdata(X)X \sim P_{data}(X)。我们的目的是,通过对现实数据的统计方法建立一个统计模型 Pmodel(X)P_{model}(X),来模拟 Pdata(X)P_{data}(X),这就引出了生成式模型的概念:

定义 1(生成式模型):给定特征空间 RdR^d 上的数据分布 Pdata(X)P_{data}(X),生成式模型是由参数空间 Θ\Theta 中参数 θ\theta 定义的一个参数模型,使得模型分布 Pmodel(X)P_{model}(X) 近似于 Pdata(X)P_{data}(X),并可以从 Pmodel(X)P_{model}(X) 中采样,从而生成新的数据。

生成式模型的一个重要作用,在于模型分布如能足够近似真实数据分布,则通过从模型分布中采样,可以生成近似服从真实分布的数据,从而实现全新数据的获得。例如,在完成图像生成模型的训练后,我们便可以源源不断地获取心目中高质量的图片。

2.2 生成式模型的两大任务

根据上述概念,我们可以看出生成式模型的两个任务:

  1. 尽量精确地拟合真实分布 Pdata(X)P_{data}(X),我们将此称作 训练
  2. 从模型分布中采样,以便生成新的数据,我们将此称作 推理。对训练而言,要估计 Pdata(X)P_{data}(X),我们有很多方法,此处以最大似然估计为例。给定数据样本 {X1,X2,...,Xn}\{X_1, X_2, ..., X_n\},训练所得参数为
    θ=arg maxθi=1nlogpmodel(Xi). \theta^* = \argmax_{\theta} \sum_{i=1}^{n} \log p_{model}(X_i).

2.3 隐变量生成模型

在明确基本概念后,我们来考虑如何具体参数化 Pmodel(X)P_{model}(X)。当前,包括扩散模型在内的主流生成模型,均为 隐变量生成模型。以下将对此加以解释:

隐变量

首先明确 隐变量的概念。隐变量(latent variable)是不能直接观测到的随机变量,它用于描述数据生成过程中的未知因素。举例而言,在统计“北京市市民是否支持五环以内限行”问题时,我们获得的数据只有“支持还是反对”的信息(这就是所谓“观测变量”),而这些调查对象的年龄、居住地等信息,对于我们来说不可知。然而,这些因素却深切影响了“是否支持”这一观测变量,我们称这些因素为“隐变量”。

然后定义“隐变量生成模型”:

定义 2(隐变量生成模型):对于某个生成模型,设随机向量 XX 为观测变量,ZZ 为隐变量,若 pz(z),pxz(xz)p_z(z), p_{x|z}(x|z) 是参数模型,则称这一模型为隐变量生成模型。

注 1:通常,隐变量边缘分布 pz(z)p_z(z) 是已知的或人为设定的先验分布,如标准正态分布。在这种情况下,模型中唯一未定参数是 pxz(xz)p_{x|z}(x|z) 中的参数。于是,参数估计(及模型训练)的任务就转化成:根据样本,使用 MLE 方法,确定 pxz(xz)p_{x|z}(x|z) 的参数。

我们来稍作解释。为何要引入隐变量?这可以大大提升模型的表达能力,便于参数化,有利于使用机器学习方法予以拟合。举一个具体例子:

例 1(变分自编码器的译码器模型,Decoder of VAE):设隐变量 ZN(Z;0,I)Z \sim N(Z;0,I),特征变量(如图像像素)为 XX,定义 pxz(xz)=N(x;μ(z),σ2(z)I)p_{x|z}(x|z) = N(x;\mu(z),\sigma^2(z)I),其中 μ(z),σ(z)\mu(z),\sigma(z) 均为 zz 的函数。则 XX 的模型分布为 Pmodel(x)=pz(z)pxz(xz)dzP_{model}(x) = \int p_z(z)p_{x|z}(x|z) dz。(注:高维正态分布的刻画涉及协方差矩阵,此处是其协方差阵为一个对角阵 σ2(z)I\sigma^2(z)I。下文若无特殊说明,所涉及的正态分布均为高维正态分布)

对于上例,我们用神经网络来拟合 μ(z),σ(z)\mu(z), \sigma(z) 两个函数。假设 μ(z)=f(z;θ1,θ2,...,θk)\mu(z) = f(z; \theta_1, \theta_2, ..., \theta_k),其中 θi\theta_i 为参数,则给定数据样本 {x1,x2,...,xn}\{x_1, x_2, ..., x_n\},神经网络的训练目标是:

θi=arg maxθi(i=1nlogpmodel(xi))(1) \theta_i^* = \argmax_{\theta_i} \left( \sum_{i=1}^n \log p_{model}(x_i) \right) (1) =arg maxθi(i=1nlogp(xi,z)dz)(2) = \argmax_{\theta_i} \left( \sum_{i=1}^n \log \int p(x_i, z) dz \right) (2) =arg maxθi(i=1nlogpz(z)pXZ(xiz)dz)(3) = \argmax_{\theta_i} \left( \sum_{i=1}^n \log \int p_z(z) p_{X|Z}(x_i|z) dz \right) (3) =arg maxθi(i=1nlogN(z;0,I)N(xi;μ(z),σ2(z)I)dz)(4) = \argmax_{\theta_i} \left( \sum_{i=1}^n \log \int N(z; 0, I) N(x_i; \mu(z), \sigma^2(z)I) dz \right) (4)

其中 N(z;0,I)N(z; 0, I) 表示将 zz 代入标准正态分布 N(0,I)N(0, I) PDF 后所得结果,N(xi;μ(z),σ2(z)I)N(x_i; \mu(z), \sigma^2(z)I) 表示将 xix_i 代入正态分布 N(x;μ(z),σ2(z)I)N(x; \mu(z), \sigma^2(z)I) 的 PDF 后所得结果。

显然,相较于直接假设 pmodel(X)p_{model}(X) 是正态分布 N(μ,σ2I)N(\mu, \sigma^2 I),隐变量模型的参数更多(直接假设,则参数只有 μ,Σ\mu, \Sigma 两个常数,而隐变量模型则可以将 μ(z),σ2(z)\mu(z), \sigma^2(z) 视作函数,用神经网络的许多参数来拟合它们。我们有理由认为,参数越多,模型的表达能力越强(也就是能够更加逼近真实的数据分布 Pdata(X)P_{data}(X))。

2.4 隐变量模型的变分推断

隐变量生成模型的训练具体应怎么操作?我们此处一直假定采用 MLE 方法。沿用上述例子,如何来具体求出

θi=arg maxθi(i=1nlogpz(z)pXZ(xiz)dz)(5) \theta_i^* = \argmax_{\theta_i} \left( \sum_{i=1}^n \log \int p_z(z) p_{X|Z}(x_i|z) dz \right) (5) =arg maxθi(i=1nlogpX(xi))(6) = \argmax_{\theta_i} \left( \sum_{i=1}^n \log p_X(x_i) \right) (6)

是一个关键问题。显然,想要直接求导数做最大似然,就需要求出上述积分的一个解析解,这无疑非常困难。换言之,隐变量参数模型的训练,不能直接采用对数似然来做 MLE。为此,我们引入 变分推断 的方法,以实现 MLE 的具体操作。

命题 1(对数似然的变分下界)

记对数似然 L(θ):=i=1nlogpX(xi)L(\theta) := \sum_{i=1}^n \log p_X(x_i)q(zx;ϕ)q(z|x; \phi) 为另一个分布,其中 ϕ\phi 是参数。则:

L(θ)i=1nEq[logp(z,xi;θ)logq(zxi;ϕ)]:=L(θ,ϕ),(7) L(\theta) \geq \sum_{i=1}^n E_q [\log p(z, x_i; \theta) - \log q(z|x_i; \phi)] := L(\theta, \phi), (7)

且若 qq 的函数形式与 ϕ\phi 的具体取值均无任何限制,则对任意确定的 ppθ\theta,都存在一个 qq 的函数形式与 ϕ\phi 的取值,使得 L(θ,ϕ)=L(θ)L(\theta, \phi) = L(\theta)

根据此命题,可知 maxθL(θ,ϕ)=maxθL(θ)\max_{\theta} L(\theta, \phi) = \max_{\theta} L(\theta),从而 arg maxθ(maxθL(θ,ϕ))=arg maxθ(L(θ))\argmax_{\theta} (\max_{\theta} L(\theta, \phi)) = \argmax_{\theta} (L(\theta)),因此对 L(θ,ϕ)L(\theta, \phi) 做 MLE 来估计 θ\theta^*,等价于对 L(θ)L(\theta) 做 MLE。

基于此,我们对 q(zx;ϕ)q(z|x;\phi) 做一些预设(例如,确定 qq 的函数形式,确定其参数个数),使得 L(θ,ϕ)L(\theta,\phi) 易于实际计算,那么我们便将难以实际操作的 L(θ)L(\theta) MLE 转换成方便计算的 L(θ,ϕ)L(\theta,\phi) MLE。

当然,由于为了便于计算,我们对 q(zx;ϕ)q(z|x;\phi) 做了一些预设,这些限制可能导致上述的取等无法实现。但事实上,即使不能取等,二者的差异也相对较小。因此,这种方法是进行 MLE 的可行方式。

实际上,这就是所谓 变分推断 的基本思想,扩散模型正是基于这一思路进行参数估计(也即所谓“训练”)的。下面,我们正式进入对扩散模型的讨论。

3 扩散模型:基于概率统计的数学本质

扩散模型是一个 多隐变量生成模型,在上文隐变量模型的基础上,引入了多个隐变量,从而实现了更优的表达能力。下面先介绍模型的参数化形式,随后在此基础上说明参数估计(即“模型训练”)的具体方法。

3.1 模型的参数化形式

定义 2 (去噪扩散概率模型)

设随机向量 X0,X1,...,XTRdX_0, X_1, ..., X_T \in R^d,其中 RdR^d 为特征空间,X0X_0 为观测变量(eg. 图像像素组成的随机向量),X1,...,XTX_1, ..., X_T 为隐变量。定义隐变量 Xi(i=1,2,...,T)X_i(i=1,2,...,T) 服从的真实分布为

qX0(x0)=pdata(x0),(8) q_{X_0}(x_0) = p_{data}(x_0), (8) qXiXi1(xixi1)=N(xi;1βixi1,βiI),(9) q_{X_i|X_{i-1}}(x_i|x_{i-1}) = N(x_i; \sqrt{1-\beta_i}x_{i-1}, \beta_i I), (9) qXiXi1,...,X0(xixi1,...,x0)=qXiXi1(xixi1),i=1,2,...,T,(10) q_{X_i|X_{i-1},...,X_0}(x_i|x_{i-1},...,x_0) = q_{X_i|X_{i-1}}(x_i|x_{i-1}), \quad i=1,2,...,T, (10)

模型分布为

pXT(xT)=N(xT;0,I),(11) p_{X_T}(x_T) = N(x_T; 0,I), (11) pXt1Xt(xt1xt)=N(xt1;μ(xt,t),σt2I),(12) p_{X_{t-1}|X_t}(x_{t-1}|x_t) = N(x_{t-1}; \mu(x_t,t),\sigma_t^2 I), (12) pXt1Xt,...,XT(xt1xt,...,xT)=pXt1Xt(xt1xt),t=1,2,...,T,(13) p_{X_{t-1}|X_t,...,X_T}(x_{t-1}|x_t,...,x_T) = p_{X_{t-1}|X_t}(x_{t-1}|x_t), \quad t=1,2,...,T, (13)

其中 σt\sigma_t 是预设常数(是不可学习的定值),μ(xt,t)\mu(x_t,t) 是关于 xtx_ttt 的函数,使用神经网络进行模拟。以这个神经网络中的参数作为估计参数,则这个参数模型称作 去噪扩散概率模型 (Denoising Diffusion Probabilistic Model, DDPM)。

下面对此概念进行一些直观的解释。X0X_0 是数据特征变量,例如一张 256*256,由三原色组成的图像,则其中所有像素构成了 X0R256×256×3X_0 \in R^{256\times256\times3}。隐变量 X1,...,XTX_1,...,X_T 是人为引入的变量,而既然是人为引入,那么就可以人为指定它们的分布形式,具体而言,qXiXi1(xixi1)=N(xi;1βixi1,βiI)q_{X_i|X_{i-1}}(x_i|x_{i-1}) = N(x_i; \sqrt{1-\beta_i}x_{i-1}, \beta_i I) 这一条件分布,指明了 XiX_i 的构造方法:根据正态分布性质,联系上式,我们有

Xt=1βtXt1+βtϵ,ϵN(0,I).(14) X_t = \sqrt{1-\beta_t}X_{t-1} + \sqrt{\beta_t}\epsilon, \quad \epsilon \sim N(0,I). (14)

换言之,XtX_t 其实就是对 Xt1X_{t-1} 与标准正态 ϵ\epsilon 的线性组合。由于标准正态分布是不含有效信息的高斯噪声,因此获得 XtX_t 的这一过程,就相当于向 Xt1X_{t-1} 添加一些“噪声”。因此,这个过程被称作 “加噪过程”(也称“前向过程”)。为提高模型表达能力,T 往往很大,如 T=1000T = 1000。至于 10 式所规定的马尔可夫性,则其实也能反应在式 14 中,即:隐变量的分布仅取决于它的直接前驱,与时间序列中的其他祖先无关。

类似地,我们定义的模型分布 pXt1Xt(xt1xt)=N(xt1;μ(xt,t),σt2I)p_{X_{t-1}|X_t}(x_{t-1}|x_t) = N(x_{t-1}; \mu(x_t, t), \sigma^2_t I) (t=1,2,...,Tt = 1, 2, ..., T) 可以理解成从一个标准正态分布出发不断迭代,用许多正态分布的“复合”来近似真实的数据分布。具体而言:

pmodel(x0)=pX0(x0)(15) p_{model}(x_0) = p_{X_0}(x_0) (15) =p(x0,x1,...,xT)dx1...dxT(16) = \int p(x_0, x_1, ..., x_T)dx_1...dx_T (16) =pXT(xT)t=1TpXt1Xt(xt1xt)dx1...dxT,(17) = \int p_{X_T}(x_T) \prod_{t=1}^T p_{X_{t-1}|X_t}(x_{t-1}|x_t)dx_1...dx_T, (17)

其中 16 式到 17 式的等号利用了 13 式规定的马尔可夫性。

换言之,只要我们能够确定 pXt1Xt(xt1xt)p_{X_{t-1}|X_t}(x_{t-1}|x_t),我们便理论上获得了模型分布 pmodel(x0)p_{model}(x_0)。当然,即使确定了这些参数,由于计算的复杂性,我们还是不可能直接积分求 pmodel(x0)p_{model}(x_0),具体如何根据这些隐变量条件分析来实现从 pmodel(x0)p_{model}(x_0) 中采样,我们将在后文略作讨论。

下面,我们从“生成模型的两个任务”(见 2.2),即训练与推理两方面展开。

3.2 扩散模型的训练(模型参数估计)

注:在实际应用神经网络进行训练时,为了便于减小误差、更易拟合,原论文并未直接拟合 μ(xt,t)\mu(x_t, t),而是采用了一个等价形式。然而由于其数学本质没有区别,更多是工程上的技巧,因此为了使表达简洁而不冗杂,本文仍直接用 μ(xt,t)\mu(x_t, t) 的拟合来推导原理。

3.2.1 对数似然及其变分下界

我们的目标是通过 最大似然估计 来做参数估计。但是,沿用 2.4 提出的观点,由于直接计算边际分布需要积分,但此积分在实际操作中几乎不可积,因此我们不能直接运用 17 式,求出 p(X0)p(X_0) 之后做 MLE,而该使用 变分推断 的方法。具体而言,设训练集为 {x01,x02,...,x0N}\{x_{01}, x_{02}, ..., x_{0N}\},隐变量 XtiX_{ti} (t=1,...,Tt = 1, ..., T) 是以 X0iX_{0i} 为基础,根据加噪过程构造的(注:针对训练集的每个 X0iX_{0i},我们构造许多 XtiX_{ti},以增强训练效果)。用上述 Xti,...,XTiX_{ti}, ..., X_{Ti} 代入式 7 中的隐变量 zz,可得:

i=1NlogpX0(x0i)i=1NEq(x1i,...,xTi)[logp(x1i,x2i,...,xTi,x0i;θ)logq(x1i,x2i,...,xTix0i)],(18) \sum_{i=1}^{N} \log p_{X_0}(x_{0i}) \geq \sum_{i=1}^{N} E_q(x_{1i}, ..., x_{Ti}) \left[ \log p(x_{1i}, x_{2i}, ..., x_{Ti}, x_{0i}; \theta) - \log q(x_{1i}, x_{2i}, ..., x_{Ti}|x_{0i}) \right], (18)

这里 RHS 是对 X1,...,XTX_1, ..., X_T 求期望。当 NN 极大时,由大数定律,该式近似为

Eq(X0)logpX0(x0)Eq(X0,X1,...,XT)[logp(x1,x2,...,xT,x0;θ)logq(x1,x2,...,xTx0)],(19) E_{q(X_0)} \log p_{X_0}(x_0) \geq E_{q(X_0,X_1,...,X_T)} \left[ \log p(x_1,x_2,...,x_T,x_0;\theta) - \log q(x_1,x_2,...,x_T|x_0) \right], (19)

这里 LHS 是对 X0X_0 求期望,RHS 是对 X0,X1,...,XTX_0,X_1,...,X_T 求期望。由于实际训练的 NN 非常大,因此下文默认采用此式。

于是,MLE 中的

θ=arg maxθEqX0(X0)logpX0(x0),(20) \theta^* = \argmax_{\theta} E_{q_{X_0}(X_0)} \log p_{X_0}(x_0), (20)

可以根据 2.4 而近似为

θ=arg maxθEq(X0,X1,...,XT)[logp(x1,x2,...,xT,x0;θ)logq(x1,x2,...,xTx0)],(21) \theta^* = \argmax_{\theta} E_{q(X_0,X_1,...,X_T)} \left[ \log p(x_1,x_2,...,x_T,x_0;\theta) - \log q(x_1,x_2,...,x_T|x_0) \right], (21)

根据机器学习的优化习惯,我们希望最小化目标函数,故此对上式取反:

θ=arg minθEq(X0,X1,...,XT)[logq(x1,x2,...,xTx0)logp(x1,x2,...,xT,x0;θ)].(22) \theta^* = \argmin_{\theta} E_{q(X_0,X_1,...,X_T)} \left[ \log q(x_1,x_2,...,x_T|x_0) - \log p(x_1,x_2,...,x_T,x_0;\theta) \right]. (22)

根据条件概率定义,联系 10.13 两式,我们可以把 22 式展开为

θ=arg minθEq(X0,X1,...,XT)[logpXT(XT)t1logpXt1Xt(xt1xt)qXtXt1(xtxt1)](23) \theta^* = \argmin_{\theta} E_{q(X_0,X_1,...,X_T)} \left[ - \log p_{X_T}(X_T) - \sum_{t \geq 1} \log \frac{p_{X_{t-1}|X_t}(x_{t-1}|x_t)}{q_{X_t|X_{t-1}}(x_t|x_{t-1})} \right] (23) :=arg minθL.(24) := \argmin_{\theta} L. (24)

下面来最小化 LL

3.2.2 参数估计的具体目标推导

命题 2

L=Eq[KL(q(xTx0)p(xT))+t>1KL(q(xt1xt,x0)p(xt1xt))logp(x0x1)],(25) L = E_q \left[ KL(q(x_T|x_0)||p(x_T)) + \sum_{t>1} KL(q(x_{t-1}|x_t,x_0)||p(x_{t-1}|x_t)) - \log p(x_0|x_1) \right], (25)

其中

KL(p(x)q(x)):=Ep(x)[logp(x)q(x)],(26) KL(p(x)||q(x)) := E_{p(x)} \left[ \log \frac{p(x)}{q(x)} \right], (26)

称为两个分布之间的 KL 散度。(为简洁起见,上述命题将形如 pXY(xy)p_{X|Y}(x|y) 的条件概率符号记作 p(xy)p(x|y) 省略了下标)

考察 25 式中的三个加项,将之分别记作

LT:=Eq[KL(q(xTx0)p(xT))],(27) L_T := E_q[KL(q(x_T|x_0)||p(x_T))], (27) Lt1:=Eq[KL(q(xt1xt,x0)p(xt1xt))],(28) L_{t-1} := E_q[KL(q(x_{t-1}|x_t,x_0)||p(x_{t-1}|x_t))], (28) L0:=Eq[logp(x0x1)],(29) L_0 := E_q[- \log p(x_0|x_1)], (29)

L=LT+t>1Lt1+L0,(30) L = L_T + \sum_{t>1} L_{t-1} + L_0, (30)

我们对这三项逐一加以探讨。

(i). 第一部分: 考察 LTL_T

考虑如下命题:

命题3:加噪过程中,

qXTX0(xTx0)=N(xT;αTx0,(1αT)I),(31) q_{X_T|X_0}(x_T|x_0) = N(x_T; \sqrt{\alpha_T} x_0, (1 - \alpha_T)I), (31)

其中 αT:=i=1T(1βi)\alpha_T := \prod_{i=1}^T (1 - \beta_i)

根据命题3,我们发现 qXTX0(xTx0)q_{X_T|X_0}(x_T|x_0) 是一个不含可学习参数的分布(如上文所述,βi\beta_i 预先固定),而 pXT(xT)p_{X_T}(x_T) 也是人为预设的 N(0,I)N(0,I),因此 LTL_T 没有可以推断的参数,是一个常数。

(ii). 第二部分: 考察 L0L_0

由于相较于 T=1000T = 1000 这样庞大的数字,这一项对整体优化影响很小,且在实践中发现优化此项带来的性能提升极少,因此我们暂不考虑 L0L_0 的优化(事实上 DDPM 的原始论文也未曾考察此项)。

(iii). 第三部分: 考察 Lt1L_{t-1}

因此,我们只需最小化 t>1Lt\sum_{t>1} L_t,我们这里尝试对每一个 t{2,3,4,...,T}t \in \{2,3,4,...,T\},都最小化 Lt1L_{t-1}。事实上,这样做会自然地引发一个问题,即:这些 Lt1L_{t-1} 是否能够同时取最小值?假若不能,那么分别取最小,就不能确保整体之和最小。所以,由于我们的参数是一个拟合 μ(x,t)\mu(x,t) 函数中的经验条件的参数,而神经网络只要足够深,拟合能力便相当之强,因此足以实拟合对每个 tt 都取 minLt1\min L_{t-1}μ(x,t)\mu(x,t)

先考虑如下两个命题:

命题4 (离散形式的布朗桥):加噪过程中,

q(xt1xt,x0)=N(xt1;μ^t(x0,xt),β^tI),(32) q(x_{t-1}|x_t,x_0) = N(x_{t-1}; \hat{\mu}_t(x_0,x_t), \hat{\beta}_tI), (32)

其中

μ^t(x0,xt):=αt1βt1αtx0+1βt(1αt1)1αtxt,(33) \hat{\mu}_t(x_0,x_t) := \frac{\sqrt{\alpha_{t-1}}\beta_t}{1-\alpha_t}x_0 + \frac{\sqrt{1-\beta_t}(1-\alpha_{t-1})}{1-\alpha_t}x_t, (33) β^t:=1αt11αtβt.(34) \hat{\beta}_t := \frac{1-\alpha_{t-1}}{1-\alpha_t}\beta_t. (34)

命题5 (正态分布之间的 KL 散度公式):设随机变量 XRdX \in R^d,概率密度函数

p1(x)=N(μ1,σ12I),p2(x)=N(μ2,σ22I), p_1(x) = N(\mu_1, \sigma_1^2 I), \quad p_2(x) = N(\mu_2, \sigma_2^2 I),

则这两个正态分布之间的 KL 散度为

KL(p1(x)p2(x))=12log(σ12σ22)d+σ12+μ1μ222σ22d2.(35) KL(p_1(x)||p_2(x)) = \frac{1}{2} \log \left( \frac{\sigma_1^2}{\sigma_2^2} \right)^d + \frac{\sigma_1^2 + ||\mu_1 - \mu_2||^2}{2\sigma_2^2} - \frac{d}{2}. (35)

这里仅给出了正态分布的协方差阵是对角阵的情况,不过对我们的话题已经足够。

根据命题 4、命题 5,我们可以将 Lt1L_{t-1} 化简:

Lt1=Eq[KL(q(xt1xt,x0)p(xt1xt))](36) L_{t-1} = E_q[KL(q(x_{t-1}|x_t,x_0)||p(x_{t-1}|x_t))] (36) =Eq[KL(N(xt1;μ^t(x0,xt),β^tI)N(xt1;μ(xt,t),σt2I))](37) = E_q \left[ KL \left( N(x_{t-1}; \hat{\mu}_t(x_0,x_t), \hat{\beta}_tI) || N(x_{t-1}; \mu(x_t,t), \sigma_t^2I) \right) \right] (37) =Eq[12log(β^tσt2)d+β^t+μ^t(x0,xt)μ(xt,t)22σt2d2](38) = E_q \left[ \frac{1}{2} \log \left( \frac{\hat{\beta}_t}{\sigma_t^2} \right)^d + \frac{\hat{\beta}_t + ||\hat{\mu}_t(x_0,x_t) - \mu(x_t,t)||^2}{2\sigma_t^2} - \frac{d}{2} \right] (38)

38 式中,β^t\hat{\beta}_t 仅取决于 x0,xtx_0, x_t,而这两个变量是训练数据,因此是常数;σt\sigma_t 是预设常数;dd 是特征空间维度,也是常数。因此,想要最小化 Lt1L_{t-1},可优化之处只有 μ^t(x0,xt)μ(xt,t)2||\hat{\mu}_t(x_0,x_t) - \mu(x_t,t)||^2。因此:

θt1=arg minLt1(39) \theta_{t-1}^* = \argmin L_{t-1} (39) =arg minEq[12log(β^tσt2)d+β^t+μ^t(x0,xt)μ(xt,t)22σt2d2](40) = \argmin E_q \left[ \frac{1}{2} \log \left( \frac{\hat{\beta}_t}{\sigma_t^2} \right)^d + \frac{\hat{\beta}_t + ||\hat{\mu}_t(x_0,x_t) - \mu(x_t,t)||^2}{2\sigma_t^2} - \frac{d}{2} \right] (40) =arg minEq[μ^t(x0,xt)μ(xt,t)2](41) = \argmin E_q \left[ ||\hat{\mu}_t(x_0,x_t) - \mu(x_t,t)||^2 \right] (41)

至此,我们终于得到了参数 θ\theta 的表达式(亦即参数估计方法):

θt1=arg minEq[μ^t(x0,xt)μ(xt,t)2](42) \theta_{t-1}^* = \argmin E_q \left[ ||\hat{\mu}_t(x_0,x_t) - \mu(x_t,t)||^2 \right] (42)

有了这个解析式,我们就可以采用梯度下降等方法不断优化我们的神经网络(即 μ(xt,t)\mu(x_t,t)),从而完成训练。

小结:回顾上述推导过程,我们从最大似然估计出发,由于对数似然包含复杂积分、不能直接计算,因此我们使用变分推断,通过引入对数似然的变分下界,将 MLE 的目标转换成 arg minL\argmin L。在此基础上,我们通过命题 2(式 25),将 LL 拆分成 LT,t>1Lt1,L0L_T, \sum_{t>1}L_{t-1}, L_0 三部分,证明了 LTL_T 是常数,于是 L0L_0 的影响极小,可以忽略的前提下,我们的 MLE 等价于最小化 t>1Lt1\sum_{t>1}L_{t-1}。由于神经网络极强的拟合能力,这一目标可以通过令所有 LtL_t 同时取最小实现。通过证明 LtL_t 所涉及的两个分布均为正态分布,我们就可以通过正态分布之间的 KL 散度公式来得到 minLt\min L_t 的等价的、可操作的形式。由此,我们最终找到了一个可操作的参数估计方法。

3.3 扩散模型的推理(从分布中采样)

既已确定参数,我们下面就可以利用这个模型来进行生成。正如上文(3.1)所述,在确定 PXt1Xt(xt1xt)P_{X_{t-1}|X_t}(x_{t-1}|x_t) 后,我们不能直接通过 17 式积分来获得 Pmodel(x0)P_{model}(x_0)。但是我们之所以要训练这样一个模型,正是为了能够从 Pmodel(x0)P_{model}(x_0) 中采样,以便获得新数据。为此,我们采用如下的采样方法:

算法 1 (DDPM Sampler)

  1. N(0,I)N(0,I) 采样 XTX_T
  2. 遍历 t=T,...,1t=T,...,1,进行如下操作:
    • (i). 从 N(0,I)N(0,I) 采样 ztz_t
    • (ii). 计算 Xt1=μ(Xt,t)+σtztX_{t-1} = \mu(X_t,t) + \sigma_t z_t
  3. 获得 X0Pmodel(X0)X_0 \sim P_{model}(X_0)

这其实就是利用正态分布的性质把 pXt1Xt(xt1xt)=N(xt1;μ(xt,t),σt2I)p_{X_{t-1}|X_t}(x_{t-1}|x_t) = N(x_{t-1}; \mu(x_t, t), \sigma^2_t I) 重写一遍,但好处是这成为了一个可以实际操作的算法。这个算法的执行过程,由于是从高斯噪声出发,逐渐获得一个清晰的图片,因此被称作“去噪过程”(或反向过程)。值得注意的是,实际应用中 TT 极大(eg.1000),那么就需要极多的迭代步数,这无疑导致了模型生成速度的下降。为解决这一问题,各种采样加速算法不断提出,如 DDIM, DPM-Solver 等等。篇幅所限,不加陈述。

4 未尽话题与结语

尽管本文对扩散模型的基本概念进行了一些讨论,尝试推导了一些公式,但本文把扩散模型的全貌仍相差不多,有太多的未尽话题值得思考:例如,上文的探讨有意回避了“条件生成”的概念,模型所生成的内容可能是任何一种物体,如何控制模型生成我们想要的内容?(例如,如何用文字控制模型的生成内容,eg. 输入“一条狗追逐一只猫”的文字,要求模型成功应对内容的图像)这种条件生成的概念,正是颇具热度的文生图、文生视频等模型必不可少的基础。又如,上文推导基础原理时,曾将加噪过程中的方差强行固定,那么是否存在数学上的最优解,能够解析地确定最优方差?再如,如上文所述,采样阶段的近一千步迭代将大大降低采样速率,这势必导致应用上的极大不便,如何实现既加速采样,又保证生成质量,这些改进的背后又有着怎样的数学本质?这些问题引出的杰出工作,都曾大放异彩。至于如何将模型背后的数学本质提高到更加高等的领域,如何将这些离散的加噪、去噪过程转换成连续过程,这一问题引出了 Score Matching SDE 及与之等价的 ODE,这些视角甫一提出,便成为理论研究领域不可或缺的出发点。时至今日,扩散模型的理论日趋完备,如何设计神经网络的具体结构,如何提高模型的生成质量,则成为工业界最为关心的话题。限于篇幅,本文仅探讨了扩散模型的“开山之作”,未曾涉及这些精彩纷呈的后续内容。然而管中窥豹,可见一斑,通过对其数学本质的探讨,我们可以看到,当代人工智能并非毫无理论的“黑盒”,其背后的统计机器学习原理之深刻精彩,成为动人心魄。

练习作业

https://github.com/sast-summer-training-2024/sast2024-diffusion