VAE——变分自编码器的数学推导

问题

考虑一个生成模型(Generative model),可以从一个隐变量(latent variable, z)映射到一张图片(x),用有向无环图模型(directed acyclic graphical model / Bayesian network)表示为
VAE——变分自编码器的数学推导_第1张图片
上图表示,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 ; θ ) = d e c o d e r ( z ; θ ) p(x|z; \theta) = decoder(z; \theta) p(xz;θ)=decoder(z;θ)

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

因为 p ( x ) = ∫ p ( x ∣ z ) p ( z ) d z p(x) = \int p(x|z)p(z) dz p(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散度 K L ( P ( x ) ∣ Q ( x ) ) = E x ∼ 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 ) ∈ Q K L ( 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的公式编辑好垃圾…先不写了

你可能感兴趣的:(机器学习,机器学习,人工智能)