论文精读 Score-based Generative Model

摘要

基于分数的生成模型是与 DDPM 不同的一个分支。主要介绍宋飏老师提出的 NCSN (Noise Conditional Score Network),模型主要基于分数匹配朗之万动力学采样,以及训练时的加噪策略。

论文:Generative Modeling by Estimating Gradients of the Data Distribution

分数函数及郎之万动力学采样

首先定义 Stein Score:。如图 19 (a) 所示,分数本质上是对数似然的梯度,表征了如何移向数据空间最大似然的方向,在似然较大的位置梯度较小,而在最大似然处的梯度为 0。分数函数 可以用来表征一个概率分布,使用参数 建模。

注意 Stein 分数和最大似然的区别。Stein 分数是对 x 求导,而最大似然 是对参数 求导。换句话说,Stein 分数是已知参数 下,计算最大概率取到的样本 x ;而最大似然则是在给定样本 x 下,求分布的参数 最大概率的取值。

为了从分数表征的分布 中采样数据点,可以采用郎之万动力学方法。在数据空间中随机取一个初始点,将其朝着分数函数指示的方向移动,即随机梯度下降过程。迭代此过程最终稳定到似然取到最大位置的附近。此时得到的点 x 就是分布 概率密度局部最大的点,因此可以视为该分布下的一个采样值。随机项的引入是为了采样的多样性。

(降噪)分数匹配

为了对分数函数进行优化,显然目标函数可以直接定义为网络估计出来的分数 和真实分数 的均方误差,希望两者越接近越好。

如果知道真实分布 ,就可以完成损失函数的优化。但并不知道真实分布是什么,于是提出了分数匹配(score matching),该方法可以在未知 的情况下最小化损失函数。分数匹配有很多种处理方式,例如分层分数匹配(Sliced score matching)、降噪分数匹配(Denoising score matching)等。下面详述降噪分数匹配

降噪分数匹配方法中,首先给原始数据添加随机噪声 ,即 ,如此构建了新的分布 。如果加噪很小,可以不破坏原有分布,这个新的分布可以近似认为和原来分布相同,因此可以转化为对这个新的分布估计其分数函数。代入损失函数推导如下:

对上面 85 式使用蒙特卡洛方法取样计算其均值即可计算损失函数。下图所示的模型结构展示了这一过程。

面临的困难

  1. 数据样本集中在嵌入高维空间的低维流形上。说人话就是样本的各个维度并不完全互相独立,即列不满秩。对于 维的图像来说,实际互相独立的可能只有 2000 个维度,反映到分数匹配上就是偏导数理论上有任意解,训练不稳定。
  2. 低概率密度区域的估计不准确。本质上是观测样本数量不足的问题,概率密度低的地方其样本的产生概率也低,此时分数匹配方法对这些区域的拟合和学习就不足,导致预测不准确。
  3. 朗之万采样的缺陷。以高斯混合分布 为例,朗之万采样只能采样到概率密度极大位置,但是不同的概率密度的极大点亦有大小区别,也就是丢失了系数 的信息。另外存在迭代速度慢的问题。

噪声条件分数网络

为了解决上述三个问题,NCSN 通过给数据增加噪声扰动的方式,一方面破坏了原来数据各个维度的相关性,另一方面扩大了数据分布高密度区域的面积。在数据分布上加上高斯噪声后,均值保持不变,方差变大,这会把高密度区域的面积增大,使得更多区域的分数函数被准确估计出来。

具体来说,定义了一个噪声序列,递进式地添加 L 个不同强度的噪声。即 ,其中 ,保证添加的是均值 0 方差 的高斯噪声,即条件概率 。新得到的添加噪声 的分布如下:

注意:采样时只需取 ,然后 ,如此得到的 即满足加噪后的分布。

对于每一个 ,计算其损失函数,用系数 加权得到整体的损失函数。注意这里神经网络拟合的 score 需要 x 和 两个输入,相当于 作为条件控制。注意到这里的 x 是从原始样本加噪生成的,自然想到使用降噪分数匹配方法。

训练得到分数估计值 之后,在采样时,对朗之万方法进行改进,称为退火朗之万算法。从噪声大的一端 开始逐步往噪声小的 迭代采样。后一层采样的初始点是上一层采样的结果。

Reference