笔记 stochastic backpropagation and approximate inference in deep generative models
该算法将深度神经网络跟贝叶斯估计结合得到了一类更普遍的深度、有向生成模型并提出了一种对应的估计算法。该算法介绍了一种识别模型去表示后验分布的估计,并用该模型去优化变分下界。他们采用了随机回溯的方法来更新随机变量的梯度,并提出了一种同时优化生成模型和识别模型的算法。并证明了对于实测数据,采用随机回溯和变分估计的方法,可以产生重新生成样本数据,有助于提高数据缺失情况下的准确率,并且提供了一个高维数据可视化的有效的工具。
在机器学习和统计中提高准去率和数据的概率模型的尺度有一个巨大的功效。有些模型需要给予一个概率的解释,例如,预测模型,数据缺失,不确定性评估 最近发展生成模型的重点转移到了有向模型中,因为通过生成过程可以很容易的采样得到样本。尽管有向模型例如HMM、belief network等可以很简单的实现采样,但是很多情况下有效的估计算法还是很那实现的。正因如此,再加上我们需要更精确概率估计很更快速地模拟,于是需要寻找一种新的生成模型:1,deep,分层的结构可以更好地去描述一个复杂的数据;2,可以快速采样;3,对于高维的数据是可以计算的并且易于拓展的。
为实现这些,我们介绍了一类深度的,有向的,每层采用高斯隐含变量的生成模型。为了可以有效的可行的实现参数估计,我们运用了一个对数据扮演着随机编码的角色的识别模型来实现对隐变量后验的近似估计。对与生成模型,我们用优化的方法求解目标函数;对于识别模型,我们利用了最近在深度学习一些发现来刻画它的结构和正则项。运用这种结构,我们可以运用一种规范的梯度回溯的方法来训练整个模型——同时优化生成模型和识别模型的参数。
本文的贡献:
1. 将深度神经网络和隐变量概率模型结合得到了一类深度、非线性隐含高斯模型。
2. 提出了一种新的方法来解决可伸缩变分估计(scalable variational inference)问题,就是
同时优化变分参数和模型参数——利用隐含高斯分布的性质和梯度回溯。
3. 对模型进行了一个综合的系统的分析,证明了他可以应用到仿真、可视化、预测、数据
缺失等情况下。
深度隐含高斯模型(Deep Latent Gaussian Models)
深度隐含高斯模型是一类一般的深度有向图模型,它每一层(layer)都是分层(hierarchy)的的高斯隐变量。
假设该模型总计有L层,为了生成样本,我们先从最高层L层采样,下面的每一个激活层hl
由上一层hl?1经过一个非线性映射并加上高斯扰动后得到的,最后的可观测层是由h1层激活后的似然函数中采样得到。这就是生成过程(generative process)
这个过程可以这样描述:
?l~N(?l|0,I)hL?GL?Lhl?Tl(hl?1)?Gl?lv~?(v|T0(h1))
?l是相互独立的高斯变量,Tl表示多层感知(MLP),在可视层我们用一个适当的分布?(v|·)来得到。我们将所有的生成过程的参数都叫做?g,例如映射T的过程,矩阵G的参数等。我们对?g给定了一个很弱的高斯先验,p(?g)?N(?|0,?I),?通常很小。联合概率分布的模型可以用两种不同的等价的形式表示出来:
p(v,h)?p(v|h1,?)p(hL|?)p(?)?p(hl|hl?1,?g)gggl?1L?1p(v,?)?p(v|h1(?1...L),?g)p(?g)?N(?|0,I)l?1L
第一种表示可以理解为对DLGM网络的描述。
黑色箭头表示前向采样过程:其中实线表示propagation of deterministic activations;虚线表示propagation of samples。 红线表示沿梯度反向传播过程:实线表示是deterministic backpropagation ,虚线表示随机backpropagation)
bp(stochastic
第二种表示可以理解为对一个球形的随机变量族的一个变换,是变换后的结果尽可能跟经验分布近似。
DLGM可以具体到很多一般的模型,例如果只有一层,而且是线性映射的时候,我们可以得到的是一个FA模型。
stochastic backpropagation
在变分模型中梯度下降的应用就是计算??Eq?[f(?)],这里的期望是对分布q?(?)求得的,
f(?)是损失函数,在这里我们假设它是可积分平滑的(integrable and smooth)。但是有很多
原因导致这个导数是不能直接求,例如:1,很多情况的期望是不知道的;2,there is an indirect dependency on the parameters of q over which the expectation is taken.
现在证明了一种有效的利用了计算随机变量的特殊性质方法。我们把这种计算技巧叫做随机回溯法(stochastic backpropagation)。
高斯回溯法(gaussian backpropagation,GBP)
q是一个K维的高斯分布N(?|?,C),对他的梯度求解可运用高斯梯度等式:??iEN(?|?,C)[f(?)]?EN(?|?,C)[??if(?)]?Ci,jEN(?|?,C)[f(?)]?1EN(?|?,C)[?2f(?)]?i,?j2
假设均值?和协方差C都是依赖于?的,现在我们可以写出一个一般化的高斯梯度表示:
??EN(?|?,C)[f(?)]?EN(?|?,C)[gT??1?C?Tr(H)] ??2??。 g和H表示函数f(?)对均值和协方差的偏导(gradient and Hessian of the function f(?))上面的式子可以看做是考虑到均值和协方差的反向传播,当C是一个常数时,就简化成了一个标准的反向传播。不幸的是要计算海森矩阵需要一个O(K3)的计算复杂度。
广义方向传播方法(generalised backpropagation rules)
我们介绍了两种非高斯分布的反向传播计算方法。 1 using the product rule for integrals
对于很多指数族分布来说,我们可以找到一个函数B(?,?)使得下面的式子成立。
??Ep(?|?)[f(?)]??Ep(?|?)????[B(?,?)f(?)]??
那是因为,我们将对分布参数的梯度用随机变量的梯度表示了,这种方法可以用在很多分布上,例如:高斯分布,逆伽马分布,log-normal等。 2 using suitable co-ordinate transformations
我们可以对任何那些可以用标准基本分布经过一个平滑的可逆的变换的得到的分布来derive stochastic backpropagation rules。例如,对于任何高斯分布N(?,C)我们可以认为他是由一个标准正态分布?~N(0,I)经过一个变换:y???R?,其中C?RRT得到。对R的梯
T度就可以写成:?REN(?,C)?f(?)???REN(0,I)?f(??R?)??EN(0,I)???g??
scalable inference in DLGMs
我们用矩阵V去表示一个数据集,他表示一个维数为N?D的观测数据,N表示样本数,D表示每个样本的维度。
如果我们要用inference的方法来求解DLGMs的话,我们需要计算到每一个隐变量边界似然,这就需要用积分的方法来求。但是,一般情况下,积分的求解是行不通的,于是我们可以用优化边界似然下界的方法来近似求解。我们通过引入一个分布来近似后验分布,然后运用Jenson's inequality,于是得到:
L(V)??log(V)??log?p(V|?,?g)p(?,?g)d???log?q(?)p(V|?,?g)p(?,?g)d?q(?)
gg?F(V)?DKL?q(?)||p(?)??Eq??logp(V|?,?)p(?)??该式总共包括两部分:第一部分是变分估计分布与先验分布的差异,我们可以称作是正则项;
第二部分是重构损失。
我们采用了一个特殊的分布来估计后验,q(?|V)——在观测数据下的条件分布。 这个分布是一个有向的非循环图模型,每一个节点是一个高斯分布,是由它的父亲节点经过线性非线性映射得到的。因此联合分布是非高斯的,但是随机方向传播依然可用。 为了简单,我们用一个q(?|V),它的每一层都是高斯分布,层与层之间不需要,这样q(?|V)就可以分解成:q(?|V,?)???N??n,l|?l(vn),Cl(vn)?
gn?1l?1NL这里的?l(vn)和Cl(vn)是由一个深度神经网络(DNN)映射得到的。q分布的参数我们用?r表示。(r means recognition)
之前我们得到了边界似然函数的上届表示函数,为:
ggF(V)?DKL?q(?)||p(?)??Eq??logp(V|?,?)p(?)??
将分布带入后得到:
2F(V)?1/2???||?nl||?Tr?Cnl??log|Cnl|-1????Eq??logp?vn|h??n?????n,ln1||?g||2 2?这跟之前的vi的区别是我们用一个条件分布来表示近似后验,q(?|V)。我们称它为识别模型。
好处:训练时收敛迅速,测试时inference faster。 梯度求解:
我们需要对模型参数?g,?r求偏导,我而且还要对变分参数?,C求偏导。
对生成模型参数?g求偏导为:1g???gF?V?=-Eq??logp(V|h)??g??j??j??对识别模型参数?r求偏导,我们用到了之前的高斯反向传播方法。用到的是coordinatetransformation的方式。具体为:
1. 限度均值和方差分别求偏导,
??lF(v)??Eq????llogp(v|h(?))????l??Rl,i,jF(v)??1/2Eq??Tr(Cn,l)?log|Cn,l|????l,j??l,ilogp(v|h(?))??1/2?Rl,i,j?2. 然后,计算?r的偏导,
??rF?v?=??F?v?T???R??TR?Fv???R??r??r??? ?