深度生成模型

Deep Denerative Model(DGM)
生成模型 - 花书
深度生成模型 - 机器之心
Stanford CS236
Cornell CS6785

概率生成模型概述

生成模型简介

生成与判别

贝叶斯法则将生成模型与判别模型联系起来。
由生成模型可得到判别模型
由判别模型得不到生成模型?

生成模型分类
玻尔兹曼机及其变种作为早期的生成模型,曾经
深度信念网络则是另一种,两者分别为无向图模型和有向图模型。
生成模型的核心目标是对数据的分布p(x)p(x)进行建模,由此衍生出了很多方法
直接建模

  • 非深度学习方法:
    • 贝叶斯网络(有向图):朴素贝叶斯、隐马尔科夫链、高斯混合模型(EM算法)
    • 马尔科夫随机场(无向图):(受限)玻尔兹曼机、最大熵
  • 显式密度估计:J=Expdatalogpmodel(x)\boxed{\mathcal{J} = -\mathbb{E}_{\bm{x}\sim p_\text{data}} \log p_\text{model}(\bm{x})}
    显式密度估计依赖似然函数或其下界的显式表达式,目标损失通常为交叉熵/负对数似然(NLL)或负的证据下界ELBO。
    • 优化似然函数:标准化流NF、自回归模型AR、基于能量的模型EBMs
    • 优化证据下界:变分自编码VAE、扩散概率模型DPM、基于得分的模型SBMs
  • 隐式密度估计:
    对抗生成网络作为特殊的一类生成模型,无需借助似然函数的显式表达式即可实现对目标分布的建模。
    • 对抗生成网络GAN

注意,这些类别并不全面,也并非互斥,同一模型同时属于GAN和VAE。事实上,深度生成模型作为一个快速发展的领域,尚不存在统一的理论或视角。

核心目标对比

  • 标准化流NF:pmodel(x)=q(g1(x;θ))detJgθ(z)1p_\text{model}(\bm{x}) = q\left(g^{-1}(\bm{x}; \bm{\theta})\right)\left|\det J_{g_\theta}(\bm{z})\right|^{-1}
    基本思路是由简单分布通过变量代换得到目标分布。

J=Expdata[logq(g1(x;θ))logdetJgθ(z)]\mathcal{J} = -\mathbb{E}_{\bm{x}\sim p_\text{data}} \left[ \log q\left(g^{-1}(\bm{x}; \bm{\theta})\right) - \log\left|\det J_{g_\theta}(\bm{z})\right| \right]

pmodel(x)=q(f(x;θ))detJfθ(z)p_\text{model}(\bm{x}) = q\left(f(\bm{x}; \bm{\theta})\right)\left|\det J_{f_\theta}(\bm{z})\right|

J=Expdata[logq(f(x;θ))+logdetJfθ(z)]\mathcal{J} = -\mathbb{E}_{\bm{x}\sim p_\text{data}} \left[ \log q\left(f(\bm{x}; \bm{\theta})\right) + \log\left|\det J_{f_\theta}(\bm{z})\right| \right]

  • 自回归模型AR:pmodel(x)=i=1np(xix<i;θ)p_\text{model}(\bm{x}) = \prod_{i=1}^n p(x_i|x_{<i};\theta)
  • 变分自编码VAE:pmodel(x)=q(z)p(xz;θ)dzp_\text{model}(x) = \int q(z) p(x|z; \theta) dz
    基本思路是隐变量

p(x;θ)=q(z)p(x,z;θ)q(z)dz=Exq(z)p(x,z;θ)q(z)p(x; \theta) = \int q(z) \frac{p(x, z; \theta)}{q(z)} dz = \mathbb{E}_{\bm{x}\sim q(z)} \frac{p(x, z; \theta)}{q(z)}

p(x;θ,ϕ)=q(zx;ϕ)p(x,z;θ)q(zx;ϕ)dz=Exq(zx;ϕ)p(x,z;θ)q(zx;ϕ)p(x; \theta,\phi) = \int q(z|x;\phi) \frac{p(x, z; \theta)}{q(z|x;\phi)} dz = \mathbb{E}_{\bm{x}\sim q(z|x;\phi)} \frac{p(x, z; \theta)}{q(z|x;\phi)}

logp(x;θ,ϕ)=logExq(zx;ϕ)p(x,z;θ)q(zx;ϕ)Exq(zx;ϕ)logp(x,z;θ)q(zx;ϕ)\log p(x; \theta,\phi) =\log \mathbb{E}_{\bm{x}\sim q(z|x;\phi)} \frac{p(x, z; \theta)}{q(z|x;\phi)} \ge \mathbb{E}_{\bm{x}\sim q(z|x;\phi)} \log \frac{p(x, z; \theta)}{q(z|x;\phi)}

J(θ,ϕ)=Expdata[DKL(q(zx;ϕ)q(z))Ezq(zx;ϕ)logp(xz;θ)]\boxed{\mathcal{J}(\bm{\theta}, \bm{\phi}) = \mathbb{E}_{\bm{x}\sim p_\text{data}} \left[ D_\text{KL}\big( q(\bm{z}|\bm{x}; \bm{\phi}) \| q(\bm{z}) \big) - \mathbb{E}_{z\sim q(\bm{z}|\bm{x}; \bm{\phi})} \log p(\bm{x}|\bm{z}; \bm{\theta})\right] }

  • 基于能量的模型EBMs pmodel(x)=1Z(θ)eE(x;θ)p_\text{model}(x) = \frac{1}{Z(\theta)} e^{-E(x; \theta)}
    基本思路是对于任意函数E(x;θ)E(x; \theta),经过指数变换和归一化可对应于概率分布。因此用神经网络表示E(x;θ)E(x; \theta)即可对目标分布进行建模。

    J(θ)=Expdata(x)logpmodel(x)=Expdata(x)E(x;θ)+logZ(θ)\mathcal{J}(\theta) = -\mathbb{E}_{x \sim p_\text{data}(x)} \log p_\text{model}(x) = \mathbb{E}_{x \sim p_\text{data}(x)} E(x;\theta) + \log Z(\theta)

    其中Z(θ)Z(\theta)通常难以计算,但求梯度时有:

    θJ(θ)=Expdata(x)θE(x;θ)Exp(x;θ)θE(x;θ)\boxed{\nabla_{\theta} \mathcal{J}(\theta) = \mathbb{E}_{x \sim p_\text{data}(x)} \nabla_{\theta} E(x;\theta) - \mathbb{E}_{x \sim p(x; \theta)} \nabla_{\theta} E(x;\theta)}

    后一项需要对p(x;θ)p(x; \theta)采样,通常MCMC采样实现。
  • 基于得分的模型SBMs:pmodel(x)xlogpmodel(x)p_\text{model}(x) \rightarrow \nabla_x \log p_\text{model}(x) P525

    J(θ)=Expdata(x)[xlogp(x;θ)2+12tr(x2logp(x;θ))]\boxed{\mathcal{J}(\theta) = -\mathbb{E}_{x \sim p_\text{data}(x)} \left[ \| \nabla_{x} \log p(x; \theta) \|^2 +\frac{1}{2} {\rm tr}\big(\nabla_{x}^2 \log p(x;\theta)\big) \right]}

L=Ex0q(x0),ϵN(0,I)ϵϵ~(xt(x0,ϵ),t;θ)2\boxed{L = \mathbb{E}_{x_0 \sim q(x_0), \epsilon\sim\tiny \mathcal{N}(0,I)} \left\|\epsilon - \tilde{\epsilon}\big(x_t(x_0, \epsilon), t; \bm{\theta}\big)\right\|^2 }

  • 生成对抗网络GAN

    arg minθarg maxϕJ(G(z;θ),D(x;ϕ))\argmin_\bm{\theta} \argmax_\bm{\phi} \mathcal{J}\Big(G(z; \bm{\theta}), D(x; \bm{\phi})\Big)

    GAN由生成器和判别器组成,基本思路是生成器产生模拟样本x(G)=G(z;θ)x^{(G)} = G(z; \bm{\theta}),判别器根据样本真实程度打分。生成器目标是欺骗判别器,判别器目标则是有效识别模拟样本。优化时先对判别器梯度上升(增大损失),再对生成器梯度下降。以下目标函数分别对应GAN和WGAN,区别在于后者不取对数,且要求DD满足Lipschitz约束。

    J(θ,ϕ)=ExpdatalogD(x;ϕ)Ex(G)pg(xz;θ)logD(x(G);ϕ)J(θ,ϕ)=ExpdataD(x;ϕ)Ex(G)pg(xz;θ)D(x(G);ϕ),DL1\begin{aligned} \mathcal{J}(\bm{\theta}, \bm{\phi}) =& \mathbb{E}_{\bm{x}\sim p_\text{data}} \log D(\bm{x};\bm{\phi}) - \mathbb{E}_{\bm{x}^{(G)}\sim p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})} \log D\big( \bm{x}^{(G)}; \bm{\phi} \big)\\ \mathcal{J}(\bm{\theta}, \bm{\phi}) =& \mathbb{E}_{\bm{x}\sim p_\text{data}} D(\bm{x};\bm{\phi}) - \mathbb{E}_{\bm{x}^{(G)} \sim p_\text{g}(\bm{x}|\bm{z};\bm{\theta})} D(\bm{x}^{(G)};\bm{\phi}), \small \|D\|_L\le 1 \end{aligned}

主要参考花书P592 #20.10.2章节内容

目前生成模型的主流是可微生成网络,核心思路是通过可微函数g(z;θ)g(\bm{z}; \bm{\theta})将分布相对简单的隐变量z\bm{z}的样本变换为分布未知的目标样本x\bm{x}。其中可微函数通常由神经网络表示,而隐变量分布通常设为(标准)正态分布。包括变分自编码器、生成对抗网络、流模型以及扩散模型都属于这一思路。

这里简单分析变换对概率分布的影响,设x=g(z)x = g(z)gg为可逆的连续可微函数,x,zx, z的概率密度分别为p(x),q(z)p(x), q(z)。考虑到概率密度积分始终为1,这要求p(x)dx=q(z)dzp(x)|dx| = q(z)|dz|,其中绝对值是考虑到概率密度为正,而dx,dzdx, dz可能符号相反。由此q(z)=p(x)dxdzq(z) = p(x)|\frac{dx}{dz}|。扩展到一般的多维变量,式中的微分变为雅克比矩阵的行列式:

q(z)=p(x(z))det(xz)=p(g(z))det(g(z)z)q(\bm{z}) = p(\bm{x}(\bm{z})) \left|\det\left(\frac{\partial\bm{x}}{\partial\bm{z}}\right)\right| = p\left(g(\bm{z})\right) \left|\det\left(\frac{\partial g(\bm{z})}{\partial\bm{z}}\right)\right|

反过来有:

p(x)=q(g1(x))det(g(z)z)1p(\bm{x}) = q\left(g^{-1}(\bm{x})\right) \left|\det\left(\frac{\partial g(\bm{z})}{\partial\bm{z}}\right)\right|^{-1}

事实上,直接获得p(x)p(\bm{x})在计算通常是很困难的,另一种策略是通过对条件分布p(xz)p(\bm{x}|\bm{z})的建模,间接获得目标样本x\bm{x}

p(x)=p(xz)q(z)dz=Ezq(z)p(xz)p(\bm{x}) = \int p(\bm{x}|\bm{z})q(\bm{z})d\bm{z} = \mathbb{E}_{\bm{z}\sim q(\bm{z})} p(\bm{x}|\bm{z})

为得到上述可对隐变量z\bm{z}进行大量采样,近似计算期望。先验分布q(z)q(\bm{z})可取为标准正态分布N(0,I)\mathcal{N}(0, I),但这样简单的假设,在计算上是不现实的,大部分隐变量可能不对应任何有意义的输出,p(xz)0p(\bm{x}|\bm{z}) \sim 0
另一方面根据概率乘法公式q(zx)p(x)=p(xz)q(z)q(z|x)p(x) = p(x|z)q(z)

p(x)=p(xz)q(z)q(zx)p(x) = \frac{p(x|z)q(z)}{q(z|x)}

其中q(zx),p(xz)q(z|x), p(x|z)分别对应编码器和解码器。

前一策略的代表为基于流的模型及扩散模型,后一策略的代表有变分自编码和对抗生成网络。

重参数化技巧

主要参考花书P586 #20.9章节内容

随机采样的反向传递
Auto-Encoding Variational Bayes
Stochastic Backpropagation and Approximate Inference in Deep Generative Models

变分自编码器VAE

https://en.wikipedia.org/wiki/Variational_autoencoder
2013 Auto-Encoding Variational Bayes
Tutorial on Variational Autoencoders 2016

VAE公式推导一般是从DKL(q(zx;ϕ)q(zx;θ))D_{\rm KL}\big( q(\bm{z}|\bm{x};\bm{\phi}) \big\| q(\bm{z}|\bm{x};\bm{\theta})\big)开始,这里尝试从不同的角度来建立直观理解,不做严格推导。首先,只关注生成网络(解码器)部分,对隐变量z\bm{z}采样,由生成网络g(z;θ)g(\bm{z};\bm{\theta})变换得到条件分布p(xz;θ)p(\bm{x}|\bm{z};\bm{\theta}),再采样得到x\bm{x}。对于这个变换过程,根据概率乘法公式q(zx)p(x)=p(xz)q(z)q(z|x)p(x) = p(x|z)q(z)

p(x)=p(xz;θ)q(z)q(zx;θ)p(\bm{x}) = \frac{p(\bm{x}|\bm{z}; \bm{\theta})q(\bm{z})}{q(\bm{z}|\bm{x}; \bm{\theta})}

这其中q(z)q(\bm{z})是隐变量z\bm{z}的先验分布,可假设为标准正态N(0,I)\mathcal{N}(0, I)p(xz;θ)p(\bm{x}|\bm{z}; \bm{\theta})是给定z\bm{z}条件下观测数据x\bm{x}的似然概率,可由生成器网络给出。但这里的q(zx;θ)q(\bm{z}|\bm{x}; \bm{\theta})需要获得生成网络G(z;θ)G(\bm{z};\bm{\theta})的逆变换,由数据x\bm{x}得到隐变量z\bm{z}的条件分布,这是很困难的。于是VAE引入了一个编码网络E(x;ϕ)E(\bm{x}; \bm{\phi})q(zx;θ)q(\bm{z}|\bm{x}; \bm{\theta})进行估计,从而:

p(x)=p(xz;θ)q(z)q(zx;ϕ)q(zx;ϕ)q(zx;θ)p(\bm{x}) = \frac{p(\bm{x}|\bm{z}; \bm{\theta})q(\bm{z})}{q(\bm{z}|\bm{x}; \bm{\phi})} \frac{q(\bm{z}|\bm{x}; \bm{\phi})}{q(\bm{z}|\bm{x}; \bm{\theta})}

由于q(zx;θ)q(\bm{z}|\bm{x}; \bm{\theta})未知,这里仍然是无法计算的,但通过对隐变量zq(zx;ϕ)\bm{z}\sim q(\bm{z}|\bm{x}; \bm{\phi})多次采样,平均上有:

logp(x)=Ezq(zx;ϕ)[logp(xz;θ)logq(zx;ϕ)q(z)+logq(zx;ϕ)q(zx;θ)]=Ezq(zx;ϕ)logp(xz;θ)DKL(q(zx;ϕ)q(z))  +DKL(q(zx;ϕ)q(zx;θ))\begin{aligned} \log p(\bm{x}) =& \mathbb{E}_{z\sim q(\bm{z}|\bm{x}; \bm{\phi})} \left[\log p(\bm{x}|\bm{z}; \bm{\theta}) - \log \frac{q(\bm{z}|\bm{x}; \bm{\phi})}{q(\bm{z})} + \log\frac{q(\bm{z}|\bm{x}; \bm{\phi})}{q(\bm{z}|\bm{x}; \bm{\theta})}\right]\\ =& \mathbb{E}_{z\sim q(\bm{z}|\bm{x}; \bm{\phi})} \log p(\bm{x}|\bm{z}; \bm{\theta}) - D_\text{KL}\big( q(\bm{z}|\bm{x}; \bm{\phi}) \| q(\bm{z}) \big) \\ &~~ + D_\text{KL}\big(q(\bm{z}|\bm{x}; \bm{\phi}) \| q(\bm{z}|\bm{x}; \bm{\theta}) \big) \end{aligned}

这其中DKL(q(zx;ϕ)q(zx;θ))D_\text{KL}\big(q(\bm{z}|\bm{x}; \bm{\phi}) \| q(\bm{z}|\bm{x}; \bm{\theta}) \big)未知,因此VAE无法实现最小化交叉熵(最大化似然) Exp^datalogp(x)-\mathbb{E}_{\bm{x}\sim \hat{p}_\text{data}} \log p(\bm{x}),只能将logp(x)\log p(\bm{x})与这个未知的KL散度一起优化:

logp(x)+DKL(q(zx;ϕ)q(zx;θ))=DKL(q(zx;ϕ)q(z))Ezq(zx;ϕ)logp(xz;θ)\begin{aligned} -\log p(\bm{x}) + D_\text{KL}\big(q(\bm{z}|\bm{x}; \bm{\phi})& \| q(\bm{z}|\bm{x}; \bm{\theta}) \big) \\ =& D_\text{KL}\big( q(\bm{z}|\bm{x}; \bm{\phi}) \| q(\bm{z}) \big) - \mathbb{E}_{z\sim q(\bm{z}|\bm{x}; \bm{\phi})} \log p(\bm{x}|\bm{z}; \bm{\theta}) \end{aligned}

这里p(x)p(\bm{x})从整个模型角度理解,是数据的似然概率;而仅从生成网络角度理解p(xθ)=p(xz;θ)q(z)dzp(\bm{x}|\bm{\theta}) = \int p(\bm{x}|\bm{z};\bm{\theta})q(\bm{z})d\bm{z},是对隐变量分布q(z)q(\bm{z})求边际后生成网络参数θ\bm{\theta}证据arg maxθp(xθ)\argmax_{\bm{\theta}}p(\bm{x}|\bm{\theta})就是找到给定数据x\bm{x},对于隐变量分布q(z)q(\bm{z})而言最优的生成网络参数。作为KL散度,DKL(q(zx;ϕ)q(zx;θ))D_\text{KL}\big(q(\bm{z}|\bm{x}; \bm{\phi}) \| q(\bm{z}|\bm{x}; \bm{\theta}) \big)取值非负,因此VAE所优化的只是logp(x)\log p(\bm{x})p(x)p(\bm{x})的下界,被称为证据下界(Evidence lower bound, ELBO)。

最终,VAE网络整体损失函数为:

J(θ,ϕ)=Expdata[DKL(q(zx;ϕ)q(z))Ezq(zx;ϕ)logp(xz;θ)]\boxed{\mathcal{J}(\bm{\theta}, \bm{\phi}) = \mathbb{E}_{\bm{x}\sim p_\text{data}} \left[ D_\text{KL}\big( q(\bm{z}|\bm{x}; \bm{\phi}) \| q(\bm{z}) \big) - \mathbb{E}_{z\sim q(\bm{z}|\bm{x}; \bm{\phi})} \log p(\bm{x}|\bm{z}; \bm{\theta})\right] }

实际计算中q(zx;ϕ)q(\bm{z}|\bm{x}; \bm{\phi})通常取为正态分布zN(μx;ϕ,Σx;ϕ)\bm{z}\sim\mathcal{N}(\bm{\mu}_\bm{x;\phi}, \bm{\Sigma}_\bm{x;\phi})q(z)q(\bm{z})假设为标准正态分布N(0,I)\mathcal{N}(0, I)。这种情况下,第一项相对简单,可表示为μx;ϕ,Σx;ϕ\bm{\mu}_\bm{x;\phi}, \bm{\Sigma}_\bm{x;\phi}的解析函数:

DKL(N(μx;ϕ,Σx;ϕ)N(0,I))=12[tr(Σx;ϕ)+μx;ϕTμx;ϕklogdet(Σx;ϕ)]D_{\rm KL}\Big(\mathcal{N}(\bm{\mu}_\bm{x;\phi}, \bm{\Sigma}_\bm{x;\phi}) \big\| \mathcal{N}(0, I)\Big) = \frac{1}{2} [{\rm tr}(\bm{\Sigma}_\bm{x;\phi}) + \bm{\mu}_\bm{x;\phi}^T\bm{\mu}_\bm{x;\phi} - k - \log\det(\bm{\Sigma}_\bm{x;\phi})]

第二项则相对复杂,需要对编码器输出分布q(zx;ϕ)q(\bm{z}|\bm{x}; \bm{\phi})进行采样,这在反向传递时。前面已经限制了该分布的形式,可使用重参数化技巧,将对zN(μx;ϕ,Σx;ϕ)\bm{z}\sim\mathcal{N}(\bm{\mu}_\bm{x;\phi}, \bm{\Sigma}_\bm{x;\phi})的采样变换为对ϵN(0,I)\bm{\epsilon}\sim\mathcal{N}(0, I)的采样:z=μx;ϕ+Σx;ϕϵ\bm{z}{\small =}\bm{\mu}_\bm{x;\phi}{\small +}\bm{\Sigma}_{\bm{x;\phi}}\bm{\epsilon},从而:

J(θ,ϕ)=Expdata[DKL(q(zx;ϕ)q(z))EϵN(0,I)logp(xz=μϕ+Σϕϵ;θ)]\mathcal{J}(\bm{\theta}, \bm{\phi}) = \mathbb{E}_{\bm{x}\sim p_\text{data}} \left[ D_\text{KL}\big( q(\bm{z}|\bm{x}; \bm{\phi}) \| q(\bm{z}) \big) - \mathbb{E}_{\bm{\epsilon} \sim \mathcal{N}(0, I)} \log p(\bm{x}|\bm{z}{\small =}\bm{\mu}_\bm{\phi}{\small +}\bm{\Sigma}_{\bm{\phi}}\bm{\epsilon}; \bm{\theta})\right]

最后,实际计算中,最简单情况可对隐变量只进行一次采样作为近似:

J(θ,ϕ)=Exp^data[DKL(q(zx;ϕ)q(z))logp(xz=μϕ+Σϕϵ;θ)ϵN(0,I)]\boxed{\mathcal{J}(\bm{\theta}, \bm{\phi}) = \mathbb{E}_{\bm{x}\sim \hat{p}_\text{data}} \Big[ D_\text{KL}\big( q(\bm{z}|\bm{x}; \bm{\phi}) \| q(\bm{z}) \big) - \log p(\bm{x}|\bm{z}{\small =}\bm{\mu}_\bm{\phi}{\small +}\bm{\Sigma}_{\bm{\phi}}\bm{\epsilon}; \bm{\theta})|_{\bm{\epsilon} \sim \mathcal{N}(0, I)} \Big] }

对抗生成网络GAN

https://en.wikipedia.org/wiki/Generative_adversarial_network
2014 Generative Adversarial Networks
GAN在形式上很简单,一个生成网络G(z;θ)G(\bm{z};\bm{\theta})和一个判别网络D(x;ϕ)D(\bm{x};\bm{\phi}),分别用于生成“虚假”样本和计算样本为真实数据的概率。生成器目标为输出分布pg(z;θ)p_\text{g}(\bm{z}; \bm{\theta})尽量接近数据真实分布,判别器目标则是提升真实样本的输出概率D(x;ϕ)D(\bm{x};\bm{\phi}),同时降低生成样本的输出概率D(x(G);ϕ)D\big( \bm{x}^{(G)}; \bm{\phi} \big),整体损失函数为:

J(θ,ϕ)=ExpdatalogD(x;ϕ)+Ex(G)pg(xz;θ)log(1D(x(G);ϕ))=ExpdatalogD(x;ϕ)+Ezq(z)log(1D(G(z;θ);ϕ))\begin{aligned} \mathcal{J}(\bm{\theta}, \bm{\phi}) =& \mathbb{E}_{\bm{x}\sim p_\text{data}} \log D(\bm{x};\bm{\phi}) + \mathbb{E}_{\bm{x}^{(G)}\sim p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})} \log \Big(1-D\big( \bm{x}^{(G)}; \bm{\phi} \big)\Big)\\ =& \mathbb{E}_{\bm{x}\sim p_\text{data}} \log D(\bm{x};\bm{\phi}) + \mathbb{E}_{\bm{z}\sim q(\bm{z})} \log \Big(1-D\big( G(\bm{z};\bm{\theta}); \bm{\phi} \big)\Big) \end{aligned}

反向传播时,生成器与判别器分开优化,优化目标为:

arg minθarg maxϕJ(θ,ϕ)\argmin_\bm{\theta} \argmax_\bm{\phi} \mathcal{J}(\bm{\theta}, \bm{\phi})

先固定生成器,调整判别器参数,最大化损失函数;之后,固定判别器,调整生成器参数,最小化损失,注意此时损失函数第一项不起作用。具体的:

  • 更新判别器:
    • 对数据和隐变量分别采样得到小批量样本{xi,zi}\{\bm{x}^{i}, \bm{z}^{i}\},对判别器计算梯度

    ϕ1mi=1m[logD(xi;ϕ)+log(1D(G(zi;θ);ϕ))]\nabla_\bm{\phi}\frac{1}{m} \sum_{i=1}^{m} \left[ \log D(\bm{x}^{i};\bm{\phi}) + \log\Big(1-D\big( G(\bm{z}^{i};\bm{\theta}); \bm{\phi} \big)\Big)\right]

    • 梯度上升更新判别器的参数
    • 重复采样和梯度上升kk
  • 更新生成器:
    • 对隐变量分别采样得到小批量样本{zj}\{\bm{z}^{j}\},计算损失对生成器的梯度

    θ1mj=1mlog(1D(G(zj;θ);ϕ))\nabla_\bm{\theta}\frac{1}{m} \sum_{j=1}^{m} \log\Big(1-D\big( G(\bm{z}^{j};\bm{\theta}); \bm{\phi} \big)\Big)

    • 梯度下降更新生成器的参数
  • 循环迭代,依次更新判别器和生成器

以上就是GAN的全部内容,其优化目标并不依赖通常的似然函数Exp^datalogpg(xz;θ)\mathbb{E}_{\bm{x}\sim \hat{p}_\text{data}} \log p_\text{g}(\bm{x} | \bm{z}; \bm{\theta}),也不需要知道似然函数的形式,直接对数据和隐变量采样即可完成优化,乍一看过于简单甚至是“简陋”,简直就是左右脚互踩登天,实际训练也确实很困难,但至少理论上是正确的。下面对GAN的数学原理做简单说明,确保上述损失函数与最大似然/最小化交叉熵一致,可实现pg(xz;θ)pdata(x)p_\text{g}(\bm{x} | \bm{z}; \bm{\theta}) \rightarrow p_\text{data}(\bm{x}),且更新算法可以实现优化目标。

数学理论基础

目标函数合理性
给定生成器G(x)G(\bm{x}),输出分布pg(xz;θ)p_\text{g}(\bm{x} | \bm{z}; \bm{\theta}) 确定,损失函数可表示为:

J(θ,ϕ)=ExpdatalogD(x;ϕ)+Ex(G)pg(xz;θ)log(1D(x(G);ϕ))=pdata(x)logD(x;ϕ)+pg(xz;θ)log(1D(x;ϕ))dx\begin{aligned} \mathcal{J}(\bm{\theta}, \bm{\phi}) =& \mathbb{E}_{\bm{x}\sim p_\text{data}} \log D(\bm{x};\bm{\phi}) + \mathbb{E}_{\bm{x}^{(G)}\sim p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})} \log \Big(1-D\big( \bm{x}^{(G)}; \bm{\phi} \big)\Big)\\ =& \int p_\text{data}(\bm{x}) \log D(\bm{x};\bm{\phi}) + p_\text{g}(\bm{x} | \bm{z}; \bm{\theta}) \log \Big(1-D\big( \bm{x}; \bm{\phi} \big)\Big) d\bm{x} \end{aligned}

取任意x\bm{x}pdata(x),pg(xz;θ)p_\text{data}(\bm{x}), p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})为固定值,对于不同的判别函数D(x;ϕ)D(\bm{x};\bm{\phi})为取值[0,1]{\small\in}[0,1]的可变量。考虑到yy的函数alogy+blog(1y)a \log y + b\log(1-y),在[0,1][0,1]区间中最大值位于为aa+b\frac{a}{a+b}。由此给定生成器G(x)G(\bm{x}),判别器为D(x)=pdata(x)pdata(x)+pg(xz;θ)D^*(\bm{x}) = \frac{p_\text{data}(\bm{x})}{p_\text{data}(\bm{x})+p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})} 时损失函数最大:

arg minθarg maxϕJ(θ,ϕ)=arg minθJ(θD(x;ϕ)=D(x))\argmin_\bm{\theta} \argmax_\bm{\phi} \mathcal{J}(\bm{\theta}, \bm{\phi}) = \argmin_\bm{\theta} \mathcal{J}^*\left(\bm{\theta}\Big|{\small D(\bm{x};\bm{\phi}) = D^*(\bm{x}) } \right)

此时损失函数可表示为:

J(θ)=Expdatalogpdata(x)pdata(x)+pg(xz;θ)+Expg(xz;θ)logpg(xz;θ)pdata(x)+pg(xz;θ)=DKL(pdatapdata+pg2)+DKL(pgpdata+pg2)2log2=2DJS(pdata  pg)2log2\begin{aligned} \mathcal{J}^*\left(\bm{\theta}\right) =& \mathbb{E}_{\bm{x}\sim p_\text{data}} \log \frac{p_\text{data}(\bm{x})}{p_\text{data}(\bm{x})+p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})} + \mathbb{E}_{\bm{x}\sim p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})} \log \frac{p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})}{p_\text{data}(\bm{x})+p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})}\\ =& D_{\rm KL}\left (p_\text{data} \Big\| \frac{p_\text{data}+p_\text{g}}{2} \right) + D_{\rm KL}\left (p_\text{g} \Big\| \frac{p_\text{data}+p_\text{g}}{2} \right) -2\log 2\\ =& 2 D_{\rm JS}\big(p_\text{data} ~\|~ p_\text{g} \big) - 2\log 2 \end{aligned}

其中DKLD_{\rm KL}为KL散度,DJSD_{\rm JS}为JS散度,具体可参考信息熵与统计距离。为进行概率归一化,多了常数项2log2-2\log2。JS散度取值非负,pg=pdatap_\text{g} = p_\text{data}时取0,Jmin=2log2{\small \mathcal{J}_{\rm min} = -2\log2}。最终损失函数取得最优解时有pg(xz;θ)=pdata(x)p_\text{g}(\bm{x} | \bm{z}; \bm{\theta}) = p_\text{data}(\bm{x})。而此时D(x)=pdata(x)pdata(x)+pg(xz;θ)=12D^*(\bm{x}) = \frac{p_\text{data}(\bm{x})}{p_\text{data}(\bm{x})+p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})} = \frac{1}{2},即对任意x\bm{x},判别器始终输出12\frac{1}{2}

算法收敛性
假设生成器GG和判别器DD有足够的容量(能拟合任意函数),且每次迭代DD都能达到给定GG情况下的最优解DD^*。固定D=D\small D=D^*,损失函数可视为函数pgp_\text{g}的函数:

J(pg)=supDJ(G,D)=ExpdatalogD(x)+Expglog(1D(x))J'(p_g) = \sup_D J(G, D) =\mathbb{E}_{\bm{x}\sim p_\text{data}} \log D^*(\bm{x}) + \mathbb{E}_{\bm{x} \sim p_\text{g} } \log \big(1-D^*(\bm{x}) \big)

最小化损失等价于寻找pgp_\text{g}的全局最优pg=pdatap_\text{g} = p_\text{data},而考虑到上述函数是pgp_\text{g}的凸函数,梯度下降是可以收敛到全局最优的。但这一结论有两个前提条件:

  • 每次迭代判别器都能达到最优解DD^*,为此前面的算法迭代中选择了先更新判别器,且会重复梯度上升kk次,尽量使该条件成立,但其实也无法完全确保;
  • 生成器(及判别器)要有足够容量,从而可搜索整个函数空间,实际中网络参数有限,只能覆盖有限的函数空间,但最终实践的有效性侧面印证了算法的合理性。

最后,从博弈论角度理解,目标函数最优解对应于零和博弈下的纳什均衡状态,但纳什均衡要求判别器与生成器同时更新,而上面的算法则是判别器与生成器依次更新,两种情况下的最优解理论上并不一定相同。根据前面的讨论,在模型容量足够情况下,理论上依次更新是可以达到纳什均衡的。但GAN的很多后续很多改进都引入正则,限制了模型容量,此时无法保证pg=pdatap_\text{g} = p_\text{data},而两者距离最小时并不对应纳什均衡态,即无法保证实现纳什均衡,具体见Do GANs always have Nash equilibria?

问题与改进

训练困难,损失不稳定
需要保持生成器和判别器的平衡,
model co

  • 网络结构
    作为演示,最初的GAN文章中生成/判别器只用了最基础的MLP,后续工作对网络结构做了各种扩展,引入了深度卷积(DCGAN)、自注意力模块(SAGAN)、变分自编码器(VAEGAN)、Transformer(TransGAN)以及基于流的生成模型(Flow-GAN)等等。
  • 目标函数
    根据前面的讨论,当判别器DD取得给定GG情况下的最优解,目标函数就对应于数据分布pdatap_\text{data}与生成器输出分布pgp_\text{g}之间的JS散度。

J=supD[ExpdatalogD(x)+Expg(xz;θ)log(1D(x))]=2DJS(pdata  pg)2log2\begin{aligned} J' &= \sup_D \Big[ \mathbb{E}_{\bm{x}\sim p_\text{data}} \log D(\bm{x}) + \mathbb{E}_{\bm{x}\sim p_\text{g}(\bm{x} | \bm{z}; \bm{\theta})} \log \big( 1-D(\bm{x}) \big) \Big]\\ &= 2 D_{\rm JS}\big(p_\text{data} ~\|~ p_\text{g} \big) - 2 \log 2 \end{aligned}

理论上可在不影响全局最优前提下将JS散度扩展到其他统计距离,如ff散度以及Wasserstein距离等,这就是ff-GAN 与 WGAN。关于统计距离可参考信息熵与统计距离。对于ff散度:

Df(pq)=q(x)f(p(x)q(x))dx=q(x)supudomf[up(x)q(x)f(u)]dx=u=D(x)supD[ExpdataD(x)Expgf(D(x))]\begin{aligned} D_f(p\|q) &= \int q(x)f\left(\frac{p(x)}{q(x)}\right)dx = \int q(x) \sup_{u\in \text{dom}_{f^*}} \left[u \frac{p(x)}{q(x)}-f^*(u)\right] dx\\ &\xlongequal{u=D(x)} \sup_D \Big[ \mathbb{E}_{\bm{x}\sim p_\text{data}} D(x) - \mathbb{E}_{\bm{x} \sim p_\text{g}} f^*\big(D(x)\big) \Big] \end{aligned}

其中f(t)f(t)为凸函数,且f(1)=0f(1)=0,当f(t)f(t)取不同函数可得到各种常见散度,如f(t)=tlogtf(t) = t\log t就是KL散度。上面利用了f(t)=supudomf[utf(u)]f(t) = \sup_{u\in \text{dom}_{f^*}} [u t - f^*(u)],其中ff^*为凸函数ff的凸共轭f(u)=suptdomf[utf(t)]f^*(u) = \sup_{t\in \text{dom}_{f}} [u t - f(t)]。对于常见的散度ff及对应的ff^*有解析表达式,具体可参考原始论文。虽然ff-GAN在数学上将JS散度一般化为任意ff散度,但在实践中提升效果不明显,相对成功的改进是WGAN。

WGAN-GP

不同分布间的Wasserstein距离为:

W(pdata,pg)=infγΓ(pdata,pg)E(x,x(G))γxx(G)W(p_\text{data}, p_\text{g}) = \inf_{\gamma\sim\Gamma(p_\text{data}, p_\text{g})} \mathbb{E}_{(\bm{x}, \bm{x}^{(G)})\sim \gamma} \left\|\bm{x} -\bm{x}^{(G)}\right\|

其中γ\gamma代表分布pdata,pgp_\text{data}, p_\text{g}的联合分布,而Γ\Gamma为所有可能联合分布的集合。Wasserstein距离是两个分布样本距离d(x,x(G))=xx(G)d(\bm{x}, \bm{x}^{(G)}) = \left\|\bm{x} -\bm{x}^{(G)}\right\|期望值对所有可能联合分布的下确界。利用对偶性(duality),上述Wasserstein距离可表示为:

W(pdata,pg)=1KsupDLK[ExpdataD(x;ϕ)Expg(xz;θ)D(x;ϕ)]W(p_\text{data}, p_\text{g}) = \frac{1}{K}\sup_{\|D\|_L\le K} \Big[ \mathbb{E}_{\bm{x}\sim p_\text{data}} D(\bm{x};\bm{\phi}) - \mathbb{E}_{\bm{x} \sim p_\text{g}(\bm{x}|\bm{z};\bm{\theta})} D(\bm{x};\bm{\phi}) \Big]

其中DD为任意的函数,DL=D(x1)D(x2)x1x2\|D\|_L = \frac{|D(\bm{x}_1) -D(\bm{x}_2)|}{|\bm{x}_1-\bm{x}_2|}为其Lipschitz范数。这个约束源自对偶性,而从直观上理解,就是要求在样本x\bm{x}变动很小时,DD也变动有限,不会出现“失之毫厘谬以千里”的情况,这对于距离的构建显然是很重要的。在实现上:

  • 更新判别器:
    • 对数据和隐变量分别采样得到小批量样本{xi,zi}\{\bm{x}^{i}, \bm{z}^{i}\},对判别器计算梯度

    ϕ1mi=1m[D(xi;ϕ)D(G(zi;θ);ϕ)]\nabla_\bm{\phi}\frac{1}{m} \sum_{i=1}^{m} \left[D(\bm{x}^{i};\bm{\phi}) - D\Big( G(\bm{z}^{i};\bm{\theta}); \bm{\phi} \Big)\right]

    • 梯度上升更新判别器的参数
    • 对参数做截断,限制任意判别器参数ϕ<c|\phi| < c
    • 重复采样和梯度上升kk
  • 更新生成器:
    • 对隐变量分别采样得到小批量样本{zj}\{\bm{z}^{j}\},计算损失对生成器的梯度

    θ1mj=1mD(G(zj;θ);ϕ)\nabla_\bm{\theta}\frac{1}{m} \sum_{j=1}^{m} D\Big( G(\bm{z}^{j};\bm{\theta}); \bm{\phi} \Big)

    • 梯度下降更新生成器的参数
  • 循环迭代,依次更新判别器和生成器

对比GAN,这其中核心的不同在于:

  • 新的损失函数不再对判别器输出取对数
  • 判别器参数始终被限制在指定范围

根据WGAN作者实验,随着生成器输出效果提升,JS散度不变甚至增加,而Wasserstein距离则稳步下降,进一步印证了后者的有效性。值得注意的,这里的“判别器”不具有判别数据属于真实数据的概率意义,不再输出(0, 1)的概率值,从而也不需要Sigmoid激活。这里的“判别器”只是构建Wasserstein距离的中间函数(拉格朗日乘子),原文中称之为critic(评价器)而非discriminator(判别器)。换句话说WGAN其实已经不遵从GAN中零和博弈的框架,这或许就是它训练相对稳定的原因。

WAGN相比GAN在训练稳定度上有了很大提升,但通过对判别器参数截断实现Lipschitz约束的操作,在实践中会出现梯度集中于边界值,网络结构相对简单,而在反向传递时又容易出现梯度发散或消失。对此,WGAN团队又提出可将Lipschitz约束作为损失函数的正则项,即引入梯度惩罚(Gradient Penalty)的WGAN-GP

ExpdataD(x;ϕ)Ex(G)pg(x(G)z;θ)D(x(G);ϕ)λEx^px^(x^D(x^;ϕ)21)2\mathbb{E}_{\bm{x}\sim p_\text{data}} D(\bm{x};\bm{\phi}) - \mathbb{E}_{\bm{x}^{(G)} \sim p_\text{g}(\bm{x}^{(G)}|\bm{z};\bm{\theta})} D(\bm{x}^{(G)};\bm{\phi}) - \lambda \mathbb{E}_{\bm{\hat{x}} \sim p_\bm{\hat{x}} } \big(\|\nabla_\bm{\hat{x}} D(\bm{\hat{x}};\bm{\phi})\|_2 -1\big)^2

显然这里梯度惩罚项不能对整个样本空间求期望,WGAN-GP中将x^\bm{\hat{x}}取为真实样本x\bm{x}与生成样本x(G)\bm{x}^{(G)}的随机混合:x^=ϵx+(1ϵ)x(G)=ϵx+(1ϵ)G(z;θ),ϵU[0,1]\bm{\hat{x}} = \epsilon \bm{x} + (1-\epsilon)\bm{x}^{(G)} = \epsilon \bm{x} + (1-\epsilon)G(\bm{z}; \bm{\theta}), \epsilon\in U[0,1]。这个限制要求了D(x)D(\bm{x})至少在x\bm{x}x(G)\bm{x}^{(G)}的连线上是符合Lipschitz约束的。
这里有几个细节需注意,梯度惩罚仅针对判别器,因此虽然x(G)=G(z;θ)\bm{x}^{(G)}=G(\bm{z}; \bm{\theta})出现在了梯度惩罚项中,更新生成器时并不会考虑其对于θ\bm{\theta}的梯度,即上述损失是仅针对判别器。其次,判别器是要最大化整体损失,即梯度上升的,因此这里梯度惩罚项为负,如果表示为梯度下降的正常形式应该是:

Ex(G)pg(x(G)z;θ)D(x(G);ϕ)ExpdataD(x;ϕ)+λEx^px^(x^D(x^;ϕ)21)2\mathbb{E}_{\bm{x}^{(G)} \sim p_\text{g}(\bm{x}^{(G)}|\bm{z};\bm{\theta})} D(\bm{x}^{(G)};\bm{\phi}) - \mathbb{E}_{\bm{x}\sim p_\text{data}} D(\bm{x};\bm{\phi}) + \lambda \mathbb{E}_{\bm{\hat{x}} \sim p_\bm{\hat{x}} } \big(\|\nabla_\bm{\hat{x}} D(\bm{\hat{x}};\bm{\phi})\|_2 -1\big)^2

you can (and should) train the discriminator to convergence. If true, it would remove needing to balance generator updates with discriminator updates,

https://en.wikipedia.org/wiki/Generative_adversarial_network
Wasserstein GAN
From GAN to WGAN
Read-through: Wasserstein GAN
令人拍案叫绝的Wasserstein GAN
互怼的艺术:从零直达 WGAN-GP

对偶简单理解就是同一问题的不同视角,比如命题与逆反命题,集合的内部与外部,信号的时域与频域表示以及物质的波粒二象性等等。关于凸优化的拉格朗日对偶问题可参考深度学习入门中关于凸优化的介绍。这里参照拉格朗日对偶对上面“莫名其妙”的变换做简单理解,不涉及证明。取W(p,q)=infγΓ(p,q)E(x,y)γd(x,y)W(p, q) = \inf_{\gamma\sim\Gamma(p, q)} \mathbb{E}_{(x, y)\sim \gamma} d(x, y),考虑到约束条件p(x)=γ(x,y)dy,  q(y)=γ(x,y)dxp(x) = \int \gamma(x, y)dy, ~~ q(y) = \int \gamma(x, y) dx,对应的拉格朗日函数为:

L(p,q,f,g)=d(x,y)dγ(x,y)+f(x)[p(x)γ(x,y)dy]dx+g(y)[q(y)γ(x,y)dx]dy=f(x)p(x)dx+g(y)q(y)dy+{d(x,y)[f(x)+g(y)]}dγ(x,y)\begin{aligned} L(p, q, f, g) =& \int d(x, y) d\gamma(x, y)\\ &+ \int f(x) \left[ p(x) - \int \gamma(x, y) dy \right] dx\\ &+ \int g(y) \left[q(y) - \int \gamma(x, y) dx \right] dy\\ =& \int f(x) p(x) dx + \int g(y) q(y) dy\\ & + \int \left\{d(x, y) - \left[f(x) + g(y) \right]\right\}d\gamma(x, y) \end{aligned}

这里f(x),g(y)f(x),g(y)为两组约束条件的拉格朗日乘子。约束条件是连续函数,拉格朗日乘子也变为函数,内积变为积分。利用对偶性(这里不讨论对偶性成立的条件),将原问题W(p,q)\small W(p,q)变为其对偶问题:

W(p,q)=infγΓ(p,q)supf,g  L(p,q,f,g)=supf,ginfγΓ(p,q)L(p,q,f,g)=supf,g[f(x)p(x)dx+g(y)q(y)dy            +infγΓ(p,q){d(x,y)[f(x)+g(y)]}dγ(x,y)]\begin{aligned} W(p,q) &= \inf_{\gamma\sim\Gamma(p, q)} \sup_{f, g} ~~ L(p, q, f, g) = \sup_{f, g} \inf_{\gamma\sim\Gamma(p, q)} L(p, q, f, g)\\ &= \sup_{f, g} \bigg[ \int f(x) p(x) dx + \int g(y) q(y) dy\\ & ~~~~~~~~~~~~ + \inf_{\gamma\sim\Gamma(p, q)} \int \left\{d(x, y) - \left[f(x) + g(y) \right]\right\}d\gamma(x, y) \bigg] \end{aligned}

这里后一项求下限infγΓ(p,q)\inf_{\gamma\sim\Gamma(p, q)},当f(x)+g(y)>d(x,y)f(x) + g(y) > d(x, y )下限对应为-\infty,而当f(x)+g(y)d(x,y)f(x) + g(y) \le d(x, y ),下限为0。最终整体求上限有:

W(p,q)=supf,g  f(x)+g(y)d(x,y)[f(x)p(x)dx+g(y)q(y)dy]W(p,q) = \sup_{f, g ~|~ f(x) + g(y) \le d(x, y )} \bigg[ \int f(x) p(x) dx + \int g(y) q(y) dy\bigg]

当概率空间为度量空间,对f,gf,g求上界有g(y)=f(y)g(y) = -f(y),上式可进一步简化为

supf(x)f(y)d(x,y)[Expf(x)Eyqf(y)]=supf(x)L1[Expf(x)Eyqf(y)]\sup_{f(x) - f(y) \le d(x, y )} \Big[ \mathbb{E}_{x\sim p} f(x) - \mathbb{E}_{y\sim q} f(y) \Big] = \sup_{\|f(x)\|_L \le 1} \Big[ \mathbb{E}_{x\sim p} f(x) - \mathbb{E}_{y\sim q} f(y) \Big]

基于流的生成模型NF

基于流的生成模型,或者说标准化流(Normalization flow)模型的思想可以说是各种生成模型中最直观的。其理论基础就是概率分布的变量代换。
真正的难点在于生成网络gg即要足够的复杂,能对现实分布建模;又要足够的简单,能够轻松获得逆变换以及雅克比行列式。这种使得
不过在2014年提出了一种耦合网络,实现了突破。NICE

基于流的生成模型是最直观的,其理论基础就是概率分布的变量代换。其难点在于生成网络gg在实现x=g(z)\bm{x}=g(\bm{z})的同时必须要可逆,且行列式det(g(z)z)\left|\det\left(\frac{\partial g(\bm{z})}{\partial\bm{z}}\right)\right|容易计算,这对于一般的神经网络而言是很难满足的。
https://en.wikipedia.org/wiki/Flow-based_generative_model
NICE 2014年就提出了??
NICE: Non-linear independent components estimation

q(z)=p(g(z))det(g(z)z);      p(x)=q(g1(x))det(g(z)z)1q(\bm{z}) = p\left(g(\bm{z})\right) \left|\det\left(\frac{\partial g(\bm{z})}{\partial\bm{z}}\right)\right|; ~~~~~~ p(\bm{x}) = q\left(g^{-1}(\bm{x})\right) \left|\det\left(\frac{\partial g(\bm{z})}{\partial\bm{z}}\right)\right|^{-1}

arg maxExpdatap(x)\argmax \mathbb{E}_{\bm{x}\sim p_\text{data}} p(\bm{x})

arg maxExpdata[logq(g1(x;θ))logdet(g(z;θ)z)]\argmax \mathbb{E}_{\bm{x}\sim p_\text{data}} \left[ \log q\left(g^{-1}(\bm{x}; \bm{\theta})\right) - \log\left|\det\left(\frac{\partial g(\bm{z};\bm{\theta})}{\partial\bm{z}}\right)\right| \right]

耦合流

一类较常见的可逆网络结构是“耦合层”(coupling layer):

输入数据被分为两部分[z:m;zm+1:][\bm{z}_{:m};\bm{z}_{m+1:}],前半部分直接拷贝至输出,同时经调节器ff的变换作为gg的参数,与后半部分数据进行耦合g(zm+1:;θ)=g(zm+1:;f(z:m))g(\bm{z}_{m+1:}; \bm{\theta}) = g\big(\bm{z}_{m+1:}; f(\bm{z}_{:m}) \big)。最终整体上:

x=[z:m;  g(zm+1:;f(z:m))];    z=[x:m;  g1(xm+1:;f(x:m))]\bm{x} = [\bm{z}_{:m}; ~~ g\big(\bm{z}_{m+1:}; f(\bm{z}_{:m}) \big)]; ~~~~ \bm{z} = [\bm{x}_{:m}; ~~ g^{\tiny -1}\big(\bm{x}_{m+1:}; f(\bm{x}_{:m}) \big)]

注意z:m=x:m,f(z:m)=f(x:m)\bm{z}_{:m} = \bm{x}_{:m}, f(\bm{z}_{:m}) = f(\bm{x}_{:m}),即无论正逆变换,只要耦合函数g,g1g, g^{\tiny -1}的参数不变,ff就保持不变。从而计算逆变换时只需考虑gg关于后半部分输入的逆变换,而ff可取任何复杂的形式,无需可逆,并不影响整体可逆性。gg则需要取相对简单的可逆形式。而且由于gg的参数全部来自ff,因此gg是无需训练的,实际训练的只有ff
这样选择的另一个好处是,雅克比行列式左上角为单位阵,右下角由gg决定,左下角为相对复杂的耦合项,但计算行列式时无需考虑。尤其是在gg逐元素(element-wise)操作时,右下角将成为对角阵,可极大减少行列式的计算量。最简单的情况下:

g(zm+1:;θ))=zm+1:+θg\big(\bm{z}_{m+1:}; \bm{\theta}) \big) = \bm{z}_{m+1:} + \bm{\theta}

右下角将是单位阵,行列式恒为1。这也是NICE中所提出的,

稍微复杂的是仿射耦合:

g(zm+1:;θ))=θ1zm+1:+θ2g\big(\bm{z}_{m+1:}; \bm{\theta}) \big) = \bm{\theta}_1 \odot \bm{z}_{m+1:} + \bm{\theta}_2

此时右下角是以 θ1\bm{\theta}_1 元素作为对角元的对角矩阵。这里的参数θ1,θ2\bm{\theta}_1, \bm{\theta}_2 分别由两个任意复杂的变换f1(z:m),f2(z:m)f_1(\bm{z}_{:m}), f_2(\bm{z}_{:m})得到。更多复杂的耦合函数选择可参考这篇综述文章。目前表达能力相对强的一类耦合函数是样条函数,如Neural Spline Flows中提出的有理二次样条(Rational quadratic splines)。

自回归流

Autoregressive Flows
https://mp.weixin.qq.com/s/XtlK3m-EHgFRKrtcwJHZCw
https://mp.weixin.qq.com/s/oUQuHvy0lYco4HsocqvH3Q 正向KL散度 反向KL散度

正规化流
是非参数估计的一般性方法,不限于深度学习
A Family of Nonparametric Density Estimation Algorithms

基于正规化流的深度生成

问题
动机
问题本身的意义:GW1907
问题的普遍性:Toy的“全局”拟合、信号处理及星系巡天中涉及的盲源分离问题(Blind Source Separation)、语音识别中的鸡尾酒会(Cocktail party)问题
数据:
轨道运动,响应函数随时间变化,并非线性时不变系统

方法:

  • 星系巡天观测盲源分离的技术:PCA, ICA, SMF
  • 语音识别中声音分离的技术:这部分主要是神经网络
  • 利用引力波特殊性质的技术:Chirp
  • 反问题:站在更广的视角上,这个问题其实是典型的反问题。正向很简单,反向很困难,大部分的数据分析、参数推断都属于反问题,只是这个说法在天文领域不多见,在遥感和医学等领域更为常见。最近看到将深度网络与物理模型结合 来处理反问题的讨论,相关的技术能否借鉴,不过这部分还在调研,了解不多。

连续变换

扩散模型以及更一般的神经微分方程
其起点可追溯到残差网络
残差网络、残差流、
ResNet 作为常微分方程的 Euler 离散化
连续时间 Neural ODE

泊松流

Poisson Flow Generative Models
PFGM++: Unlocking the Potential of Physics-Inspired Generative Models

基于能量的生成模型

生成模型的核心目标是对数据的分布p(x)p(x)进行建模,而分布函数的基本要求为:

  • 非负 p(x)0p(x) \ge 0
  • 归一 p(x)dx=1\int p(x) dx = 1

对任意函数f(x)f(x),非负条件可通过简单变换实现,如f,f2,ef|f|, f^2, e^{f}log(1+ef)\log(1 + e^{f})等;归一条件可通过归一化操作实现,假设函数f(x;θ)f(x;\theta)经非负变换(未归一化)对应p~(x;θ)\tilde{p}(x; \theta),则:

p(x;θ)=p~(x;θ)p~(x;θ)dx=1Z(θ)p~(x;θ)p(x; \theta) = \frac{\tilde{p}(x; \theta)}{\int \tilde{p}(x; \theta) dx} = \frac{1}{Z(\theta)}\tilde{p}(x; \theta)

Z(θ)=p~(x;θ)dxZ(\theta) = \int \tilde{p}(x; \theta) dx为归一化因子(这里要求p~(x;θ)dx\tilde{p}(x; \theta) dx可积)。任意函数f(x;θ)f(x;\theta),经过变换和归一化都可对应于分布函数,因此直接调整f(x;θ)f(x;\theta)即可实现对目标分布的建模。基于能量的生成模型选择使用指数变换,此时p~(x;θ)=ef(x;θ)\tilde{p}(x; \theta) = e^{f(x; \theta)}。指数变换的优势在于:

  • 从直观上,可利用相对平滑的函数建模波动较大的分布
  • 从数学上,指数族分布是概率论中很常见的一大类分布
  • 从物理上,对应玻尔兹曼分布eεkTe^{-\frac{\varepsilon}{kT}},有相应的物理诠释

对应于统计物理中的玻尔兹曼分布,通常称f(x;θ)-f(x; \theta)能量函数,而从这个视角出发的模型则被称为基于能量的生成模型,早期基于能量的无向图模型更是直接被称为玻尔兹曼机($16.2.4 of DL)。归一化因子Z(θ)Z(\theta)被称为配分函数(partition function),同样来自统计物理。从统计物理视角,对应能量越低的状态xx概率越大。

考虑到要对整个样本空间积分,Z(θ)Z(\theta)的计算通常相当困难。这里先忽略这一点,仅从理论上分析基于能量的模型损失。

Expdata(x)θlogp(x;θ)=Expdata(x)θlogp~(x;θ)θlogZ(θ)\mathbb{E}_{x \sim p_\text{data}(x)} \nabla_{\theta} \log p(x; \theta) = \mathbb{E}_{x \sim p_\text{data}(x)} \nabla_{\theta} \log \tilde{p}(x; \theta) - \nabla_{\theta} \log Z(\theta)

注意,这里直接考虑(负)损失函数的梯度,而非损失函数本身。其中后一项:

θlogZ(θ)=1Z(θ)θZ(θ)=1Z(θ)θp~(x;θ)dx=1Z(θ)θp~(x;θ)dx\begin{aligned} \nabla_{\theta} & \log Z(\theta) = \frac{1}{Z(\theta)}\nabla_{\theta} Z(\theta)\\ =& \frac{1}{Z(\theta)} \nabla_{\theta} \int \tilde{p}(x; \theta) dx = \frac{1}{Z(\theta)}\int \nabla_{\theta} \tilde{p}(x; \theta) dx\end{aligned}

考虑到p~(x;θ)>0\tilde{p}(x; \theta) > 0p~(x;θ)=explogp~(x;θ)\tilde{p}(x; \theta) = \exp \log \tilde{p}(x; \theta),代入上式有:

1Z(θ)θexplogp~(x;θ)dx=1Z(θ)explogp~(x;θ)θlogp~(x;θ)dx=1Z(θ)p~(x;θ)θlogp~(x;θ)dx=p(x;θ)θlogp~(x;θ)dx=Exp(x;θ)θlogp~(x;θ)\begin{aligned} &\frac{1}{Z(\theta)}\int \nabla_{\theta} \exp \log \tilde{p}(x; \theta) dx\\ =& \frac{1}{Z(\theta)}\int \exp \log \tilde{p}(x; \theta) \nabla_{\theta} \log \tilde{p}(x; \theta) dx\\ =& \frac{1}{Z(\theta)}\int \tilde{p}(x; \theta) \nabla_{\theta} \log \tilde{p}(x; \theta) dx\\ =& \int p(x; \theta) \nabla_{\theta} \log \tilde{p}(x; \theta) dx = \mathbb{E}_{x \sim p(x; \theta)} \nabla_{\theta} \log \tilde{p}(x; \theta) \end{aligned}

θJ(θ)=Expdata(x)θlogp~(x;θ)+Exp(x;θ)θlogp~(x;θ)\nabla_{\theta} \mathcal{J}(\theta) = -\mathbb{E}_{x \sim p_\text{data}(x)} \nabla_{\theta} \log \tilde{p}(x; \theta) + \mathbb{E}_{x \sim p(x; \theta)} \nabla_{\theta} \log \tilde{p}(x; \theta)

对于基于能量的模型,p~(x;θ)=eE(x;θ)\tilde{p}(x; \theta) = e^{-E(x; \theta)},损失梯度直接由能量函数决定:

θJ(θ)=Expdata(x)θE(x;θ)Exp(x;θ)θE(x;θ)\nabla_{\theta} \mathcal{J}(\theta) = \mathbb{E}_{x \sim p_\text{data}(x)} \nabla_{\theta} E(x;\theta) - \mathbb{E}_{x \sim p(x; \theta)} \nabla_{\theta} E(x;\theta)

注意不同于VAE、GAN或标准化流,基于能量的模型对“能量”建模,并未建立简单分布隐变量zz与目标变量的直接关联,因此无法类似GAN等,随机采样隐变量zz,由生成器变换到目标样本。在基于能量的模型中,神经网络只是提供了目标分布的参数化表示,要获得具体样本仍需要通过其它策略对其进行采样。在上述损失函数中,前一项可通过对数据采样估计,后一项中分布p(x;θ)=1Z(θ)p~(x;θ)p(x; \theta)=\frac{1}{Z(\theta)}\tilde{p}(x; \theta)未知,依然无法计算。好在还有MCMC采样,只需前后采样点概率之比,并不需要Z(θ)Z(\theta),因此运行MCMC可实现对p~(x;θ)\tilde{p}(x; \theta)进行采样。而p~(x;θ)\tilde{p}(x; \theta)随参数更新而改变,因此每次梯度下降都需要重新运行MCMC,这使得其训练和生成都非常困难。因此这种方法只是理论上可行,并不具有实际。

在数据分布形式未知时,先利用神经网络学习目标分布的参数化形式,最后再对学习到的分布进行MCMC采样算法:从简单分布开始,经过马尔科夫迭代,逐渐收敛到目标分布。而在训练过程中

Thus to make maximum likelihood training feasible, likelihood-based models must either restrict their model architectures (e.g., causal convolutions in autoregressive models, invertible networks in normalizing flow models) to make
tractable, or approximate the normalizing constant (e.g., variational inference in VAEs, or MCMC sampling used in contrastive divergence) which may be computationally expensive.

限制模型结构(causal convolutions in autoregressive models, invertible networks in normalizing flow models)来使得 Z θ = 1 Z_{\theta}=1 Zθ=1

近似规则化常数(variational inference in VAEs, or MCMC sampling used in contrastive divergence)

MCMC采样

f(x;θ)f(x;\theta)形式简单,积分有解析形式。某些任务不需要计算Z(θ)Z(\theta)

undirected graphical models cannot be normalized except in the Gaussian case.

基于得分的生成模型

需要使用MCMC采样避开配分函数,或借助变分推断近似估计配分函数

While the estimation of the gradient of log-density function is, in principle, a very difficult non-parametric problem.

minimizing the expected squared distance of the score function of x and the score function given by the model.

由于Z(θ)Z(\theta)的存在,似然函数Expdata(x)logp(x;θ)\mathbb{E}_{x \sim p_\text{data}(x)} \log p(x; \theta)难以优化,一种思路是以得分函数为目标

Hyvärinen 2005提出得分匹配,以

此时优化时无需考虑配分函数,

J(θ)=12Expdata(x)xlogpdata(x)xlogpmodel(x)2\mathcal{J}(\theta) = \frac{1}{2}\mathbb{E}_{x \sim p_\text{data}(x)} \| \nabla_{x} \log p_\text{data}(x) - \nabla_{x} \log p_\text{model}(x)\|^2

只需要估计数据分布的梯度就可计算目标损失

其中对数似然(概率密度)关于随机变量的梯度xlogp(x)\nabla_{x} \log p(x)被称为得分函数(score function),记:

s(x;θ)=xlogp(x;θ)=xlogp~(x;θ)s^(x)=xlogpdata(x)=1pdata(x)xpdata(x)\begin{aligned} \bm{s}(x;\theta) &= \nabla_{x} \log p(x; \theta) = \nabla_{x} \log \tilde{p}(x; \theta)\\ \hat{\bm{s}}(x) &= \nabla_{x} \log p_\text{data}(x) = \frac{1}{p_\text{data}(x)} \nabla_{x} p_\text{data}(x) \end{aligned}

而对应的损失函数为:

J(θ)=12Expdata(x)s^(x)s(x;θ)2\mathcal{J}(\theta) = \frac{1}{2} \mathbb{E}_{x \sim p_\text{data}(x)} \| \hat{\bm{s}}(x) - \bm{s}(x;\theta) \|^2

被称为得分匹配,即模型得分s(x;θ)\bm{s}(x;\theta)与数据得分s^(x)\hat{\bm{s}}(x)相互匹配。

得分函数的概念其实源自Fisher统计,通常将对数似然关于参数的梯度称为Fisher得分函数(Fisher’s score function):

s(xθ)=θlogL(xθ)=inθlogp(xiθ)\bm{s}(\mathbf{x}|\theta) = \nabla_\theta \log \mathcal{L}(\mathbf{x}|\theta) = \sum_i^n \nabla_\theta \log p(x_i|\theta)

进一步的,可以定义得分函数的期望和方差。

E{s(xθ)}=θlogL(xθ)  p(x;θ^)dx\mathbb{E} \{\bm{s}(\mathbf{x}|\theta)\} = \int \nabla_\theta \log \mathcal{L}(\mathbf{x}|\theta) ~~ p(\mathbf{x};\hat{\theta}) d\mathbf{x}

这里期望是将整个观测数据集x\mathbf{x}作为随机变量计算,对应概率分布记为p(x;θ^)p(\mathbf{x};\hat{\theta}),其中p(x;θ)=L(xθ)p(\mathbf{x};\theta)=\mathcal{L}(\mathbf{x}|\theta),而θ^\hat{\theta}为参数真值,从而:

E{s(xθ^)}=θlogL(xθ)θ^  p(x;θ^)dx=θL(xθ)L(xθ) p(x;θ)θ^ dx=θL(xθ) dx  θ^=[θp(x;θ)dx]θ^=θ 1=0\begin{aligned} \mathbb{E} \{\bm{s}(\mathbf{x}|\hat{\theta})\} &= \int \nabla_\theta \log \mathcal{L}(\mathbf{x}|\theta)\big|_{\hat{\theta}} ~~ p(\mathbf{x};\hat{\theta}) d\mathbf{x} = \int \frac{\nabla_\theta \mathcal{L}(\mathbf{x}|\theta)}{\mathcal{L}(\mathbf{x}|\theta)} ~ p(\mathbf{x};\theta)\Big|_{\hat{\theta}} ~ d\mathbf{x}\\ & = \int\nabla_\theta \mathcal{L}(\mathbf{x}|\theta) ~ d\mathbf{x} ~~\bigg|_{\hat{\theta}} = \left[\nabla_\theta \int p(\mathbf{x}; \theta) d\mathbf{x}\right]\bigg|_{\hat{\theta}} = \nabla_\theta ~ 1 = 0 \end{aligned}

即得分函数在参数真值处期望为0,此时得分函数方差可简化为(仅在参数真值成立):

I(θ)=Var{s(xθ)}=E{s(xθ)sT(xθ)}\mathcal{I}(\theta) = {\rm Var} \{\bm{s}(\mathbf{x}| \theta)\} = \mathbb{E} \{ \bm{s}(\mathbf{x}| \theta)\bm{s}^T(x| \theta)\}

可以证明,参数真值处得分函数方差等于负的黑塞矩阵的期望。

E{θθTlogL(xθ)θ^}+E{s(xθ^)sT(xθ^)}=[θθTlogL(xθ)+θlogL(xθ)θTlogL(xθ)]θ^  p(x;θ^) dx=[θθTlogL(xθ)  p(x;θ)+θlogL(xθ)θTL(xθ)] dx  θ^=θ[θlogL(xθ)  p(x;θ)] dx  θ^=θ[θL(xθ)] dx  θ^=[θθTL(xθ) dx]θ^=θθT 1=0\begin{aligned} & \mathbb{E} \{ \nabla_\theta \nabla^T_\theta \log \mathcal{L}(\mathbf{x}|\theta)\big|_{\hat{\theta}} \} + \mathbb{E} \{ \bm{s}(\mathbf{x}| \hat{\theta})\bm{s}^T(x| \hat{\theta})\} \\ =& \int \left[\nabla_\theta \nabla^T_\theta\log \mathcal{L}(\mathbf{x}|\theta) + \nabla_\theta \log \mathcal{L}(\mathbf{x}|\theta) \nabla^T_\theta \log \mathcal{L}(\mathbf{x}|\theta)\right]\big|_{\hat{\theta}} ~~ p(\mathbf{x};\hat{\theta})~ d\mathbf{x}\\ =& \int \left[\nabla_\theta \nabla^T_\theta\log \mathcal{L}(\mathbf{x}|\theta) ~~ p(\mathbf{x};\theta) + \nabla_\theta \log \mathcal{L}(\mathbf{x}|\theta) \nabla^T_\theta \mathcal{L}(\mathbf{x}|\theta)\right]~ d\mathbf{x} ~~ \bigg|_{\hat{\theta}}\\ =& \int \nabla_\theta \big[\nabla_\theta \log \mathcal{L}(\mathbf{x}|\theta) ~~ p(\mathbf{x};\theta) \big]~ d\mathbf{x} ~~\bigg|_{\hat{\theta}} = \int \nabla_\theta \big[\nabla_\theta \mathcal{L}(\mathbf{x}|\theta) \big]~ d\mathbf{x}~~\bigg|_{\hat{\theta}}\\ =& \left[\nabla_\theta \nabla^T_\theta \int \mathcal{L}(\mathbf{x}|\theta)~ d\mathbf{x} \right] \bigg|_{\hat{\theta}} = \nabla_\theta \nabla^T_\theta ~ 1 = 0 \end{aligned}

由此:

I(θ^)=E{s(xθ^)sT(xθ^)}=E{θθTlogL(xθ)θ^}\mathcal{I}(\hat{\theta}) = \mathbb{E} \{ \bm{s}(\mathbf{x}| \hat{\theta})\bm{s}^T(x| \hat{\theta})\} = - \mathbb{E} \{ \nabla_\theta \nabla^T_\theta \log \mathcal{L}(\mathbf{x}|\theta)\big|_{\hat{\theta}} \}

根据概率乘法公式,独立事件的Fisher信息(矩阵)具有可加性,此外费雪信息矩阵为正定,

θˉN(θ^,I1(θ^));   I(θ^)(θˉθ^)N(0,1)\bar{\theta} \sim \mathcal{N}(\hat{\theta}, I^{-1}(\hat{\theta}) ); ~~~ \sqrt{I(\hat{\theta})}(\bar{\theta}-\hat{\theta}) \rightarrow \mathcal{N}(0, 1)

即费雪信息矩阵的逆对应MLE估计的协方差矩阵。考虑到Fisher信息的可加性,对于独立观测,随着样本数nn增加,I(θ^)nI(\hat{\theta})\propto n,即MLE估计的标准差1n\propto \frac{1}{\sqrt{n}}

费雪信息是对观测数据xx所提供的未知参数θ\theta信息量的度量。
The lesser the variance of this function, greater is the likelihood that the observed value x will match the true mean of the probability distribution of x. In other words, greater the information contained in the random variable x about the true mean of x. On the other hand, greater is the variance of the partial derivative of ℓ(λ | x), lesser is the information contained in x about its true mean.

Thus, the information contained in x about the true value of some parameter θ of the presumed distribution of x, has an inverse relation with the variance of the partial derivative w.r.t. θ of the log-likelihood function.

Var(θ^)I1(θ){\rm Var}(\hat{\theta}) \ge \mathcal{I}^{-1}(\theta)

The Fisher information is a way of measuring the amount of information that an observable random variable X X carries about an unknown parameter θ \theta upon which the probability of X X depends.
Fisher 信息矩阵的迹

Fisher信息定义为得分函数的方差(协方差矩阵)

E{s(x;θ)2}\mathbb{E} \left\{ \| \bm{s}(x; \theta) \|^2 \right\}

Fisher
事实上,得分匹配损失可以类比于KL散度。KL散度为交叉熵与信息熵的

KL散度源自Shannon信息熵,而Fisher散度源自Fisher信息。
而类比KL散度,该损失函数也被称为费雪散度(Fisher Divergence):

DF(pq)=12Exp(x)xlogp(x)xlogp(x)2=12Exp(x)xlogp(x)q(x)2D_{\rm F}(p|q) = \frac{1}{2}\mathbb{E}_{x\sim p(x)} \left\|\nabla_x \log p(x) - \nabla_x \log p(x)\right\|^2 = \frac{1}{2}\mathbb{E}_{x\sim p(x)} \left\|\nabla_x \log\frac{p(x)}{q(x)}\right\|^2

可以证明:

DF(p~q~)=ddtDKL(p~q~)D_{\rm F}(\tilde{p}|\tilde{q}) = -\frac{d}{dt} D_{\rm KL}(\tilde{p}|\tilde{q})

特别地,当tt取0有:

DF(pq)=ddtDKL(p~q~)t=0D_{\rm F}(p|q) = -\frac{d}{dt} D_{\rm KL}(\tilde{p}|\tilde{q})|_{t=0}

不过数据的梯度,即s^(x)\hat{\bm{s}}(x),通常无法直接计算,而Hyvärinen 2005发现,通过简单变换就可绕开s^(x)\hat{\bm{s}}(x)的计算。将目标损失展开:

Expdata(x)[s^(x)2+s(x;θ)22s^T(x)s(x;θ)]\mathbb{E}_{x \sim p_\text{data}(x)} \left[ \| \hat{\bm{s}}(x)\|^2 + \|\bm{s}(x;\theta) \|^2 - 2 \hat{\bm{s}}^T(x)\bm{s}(x;\theta) \right]

其中第一项只与xx有关去,求期望后为常数,中间一项可由模型给出,核心是最后一项,将其展开,并结合分部积分有:

Ex[s^T(x)s(x;θ)]=pdata(x)s^T(x)s(x;θ)dx=pdata(x)xTpdata(x)pdata(x)s(x;θ)dx=xTpdata(x)s(x;θ)dx=pdata(x)s(x;θ)+pdata(x)xTs(x;θ)dx=Ex tr(xs(x;θ))\begin{aligned} &\mathbb{E}_{x} [\hat{\bm{s}}^T(x)\bm{s}(x;\theta)] = \int p_\text{data}(x) \hat{\bm{s}}^T(x) \bm{s}(x;\theta) dx\\ & = \int p_\text{data}(x) \frac{\nabla_{x}^T p_\text{data}(x)}{p_\text{data}(x)} \bm{s}(x;\theta) dx = \int \nabla_{x}^T p_\text{data}(x) \bm{s}(x;\theta) dx\\ & = p_\text{data}(x) \bm{s}(x;\theta)|_{-\infty}^{+\infty} - \int p_\text{data}(x) \nabla_{x}^T \bm{s}(x;\theta) dx = - \mathbb{E}_{x} ~ {\rm tr}\big(\nabla_{x} \bm{s}(x;\theta)\big) \end{aligned}

这里假设pdata(x)0,xp_\text{data}(x) \rightarrow 0, |x| \rightarrow \infty,同时s(x;θ)\bm{s}(x;\theta)有限,分部积分中前一项为0。最终:

J(θ)=12Expdata(x)s^(x)s(x;θ)2=Expdata(x)[12s(x;θ)2+tr(xs(x;θ))]+const.=Expdata(x)[12xlogp~(x;θ)2+x2logp~(x;θ)]+const.\begin{aligned} \mathcal{J}(\theta) &= \frac{1}{2} \mathbb{E}_{x \sim p_\text{data}(x)} \| \hat{\bm{s}}(x) - \bm{s}(x;\theta) \|^2\\ & = \mathbb{E}_{x \sim p_\text{data}(x)} \left[ \frac{1}{2}\| \bm{s}(x; \theta) \|^2 + {\rm tr}\big(\nabla_{x} \bm{s}(x;\theta)\big) \right] + \text{const.}\\ & = \mathbb{E}_{x \sim p_\text{data}(x)} \left[ \frac{1}{2}\| \nabla_{x} \log \tilde{p}(x; \theta) \|^2 + \nabla^2_{x} \log \tilde{p}(x; \theta)\right] + \text{const.} \end{aligned}

其中2\nabla^2为拉普拉斯算符,x2logp~(x;θ)=i2logp~(x;θ)xi\nabla^2_x\log \tilde{p}(\bm{x}; \theta) = \sum_i \frac{\partial^2 \log \tilde{p}(\bm{x}; \theta)}{\partial x_i},计算量为O(D)O(D)量级,即正比于数据的维度。为了加速计算,后续提出了各种改进,如Song等人就引入随机投影策略Sliced Score Matching

J(θ)=12EvpvExpdata(x)vT[s^(x)s(x;θ)]2=EvpvExpdata(x)[12(vTs(x;θ))2+vT xs(x;θ) v]+const.\begin{aligned} \mathcal{J}'(\theta) &= \frac{1}{2} \mathbb{E}_{\mathbf{v} \sim p_\mathbf{v}} \mathbb{E}_{x \sim p_\text{data}(x)} \left\| \mathbf{v}^T\big[\hat{\bm{s}}(x) - \bm{s}(x;\theta)\big] \right\|^2\\ & = \mathbb{E}_{\mathbf{v} \sim p_\mathbf{v}} \mathbb{E}_{x \sim p_\text{data}(x)} \left[ \frac{1}{2}\big(\mathbf{v}^T\bm{s}(x; \theta) \big)^2 + \mathbf{v}^T ~ \nabla_{x} \bm{s}(x;\theta) ~ \mathbf{v} \right] + \text{const.}\end{aligned}

其中v\mathbf{v}为样本空间中的随机向量,pvp_\mathbf{v}为其分布,可取标准正态或球均匀分布等。

Neural ODE

ResNet
ODENet
ResNet 作为常微分方程的 Euler 离散化
NeuralODE : Continuous Normalizing Flows (CNFs) Flow Matching objective
score matching -> flow matching(Lipman et al. 2022)

使用神经网络参数化隐藏状态的导数,而不是如往常那样直接参数化隐藏状态。这里参数化隐藏状态的导数就类似构建了连续性的层级与参数,而不再是离散的层级。因此参数也是一个连续的空间,我们不需要再分层传播梯度与更新参数。理论上,使用 ODE 求解器能够根据给定的误差容忍度选择适当的步长逼近真实解。ODE 求解器并不总是有效。

前向过程:ODE Solver torchdiffeq
反向过程:

Neural ODE,这个世界终究是连续的
神经网络常微分方程 (Neural ODEs) 解析
https://jiangsiyuan.com/2019/03/20/Neural ODE/

https://julialang.org/blog/2019/01/fluxdiffeq/#what_is_the_neural_ordinary_differential_equation_ode

Neural SDE

基于ODENet的标准化流
Neural Networks with Cheap Differential Operators
通过简单地改变 ResNet 的归一化机制就可以构建可逆 ResNet。

扩散概率模型DPM

概率扩散模型由Sohl-Dickstein等人于2015年提出,之后DDPM借助重参数化技巧有效简化了模型的训练,实现了真正的突破。如上图所示扩散模型包含由数据到隐变量的前向扩散和由隐变量到数据的反向扩散。其中前向扩散过程为马尔科夫过程,q(xtxt1)q(x_t|x_{t-1})取预设的高斯分布(或二项分布),并通过参数βt[0,1]\beta_t\in[0,1]控制噪声水平。对高斯扩散:

q(xtxt1)=N(xt;1βtxt1,βtI)q(x_t|x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t}x_{t-1}, \beta_t I)

即给定xt1x_{t-1}xtx_t分布服从q(xtxt1)q(x_t|x_{t-1}),噪声正比于βt\beta_t,而数据会归一化至到[-1,1],与噪声同量级。事实上可对xtx_t重参数化xt=1βtxt1+βtϵt1x_t = \sqrt{1-\beta_t}x_{t-1} + \sqrt{\beta_t}\epsilon_{t-1}ϵt1\epsilon_{t-1}为标准正态分布。利用高斯随机变量的缩放求和性质递推到x0x_0有:

xt=αtx0+1αtϵ,ϵN(0,I)x_t = \sqrt{\alpha_t}x_0 + \sqrt{1- \alpha_t}\epsilon, \epsilon \sim \mathcal{N}(0, I)

其中αt=s=1t(1βs)\alpha_t = \prod_{s=1}^t (1-\beta_s)。即对于任意分布的训练数据,给定样本x0x_0情况下,经高斯扩散得到的xtx_t均服从高斯分布q(xtx0)=N(xt;αtx0,(1αt)I)q(x_t|x_0) = \mathcal{N}\big(x_t; \sqrt{\alpha_t}x_0, (1-\alpha_t)I\big)。对任意βt[0,1]\beta_t\in[0,1],随扩散步增加,xtx_t都趋向于标准正态分布,βt\beta_t越大“扩散”越快。βt\beta_t可由模型学习,但更常见的是作为超参数,随扩散进行逐步增大β1<β2<...<βT\beta_1 < \beta_2 < ... < \beta_T,即最开始引入噪声时相对谨慎,以免过早破坏输入,而当数据接近纯噪声时,则可加快进度。
模型目标是对反向的马尔科夫过程建模(生成网络),实现数据的重构。实践中,网络结构通常采用U-Net,且参数在所有扩散步间共享,通过额外的时间向量(time embedding)指示当前扩散步数。此外在训练时,对于各扩散步DDPM并未按顺序逐个计算,而是直接随机采样,训练完成后的生成过程才依次反向扩散。

DPM

关于目标函数(似然函数)的具体推导可参考Sohl-Dickstein et al. (2015)

L=Expdata logpmodel(x)=Ex0q(x0) logpmodel(x0)=Ex0q(x0)logp(x0,...,xT)dx1...dxT=Ex0q(x0)logq(x1,...,xTx0)p(x0,...,xT)q(x1,...,xTx0)dx1...dxT=Ex0q(x0)logE(x1,...xT)q(x1,...,xTx0)p(x0,...,xT)q(x1,...,xTx0)Ex0q(x0)E(x1,...xT)q(x1,...,xTx0)logp(x0,...,xT)q(x1,...,xTx0)=E(x0,x1,...xT)q(x0,x1,...,xT)logp(x0,...,xT)q(x1,...,xTx0)=E(x0,x1,...xT)q(x0,x1,...,xT)[logp(xT)+t=1Tlogp(xt1xt)q(xtxt1)]\begin{aligned} \mathcal{L} &= \mathbb{E}_{\bm{x}\sim p_\text{data}} ~ \log p_\text{model}(\bm{x}) =\mathbb{E}_{x_0\sim q(x_0)} ~ \log p_\text{model}(x_0)\\ &= \mathbb{E}_{x_0\sim q(x_0)} \log \int p(x_0, ..., x_T) d x_1 ... d x_T\\ &= \mathbb{E}_{x_0\sim q(x_0)} \log \int q(x_1, ..., x_T|x_0) \frac{p(x_0, ..., x_T)}{q(x_1, ..., x_T|x_0)} d x_1 ... d x_T\\ &= \mathbb{E}_{x_0\sim q(x_0)} \log \mathbb{E}_{(x_1, ... x_T)\sim q(x_1, ..., x_T|x_0)} \frac{p(x_0, ..., x_T)}{q(x_1, ..., x_T|x_0)} \\ &\ge \mathbb{E}_{x_0\sim q(x_0)} \mathbb{E}_{(x_1, ... x_T)\sim q(x_1, ..., x_T|x_0)} \log \frac{p(x_0, ..., x_T)}{q(x_1, ..., x_T|x_0)} \\ &= \mathbb{E}_{(x_0, x_1, ... x_T)\sim q(x_0, x_1, ..., x_T)} \log \frac{p(x_0, ..., x_T)}{q(x_1, ..., x_T|x_0)} \\ &= \mathbb{E}_{(x_0, x_1, ... x_T)\sim q(x_0, x_1, ..., x_T)} \left[ \log p(x_T) + \sum_{t=1}^T \log \frac{p(x_{t-1}|x_t)}{q(x_t|x_{t-1})}\right] \end{aligned}

上式需要对整个联合分布q(x0,...,xT)q(x_0, ..., x_T)求期望,显然是不现实的。考虑到前向扩散过程是马尔科夫过程,结合贝叶斯定理

q(xtxt1)=q(xtxt1,x0)=q(xt1xt,x0)q(xtx0)q(xt1x0)q(x_t|x_{t-1}) = q(x_t|x_{t-1}, x_0) = \frac{q(x_{t-1}|x_t, x_0) q(x_t|x_0)}{q(x_{t-1}|x_0)}

从而似然函数的下界可进一步展开为:

Eq(x0,...,xT)[logp(xT)+t=2Tlogp(xt1xt)q(xt1xt,x0)q(xt1x0)q(xtx0)+logp(x0x1)q(x1x0)]=Eq(x0,...,xT)[logp(xT)+t=2Tlogp(xt1xt)q(xt1xt,x0)+logq(x1x0)q(xTx0)+logp(x0x1)q(x1x0)]=Eq(x0,...,xT)[logp(xT)q(xTx0)+t=2Tlogp(xt1xt)q(xt1xt,x0)+logp(x0x1)]=q(x0,xT)logp(xT)q(xTx0)dx0dxT+q(x0,x1)logp(x0x1)dx0dx1+t=2Tq(x0,xt1,xt)logp(xt1xt)q(xt1xt,x0)dx0dxt1dxt= Eq(x0)DKL(q(xTx0)p(xT))+Eq(x0,x1)logp(x0x1)t=2TEq(x0,xt)DKL(q(xt1xt,x0)p(xt1xt))=   LT+L0+t=2TLt1\begin{aligned} &\mathbb{E}_{q(x_0, ..., x_T)} \left[ \log p(x_T) + \sum_{t=2}^T \log \frac{p(x_{t-1}|x_t)}{q(x_{t-1}|x_{t}, x_0)} \frac{q(x_{t-1}|x_0)}{q(x_t|x_0)} + \log \frac{p(x_0|x_1)}{q(x_1|x_0)} \right]\\ =&\mathbb{E}_{q(x_0, ..., x_T)} \left[ \log p(x_T) + \sum_{t=2}^T \log \frac{p(x_{t-1}|x_t)}{q(x_{t-1}|x_{t}, x_0)} + \log \frac{q(x_1|x_0)}{q(x_T|x_0)} + \log \frac{p(x_0|x_1)}{q(x_1|x_0)} \right]\\ =&\mathbb{E}_{q(x_0, ..., x_T)} \left[ \log \frac{p(x_T)}{q(x_T|x_0)} + \sum_{t=2}^T \log \frac{p(x_{t-1}|x_t)}{q(x_{t-1}|x_{t}, x_0)} + \log p(x_0|x_1) \right]\\ =&\int q(x_0, x_T)\log \frac{p(x_T)}{q(x_T|x_0)} dx_0 dx_T + \int q(x_0, x_1) \log p(x_0|x_1) dx_0 dx_1 \\ & + \sum_{t=2}^T \int q(x_0, x_{t-1}, x_t) \log \frac{p(x_{t-1}|x_t)}{q(x_{t-1}|x_{t}, x_0)} dx_0 dx_{t-1} dx_t \\ =&~ -\mathbb{E}_{q(x_0)} D_{KL} \Big(q(x_T|x_0) \Big\| p(x_T) \Big) + \mathbb{E}_{q(x_0, x_1)} \log p(x_0|x_1)\\ &- \sum_{t=2}^T \mathbb{E}_{q(x_0, x_t)} D_{KL} \Big(q(x_{t-1}|x_{t}, x_0) \Big\| p(x_{t-1}|x_t) \Big)\\ =& ~~~ L_T + L_0 + \sum_{t=2}^T L_{t-1} \end{aligned}

上式中p(xT)p(x_T)对应隐变量z\bm{z}的分布,为标准正态分布,p(xt1xt)p(x_{t-1}|x_t)为反向扩散过程中模型(神经网络)的预测。考虑到前向过程为预设的马尔科夫过程,给定数据x0x_0q(x0)q(x_0)为数据分布,q(x0,xt)q(x_0, x_t)可由前向过程得到,q(xt1xt,x0)q(x_{t-1}|x_t, x_0)同样可解析求解(具体推导参考Lil’Log),从而上述似然函数下界是可解的。

q(xt1xt,x0)=q(xtxt1)q(xt1x0)q(xtx0)=N(xt1;μ(xt,x0),β~tI)q(x_{t-1}|x_t, x_0) = q(x_t|x_{t-1}) \frac{q(x_{t-1}|x_0)}{q(x_t|x_0)} = \mathcal{N}(x_{t-1}; \mu(x_t, x_0), \tilde{\beta}_tI)

μ(xt,x0)=1βt(1αt1)1αtxt+αt1βt1αtx0,   β~t=1αt11αtβt\mu(x_t, x_0) = \frac{\sqrt{1-\beta_t}(1-\alpha_{t-1}) }{1-\alpha_t}x_t + \frac{\sqrt{\alpha_{t-1}}\beta_t}{1-\alpha_t}x_0, ~~~ \tilde{\beta}_t = \frac{1-\alpha_{t-1}}{1-\alpha_t}\beta_t

事实上,βt\beta_t设为超参数时,q(xTx0)q(x_T|x_0)取值固定,上式中第一项LTL_T为常数,在模型优化(梯度下降)时可以忽略。L0L_0为输入数据分布与重构数据分布的交叉熵,训练时[0, 255]的像素值被归一化为[-1, 1],为计算交叉熵时可将[-1, 1]划分255个区间,计算真实像素值所在区间的概率值作为预测概率。最后,Lt1L_{t-1}同样可简化,可以证明,对于连续(β\beta足够小)的高斯扩散过程,反向扩散与正向扩散具有相同的函数形式,即p(xt1xt)p(x_{t-1}|x_t)也是高斯分布,DDPM中β1=104,βT=0.02\beta_1=10^{-4}, \beta_T=0.02Lt1L_{t-1}作为两个高斯分布间的KL散度,是有解析表达式的,无需通过采样估算,具体参考前面的VAE。至此,Sohl-Dickstein et al. (2015)中所构建的概率扩散模型框架已完成。

DDPM

DDPM的主要贡献是通过重参数化,将对(条件)分布均值方差的预测转化为对噪声的预测,因此名为去噪DPM。文章中选择固定方差Σt=σt2I\Sigma_t = \sigma^2_t I,仅考虑对均值建模,其中σt2\sigma^2_t可取正向扩散的βt\beta_tβ~t\tilde{\beta}_t,影响不大。此时p(xt1xt)=N(xt1;μ~(xt,t;θ),σt2I)p(x_{t-1}|x_t) = \mathcal{N}(x_{t-1}; \tilde{\mu}(x_t, t; \bm{\theta}), \sigma_t^2 I)Lt1L_{t-1}可进一步简化为:

Lt1=Eq(x0,xt)[12σt2μ(xt,x0)μ~(xt,t;θ)2]+CL_{t-1} = \mathbb{E}_{q(x_0, x_t)} \left[ \frac{1}{2\sigma^2_t} \left\|\mu(x_t, x_0) - \tilde{\mu}(x_t, t; \bm{\theta})\right\|^2\right] + C

其中μ(xt,x0)\mu(x_t, x_0)为分布q(xt1xt,x0)q(x_{t-1}|x_t,x_0)的均值,μ~(xt,t;θ)\tilde{\mu}(x_t, t; \bm{\theta})为预测分布p(xt1xt)p(x_{t-1}|x_t)的均值。前面已指出,前向扩散xtx_t可重参数为xt(x0,ϵ)=αtx0+1αtϵ,  ϵN(0,I)x_t(x_0, \epsilon) = \sqrt{\alpha_t}x_0 + \sqrt{1-\alpha_t}\epsilon, ~~\epsilon \sim \small\mathcal{N}(0, I),反向扩散可类似的重参数xt(x~0,ϵ~)=αtx~0+1αtϵ~(xt,t;θ)x_t(\tilde{x}_0, \tilde{\epsilon}) = \sqrt{\alpha_t}\tilde{x}_0 + \sqrt{1-\alpha_t}\tilde{\epsilon}(x_t, t; \bm{\theta}),这里x~0\tilde{x}_0为反向扩散过程对x0x_0的预测,ϵ~(xt,t;θ)\tilde{\epsilon}(x_t, t; \bm{\theta})为对噪声项ϵ\epsilon的预测。考虑到正反扩散过程xtx_t一致,将x0,x~0x_0, \tilde{x}_0xtx_t表示,代入μ(xt,x0)\mu(x_t, x_0)的解析表达式,有:

μ(xt,x0)=11βt(xtβt1αtϵ)μ~(xt,t;θ)=11βt(xtβt1αtϵ~(xt,t;θ))\begin{aligned} \mu(x_t, x_0) &= \frac{1}{\sqrt{1-\beta_t}}(x_t - \frac{\beta_t}{\sqrt{1-\alpha_t} }\epsilon)\\ \tilde{\mu}(x_t, t; \bm{\theta}) &= \frac{1}{\sqrt{1-\beta_t}}(x_t - \frac{\beta_t}{\sqrt{1-\alpha_t} }\tilde{\epsilon}(x_t, t; \bm{\theta})) \end{aligned}

其中xtx_t项在正反扩散过程中是一致的,从而Lt1L_{t-1}可抵消为对噪声项ϵ\epsilon的预测偏差:

Lt1=Ex0,ϵ[βt22σt2(1βt)(1αt)ϵϵ~(xt(x0,ϵ),t;θ)2]+CL_{t-1} = \mathbb{E}_{x_0, \epsilon} \left[ \frac{\beta^2_t}{2\sigma_t^2 (1-\beta_t)(1-\alpha_t)} \left\|\epsilon - \tilde{\epsilon}\big(x_t(x_0, \epsilon), t; \bm{\theta}\big)\right\|^2 \right] + C

最终目标函数的核心为:

L=Ex0q(x0),ϵN(0,I)ϵϵ~(xt(x0,ϵ),t;θ)2\boxed{L = \mathbb{E}_{x_0 \sim q(x_0), \epsilon\sim\tiny \mathcal{N}(0,I)} \left\|\epsilon - \tilde{\epsilon}\big(x_t(x_0, \epsilon), t; \bm{\theta}\big)\right\|^2 }

DDPM的训练过程可简单概括为:

  • 对数据x0x_0、训练步tUniform({1,...,T})t\sim \small \text{Uniform}(\{1, ..., T\})ϵN(0,I)\epsilon\sim \small \mathcal{N}(0,I)分别采样,计算梯度,对参数进行梯度下降

θϵϵ~(xt(x0,ϵ),t;θ)2\nabla_\bm{\theta} \left\|\epsilon - \tilde{\epsilon}\big(x_t(x_0, \epsilon), t; \bm{\theta}\big)\right\|^2

生成过程需由xTx_T开始依次向前扩散:

  • xTN(0,I)x_T \sim \small \mathcal{N}(0, I)采样得到xTx_T
  • 反向扩散:给定xtx_t,对p(xt1xt)p(x_{t-1}|x_t)采样得到xt1x_{t-1}t=T,...,1t = T, ..., 1

    xt1=11βt(xtβt1αtϵ~(xt,t;θ))+σtεx_{t-1} = \frac{1}{\sqrt{1-\beta_t}}\left(x_t - \frac{\beta_t}{\sqrt{1-\alpha_t}} \tilde{\epsilon}(x_t, t; \bm{\theta}) \right) + \sigma_t \varepsilon

    t>1t>1时,εN(0,I)\varepsilon \sim \small \mathcal{N}(0, I),而最终输出x0(t=1)x_0(t=1)时,ε=0\varepsilon=0

Improved

DDIM

Improved DDPM

LDM
隐扩散模型(Latent Diffusion Model)也就是常说的稳定扩散(Stable Diffusion)。相比最初的DDPM,隐扩散模型主要区别在于:1.图像经编码器处理,扩散过程在隐空间中进行;2.引入控制条件τθ(y)\tau_\bm{\theta}(y)

L=Ex, y, ϵϵϵ~(zt(z,ϵ),τθ(y),t;θ)2\boxed{L = \mathbb{E}_{x, ~y,~ \epsilon} \left\|\epsilon - \tilde{\epsilon}\big(z_t(z, \epsilon), \tau_\bm{\theta}(y), t ; \bm{\theta}\big)\right\|^2 }

https://en.wikipedia.org/wiki/Diffusion_model
2015 Deep Unsupervised Learning using Nonequilibrium Thermodynamics
2020 Denoising Diffusion Probabilistic Models

SDE视角下的扩散模型
更多的还是提供了很多神经网络结构的数学框架,实践上似乎没有代表性的模型??

GflowNets

探索(exploration)和开发(exploitation)
把采样问题转化为一系列决策过程
马尔可夫决策过程

Wasserstein GAN
Read-through: Wasserstein GAN
令人拍案叫绝的Wasserstein GAN
扩散模型之DDPM
https://www.thepaper.cn/newsDetail_forward_8089082