因为前两天要作小组汇报,怕讲不清,所以干脆细细翻译一遍,也是初学者,挂一漏万,大家指正。
生成式神经采样器是用前馈神经网络来实现采样的概率模型。它得到一个随机向量的输入,并从由网络权重定义的概率模型中输出一个样本。这些模型很有表现力,允许高效的样本和微分运算,但是不能用于计算似然或边缘化。生成式对抗训练方法可以通过运用一个起辅助作用的判别神经网络来训练生成模型。我们展示了生成对抗过程只是更普遍的变分散度估计过程的一个特例。我们展示了任何一种f散度都可以用来训练生成式神经采样器。我们讨论了多种可选的散度函数在训练复杂度和获得的生成模型质量上的优缺点。
Introduction
概率生成模型描述了一个在给定定义域X上的概率分布。例如,在自然语言段落,自然图像,或记录波形上的分布。
在一族概率模型Q~中给出一个生成式模型Q,我们一般对执行以下一个或几个步骤比较有兴趣。
采样:从Q中产出一个样本,通过检查样本或计算在一些样本上的函数,我们可以得到对该分布重要的洞察力或者解决分布问题。
估计:给定一个未知参数的真实分布P中独立同分布的样本集{x1,x2…xn},在Q~中找到一个可以最好描述真实分布的Q。
逐点似然估计:给定一个样本x,估计Q(x)的可能性。
文献[10]中提出的GAN是一类可以精密采样和适当估计的有表现力的生成模型。GAN中用到的模型只是一个前馈神经网络。这个神经网络接收采样到的随机数字向量作为输入,例如说从均匀分布采样。这个随机输入在网络中穿过每一层,最后一层产出了需要的输出,例如说一张图片。显然的,从GAN模型中采样是很有效的,因为产出一个确切的样本只需要前传网络一次。
这样的概率前传神经网络模型第一次在[22]和[3]中被提出,我们把这些模型叫做生成式神经采样器。GAN也是这一类的,虽然它有着一个VAE的解码器模型。
在GAN的原始论文里,作者展示了用适当的最小化对称的JS散度来估计神经采样器的可能性。
公式(1)
在这里,DKL表示KL散度。GAN训练中用到的关键技术是引入了第二个神经网络——“判别器”,来和生成采样器同时优化。因为JS散度是一个合适的衡量分布距离的散度,所以,只要有足够的训练样本,模型族Q~又足够用来表示P,真实分布P就可以被很恰当的表示。
在这次的工作中,我们展示了GAN的原理可以更普遍。我们可以扩展Nguyen提出的变分散度估计框架[25]来重新获得GAN的训练目标并将其扩展到任意f-散度
更具体的来说,我们在当前技术水平下做出了如下贡献:
我们对所有f散度都派生出了GAN的训练目标函数,同时提供了附加的散度函数作为例子,包括KL散度和Pearson卡方分布。
我们简化了 Good fellow 的鞍点优化过程并提供理论证明。
我们通过实验观察,提出最适合估计生成自然图片的神经采样器的散度函数。
Method
我们首先回顾了 Nguyen 基于f-散度的散度估计框架。接着把这个框架从分布估计扩展到了模型估计。
2.1 f-散度函数族
统计学领域里的散度,例如尽人皆知的KL散度,用来衡量两个给定的概率分布的不同。有一大类不同的散度被统称为f-散度,也叫Ali- Silvey距离。给定两个分布P和Q,分别拥有一个严格连续的密度函数p和q,关于一个定义在定义域X上的基础衡量dx,我们定义了f-散度。
公式(2)
在这里,生成器函数f:从R+映射到R,是一个满足f(1) = 0的下半连续的凸函数。对f的不同选择会得到更普遍的散度,正如在[2]中的特殊情况那样。我们在表1中举了常见的例子。在补充材料中查看更多散度和图像。
2.2 f-散度的变分估计
Nguyen 导出了一个在仅仅给定来自P和Q的样本时估计f-散度的变分方法。[28]也提出了等价的结果。我们将扩展这些结果从仅仅为一个固定的模型估计散度,到估计模型参数。我们称这种新方法VDM,变分散度最小化。便且展示了生成式对抗训练过程只是VDM框架的一个特例。
为了完整性,我们首先提供一个Nguyen的散度估计过程的独立导出。每个凸的,下半连续的的函数f都有一个凸的共轭函数f* ,也被叫做Fenchel conjugate [15],这个函数定义如下:
公式(3)
函数f*也是凸的且下半连续的,函数对(f,f*)是双向的,即f** =f。因此,我们也可以用f(u)来代表f。Nguyen利用上面在f-散度的定义中对f的变分表示来获得一个下界。
公式(4)
在这里,t可以是任意类从X映射到R的函数。上述的推导得到了一个下界,因为函数类t中可能只包含一个所有可能函数的子集。得到公式4中的下界后,我们发现对f散度,在不太严格的条件下,这个下界接近于
公式(5)
[25]
在这里f’代表f的一阶导数。这个条件可以为选择f和设计函数t提供一条指导原则。例如,流行的reverse KL散度就符合这个条件,详见表1。
我们在表1中列出了常见的f散度,并在表2中提供了他们的f*和f*的定义域。在附录中提供了生成函数和它们的共轭。
2.3 变分散度最小化
我们现在使用f-散度Df(P||Q)的变分下限来在给定真实分布P的情况下估计生成模型Q。
我们始终遵循生成对抗方法[10]并运用两个神经网络,Q和T。Q是我们的生成模型,把随机向量作为输入并输出一个interest 的样本。我们把Q用向量θ来参数化,记作Qθ。T是我们的变分函数,输入一个样本,返回一个标量。我们用ω来参数化T,记作Tω。
我们可以通过寻找如下f-GAN目标函数的鞍点来训练生成模型Qθ,在这里,我们关于θ最小,且关于ω最大。
公式(6)
为了在给定的有限数据集上进行优化,我们用小批量样本集来拟合预期。为了拟合ExP[],我们在训练集上无放回的取样B个实例,为了拟合ExQθ,我们从当前生成模型Qθ中取样B个实例。
2.4 变分函数的表示
为了对不同的f散度应用公式6这个变分目的函数,我们需要替换共轭函数f*的定义域dom f*。为了这个目的,我们假设变分函数Tw由表达式Tw(x) = gf(Vw(x))来表示,并把公式(6)重写成如下形式:
公式(7)
在这里,Vw由X域映射到R域,在输出上没有任何限制。Gf则由R映射到dom f*,是一个用f-散度进行的输出激活函数。在表2中,我们为不同的共轭函数f*和它们的定义域分别
提出了合适的输出激活函数。虽然gf的选择差不多是任意的,但我们还是全都选用了单调递增函数,以便一个非常大的输出Vw(x)符合变分函数像GAN一样从数据分布P中采样出x的信念。考虑到鞍目标(7)中的第二项-f*(gf(v))也是有好处的。这一项成了一个典型的关于输出Vw(x)的递减函数。且支持变分函数在面对生成器生成的样本时输出负值。
我们可以看看GAN的目标函数
公式(8)
在确认(7)和(8)中每一项的期望后就成为一个(7)的特例。尤其是,选择sigmoid作为判别器最后的非线性单元,和输出激活函数gf(v) = -log(1+e-v)一致。
2.5 举例:单变量高斯混合
为了证明不同f-散度的性质和检验变分散度估计框架,我们展示了一个和[24]很像的实验。
安装。
我们通过学习高斯分布拟合了一个高斯混合。我们用一个接收随机标准正态分布的线性函数Qθ,并输出一个Gθ(z),在这里θ = (μ,σ)是两个需要学习得到的标量参数。对于变分函数Tw,我们用一个两层隐藏层,每层有64个单元和tanh激活函数的神经网络。我们用单步梯度下降算法来优化目标函数F(w,θ)。每一步中,我们从p(x)和p(z)中各采样1024为一个batch,步长η设为0.01,来更新w和θ。我们比较了由Df(P||Qθ)关于θ的现存优化提供的最佳拟合结果,在这种情况下是可行的,可以通过数值的解(2)中要求的积分来实现。我们用学习到的(w hat,θhat)和θ*(best fit)来辨别在两个过程中用到的参数集。
结果:
表3的左侧部分展示了最优散度和目标值Df(P||Qθ)和F(w hat,θhat)和相应的(最优的)均值和标准差一样。注意到结果和下界属性相一致,有如下性质:Df(P||Qθ)>=F(w hat,θ hat)。目标函数之间的差异和合适均值与标准差之间有很好的一致性。表3的右侧展示了如下的实验结果:1)我们用一个特别的散度来训练Tw和Qθ。 2)我们估计散度,保持Qθ固定,并重新训练Tw。不出所料,Qθ在它被训练出的散度上表现最好。我们在附加材料里提出了更多的细节和图表还有变分函数。
总之,我们的结果证明了,当生成式模型是错定的时。用来估值的变分函数对哪个模型被训练具有很大的影响。
3. 变分散度最小化算法
我们接下来讨论寻找目标函数(6)的鞍点的数值方法。为了这个目的,我们分成两种方法。第一种,被Goodfellow提出的原有的交替方法。第二种,更直接的单步优化过程。
在我们的变分框架中,交替梯度方法可以看作一个双重循环的方法。内部的循环收紧三度的下界,外部的循环提高生成模型。这个方法的动机似乎可信,实践中,一个流行的选择是在内层循环进行单步,一个外层迭代要求两次反向传播。Goodfellow保证了一个局部收敛。
3.1 单步梯度方法
受到内层循环只运行一次的交替梯度方法的激励,我们提出了一个更简单的算法,见算法1.这个算法不同于原有的那个,没有内层循环,在一个单独的反向传播中计算关于w和θ的梯度。
Algorithm1
分析
如果在鞍点(θ*,w*)附近邻域,F关于θ严格凸,关于w严格凹,算法1在几何上就收敛于该鞍点。这些条件和[10]中的很像。公式表述如下:
公式(9)
这些假设很重要,不光为了定义鞍点类型的“严格”部分是对我们的变分框架有用的。注意到虽然深度网络的结果可以引起许多鞍点,它们并不都具有通过我们的限制条件来作为我们变分框架的解的资格。
为了方便起见,我们定义πt = (θt,wt)。现在算法1的收敛值可以被阐明如下。
定理1:
假设有一个鞍点π* = (θ*,w*),它有满足条件(9)的邻域。更多的,我们定义了J(π),并假设在上述邻域中,F’连续。所以有一个常量L来满足“ ”,对任意在π*邻域中的π和π’成立。接下来用在算法1中使用的步长“ ”我们得到:
“ ”
也就是说,梯度ΔF的二范数以几何方式减少。
3.2 实用性考虑
接下来我们讨论,[10]中提出来的启发式的原则性扩展和被xxx讨论过的真假统计。此外,我们从主要的观点上轻微的脱离,讨论实用性的建议。
[10]已经注意到了,在训练GAN时,可以通过更换一部分内容来加速训练过程。在更宽泛的f-GAN算法中,我们用如下式子更换了算法的第4行。
公式(10)
于是可以在生成样本上让变分函数最大化。这在直觉上是不正确的。但我们可以像GAN一样说明这个被保留下来的改变是有原因的。我们发现这个对其他的散度也有用。我们发现在LSUN数据集等大尺度实验上Adam和梯度剪裁尤其有效。GAN的原始实现中监视确定真实和假统计,被定义为变分函数的真实正概率和真实负概率,可以看作一个二分类器。既然我们的输出激活永远都是单调的,我们可以通过改变临界值来得出任意f-散度的相同分布。由于密度比率和变分函数之间的关联,临界值位于f’(1)。也就是说,我们可以吧变分函数的输出看作对输入x的分类。如果Tw(x)比f’(1)大,说明输入x是一个真实样本,否则就把它分类为一个生成样本。
4.实验
我们接下来在MNIST和LSUN数据集上基于VDM训练生成式神经取样器。
MNIST
我们用MNIST训练集来训练生成器和多种f-散度对应的[10]中提出的变分函数模型。用服从(-1,1)上的均匀分布的100维随机变量z作为输入。生成器模型有两个跟着bn和ReLU激活的线性层和一个带sigmoid的最终线性层。变分函数Vw(x)有三个线性层,两两之间有指数线性单元。对每种散度来说,最终的激活函数是特殊的,我们在表2中列了出来。和[27]一样,我们用Adam,设学习率α = 0.0002和升级权重β = 0.5。用4096的batchsize。从训练集中无替换的采样。训练每个模型1小时。我们同样也在20个隐藏的维度上与VAE进行了比较。
结果和讨论:
我们估计了[10]中应用的核密度估计的方法的表现。最后,我们从模型中采样了16000个数据,估计了一个用三折交叉验证的各向同性高斯核带宽做的Parzen窗估计器。最终的密度模型被用来估计MNIST测试集上的对数平均似然。我们在表4中展示了结果。
在对数似然估计上用核密度估计的缺陷已经众所周知了。尤其是,对MNIST这种维度为784的模型样本,要求获得精确的对数似然估计难度太大。我们在多次重复中发现巨大的变异性。因此这些数据并不是确凿无误的。我们也在MNIST训练集上训练了相同的KDE估计器,获得了显著的更高的似然成都。然而,模型在训练KL散度时获得了比GAN更好的效果,这是值得欣慰的。
LSUN 自然图像
虽然DCGAN的工作已经在生成自然图片方面给出了强有力的回答。我们在这里再用同样的结构,只是用我们更广泛的f-GAN目标函数代替原有的GAN目标函数。
我们用了有不同种类自然图像的LSUN数据集。为了说明说明不同散度的不同行为,我们再教室图像类上训练相同的模型,该数据集包含168103张教室环境的图像,中心切割成96*96的图片。
开始:
我们使用DCGAN提出的生成结构和训练设置。模型接受服从(-1,1)的均匀分布的随机变量z,把它喂给网络。网络包含一个线性层和三个反卷积层,它们之间有bn和ReLU。变分函数和[27]中的判别器结构一样,在该结构后面又跟了一个卷积神经网络,带Bn,指数线性单元和一个最终线性层。
结果:
图3展示了16个分别用GAN KL 平方海灵根散度训练出的随机样本。这三个散度都产生了了同样真实的样本,注意到只有当生成模型不充分时,学到的分布Qθ的差异才会增加。
6 讨论
生成式神经取样器提供了一个有力的途径来表示复杂的分布,而不用采取限制性的简化计算。
文章来源:http://cn.arxiv.org/pdf/1606.00709v1