问题

考虑一个生成模型(Generative model),可以从一个隐变量(latent variable, z)映射到一张图片(x),用有向无环图模型(directed acyclic graphical model / Bayesian network)表示为
在这里插入图片描述
上图表示,x的分布可以通过首先从p(z)采样得到z后再从p(x|z)采样建模。

  • p(z)先验概率,意味着只需要选择一个合适的分布就可以了,一般采用单位高斯分布(unit Gaussian distribution),因为高斯分布的熵最大。(Paper: Let the prior over the latent variables be the centered isotropic multivariate Gaussian p(z)=N(z;0;I)p(z) = N (z; 0; I)p(z)=N(z;0;I))
  • p(x|z) 用神经网络进行表示p(x∣z;θ)=decoder(z;θ)p(x|z; \theta) = decoder(z; \theta)p(xz;θ)=decoder(z;θ)

此时已经对生成模型建模完毕,接下来为了进行求解,也就是要学习到参数θ\thetaθ。目前,唯一确定的是数据集样本x,当可以得到z→x^z \rightarrow \hat xzx^后,还需要确定x,x^,zx, \hat{x}, zx,x^,z三者之间的对应关系,如下图
在这里插入图片描述
为题转换为:已知一个数据集中的样本x,如何确定对应的隐变量z,也就是求解p(z|x)

因为p(x)=∫p(x∣z)p(z)dzp(x) = \int p(x|z)p(z) dzp(x)=p(xz)p(z)dz不可通过数值计算获得结果,且
p(z∣x)=p(x∣z)p(z)p(x) p(z|x) = \frac{p(x|z)p(z)}{p(x)} p(zx)=p(x)p(xz)p(z)
同样不可数值求解,因此使用近似推断的方法进行求解。近似推断有两大方法:MCMC(马尔可夫蒙特卡洛)和VI(变分推断)法,VAE正是使用了VI得名。

概念

泛函是将自变量函数映射到数值上的函数
变分法求解泛函极值的方法。
散度可以简单的理解为不需要对称性的距离,即不要求从P到Q的值等于从Q到P的值。
KL散度 KL(P(x)∣Q(x))=Ex∼P(x)[log⁡P(x)−log⁡Q(x)]KL(P(x)|Q(x)) = E_{x \sim P(x)}[\log P(x) - \log Q(x)]KL(P(x)Q(x))=ExP(x)[logP(x)logQ(x)]

VI

预设一个关于隐变量的密度函数的集合Q\mathcal{Q}Q,从中找到一个函数Q(z)Q(z)Q(z)使得和p(z∣x)p(z|x)p(zx)的最接近,使用KL散度来衡量
Q∗(z)=arg⁡min⁡Q(z)∈QKL(Q(z)∣P(z∣x))Q^*(z) = \arg \min_{Q(z)\in \mathcal{Q}}KL(Q(z)|P(z|x))Q(z)=argQ(z)QminKL(Q(z)P(zx))

由此,变分推断将一个推断问题转化为了优化问题

(Paper: While there is much freedom in the form q(z∣x)q(z|x)q(zx), we’ll assume the true (but intractable) posterior takes on a approximate Gaussian form with an approximately diagonal covariance)

MD, CSDN的公式编辑好垃圾…先不写了

Logo

GitCode AI社区是一款由 GitCode 团队打造的智能助手,AI大模型社区、提供国内外头部大模型及数据集服务。

更多推荐