变分自编码器来自于论文《Auto-Encoding Variational Bayes》,是一种生成式模型,生成式模型的概念在CS229中已经有过介绍了,简单来说,对于一个判别式模型来说,我们希望得到的是 P ( y ∣ x ) P(y|x) P(y∣x),即在给定了样本x的情况下希望得到其输出y的分布(在回归模型里这通常表现为ML求期望如Linear family,在分类模型里这就简单的表示为softamx的输出);而生成式模型的目的则是希望求取 P ( x ∣ y ) P(x|y) P(x∣y),即想要知道输出y是如何产生输入的,常见的生产式模型就比如GDA。VAE作为一个生成式模型,其目的也就是想要得到输出如何得到输入。
在VAE中,我们给定了一个基本的假设,我们的样本x是某些隐变量z(lantent variable)通过某种映射产生的,而z也不是一个固定值,而是服从一个分布的: z ∼ P θ ∗ ( z ) z\sim P_{\theta^*}(z) z∼Pθ∗(z),则 x ∼ P θ ∗ ( x ∣ z ) x \sim P_{\theta^*}(x|z) x∼Pθ∗(x∣z),这里的 P P P是一由参数 θ \theta θ决定的分布族,而 θ ∗ \theta^* θ∗就是我们需要找到的真实分布。所以我们最根本的目标就是确定z和 θ \theta θ的值,这样就能够得到样本x了。
既然我们最想得到的是x的分布,这样通过采样就能直接得到新的X,但得不到这样一个分布,只好退而求其次想要求z和 θ \theta θ的值,这样通过z到x的映射我们同样可以到与x有关的分布:
P θ ( x ) = ∫ P θ ( x ∣ z ) P θ ( z ) P_{\theta}(x)=\int P_{\theta}(x|z)P_{\theta}(z) Pθ(x)=∫Pθ(x∣z)Pθ(z)
但很不凑巧,这个式子是无法求得的,虽然我们可以实施 P θ ( x ∣ z ) P_{\theta}(x|z) Pθ(x∣z)这一过程(通过神经网络),并且对 P ( z ) P(z) P(z)做出假设(如符合高斯分布),但我们无法实现这一积分的过程,无法对每个z的取值都计算其输出后给出可能的x。
而想通过最大后验概率来求解同样是不行的, P θ ( z ∣ x ) = P θ ( x ∣ z ) P θ ( z ) P θ ( x ) P_{\theta}(z|x)=\frac{P_{\theta}(x|z)P_{\theta}(z)}{P_{\theta}(x)} Pθ(z∣x)=Pθ(x)Pθ(x∣z)Pθ(z),因为我们并不知道x的分布。这样我们就引入了一种迂回的方法来求解这个问题,我们引入了encoder-> q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(z∣x)来对真实的后验概率进行拟合。给出以下推导过程
这里给出是已观测到样本的概率为一个定值,将其拆解开后里面包含了我们所想要去最小化的 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(z∣x)与 p θ ( z ∣ x ) p_\theta(z|x) pθ(z∣x)间的距离,又由于这一项为KL散度的形式,大于等于0恒成立,所以我们只需要最大化前两项就可以实现最小化预测分布和实际分布间距离的目的。那么前两项给出了我们想要最大化的概率的下限,叫做(variational) lower bound。
我们的目标就变成了最小化这个变微分下界,很好的点在于这个变微分下界是可以求取的,可以通过对样本采样(蒙特卡洛法)求微分得到,即最终我们得到的目标函数是:
那么接下来只需要对这个函数求导即可以达成我们最大化边缘概率密度的目的了。
附录:蒙特卡洛法求取分布期望的梯度:
前部分提到我们只需要最小化可变微分下界即可以求得理想的参数 ϕ , θ \phi,\theta ϕ,θ,而其中微分的部分可以通过蒙特卡洛法得到:
第一种情况:如果目标函数中KL散度的部分不可积,需要一起用蒙特卡罗法求取数值解:
第二种情况:如果目标函数中的KL散度部分可积,直接求取分析解:
但是有一点需要注意,我们的确可以通过encoder近似z的后验分布 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(z∣x),比如假定它符合正态分布,用神经网络输出分布的均值和方差。但是在decoder部分我们要输入的是确切的z,需要从这个分布中采样,而采样这个过程是不可导的,我们没有办法对采样这个过程进行后向传播,于是这里引入里一个重参数的技巧,即在假定z为正态分布的情况下,我们可以认为z是一个固定的可微函数,只不过其中的参量是来自某种分布,这样的化采样这一过程只是对这个参量而言的,而我们需要优化的参数则是和这个可微函数的形式有关。具体形式转换为:
z ∼ q ϕ ( z ∣ x ) → z = g ϕ ( ϵ , x ) , ϵ ∼ p ( ϵ ) z\sim q_{\phi}(z|x)\rightarrow z=g_{\phi}(\epsilon,x),\epsilon\sim p(\epsilon) z∼qϕ(z∣x)→z=gϕ(ϵ,x),ϵ∼p(ϵ)
在常用的实验中,我们假定 q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(z∣x)是一个对称的正态分布,由此可求得与其相关的损失项的解析解。给出最终目标函数如下:
https://www.sohu.com/a/226209674_500659
https://blog.csdn.net/forlogen/article/details/100554185
https://www.jianshu.com/p/92e77578719b
https://zhuanlan.zhihu.com/p/364917826
https://zhuanlan.zhihu.com/p/64485020
https://zhuanlan.zhihu.com/p/144649293
decoder拟合高斯分布损失函数的分析
Auto-Encoding Variational Bayes