与变分自编码器(Variational Auto-Encoder)的决一死战

前言

关于VAE,其实我在第一次自学李宏毅老师的课程时就已经写过一篇文章,之后在学校的Machine Learning2课程中也将原始paper-Auto-Encoding Variational Bayes 作为我的期末报告的对象。最近因为毕业论文又需要用到VAE,因此打算在这里对VAE再做一次复习与总结。

回归原文

0.问题

现在我们有一批数据{x1,x2,…,xn}, 采样自某随机变量x。我们希望构建一个模型来探究x的生成过程。首先作者假设这个生成过程分为2步,其中涉及某个隐变量z。即
1)某个随机变量z从某个z的先验分布pθ (z)得到。
2)然后根据得到的z,从条件概率分布pθ(x|z)采样得到x的值。
在这里插入图片描述
但显然这个思路过于理想化,整个过程的大部分信息,比如后验概率pθ(z|x),隐变量z的值,均是隐藏的,因此我们无法单单依靠这个建模思路来求解模型参数。

当然,作者也提到了可以对整个过程,比如后验概率或者边际概率做一些简化性的假设来帮助模型的求解。但是作者并没有这么做,而是希望通过设计一个更一般性的算法来求解这个问题,下面我们就来看一看作者究竟是怎么做的。

1.基本思路

既然我无法直接对真实的后验概率pθ(z|x) (绝大多数情况下非常复杂)进行操作,那么我们就引入另一个分布qφ(z|x)来近似真实的后验概率。这里其实就使用了变分推断的思想。

整个模型的基本框架可以用原文中的这张图来进行说明。
在这里插入图片描述
其中实线代表生成式模型部分,即pθ(z)pθ(x|z),虚线则代表使用qφ(z|x)来变分近似未知的真实后验概率分布。其中的模型参数φ会在后续与θ一起进行优化。

2.如何定义pθ(z|x) 与 qφ(z|x)的近似程度?

既然我们需要一个近似的分布来代替真实的后验分布,那么我们必然需要一个度量手段来度量这两个分布之间的相似程度。这里我们使用KL散度,常用于度量两个分布之间的相似程度。
如qφ(z|x) 与 p(z|x)的KL散度定义如下。
在这里插入图片描述

3.使用qφ(z|x)代替pθ(z|x)进行目标函数推导

现在我们回到我们的目标—极大化边际似然函数p(x)(取log)。
通过引入qφ(z|x),我们可以将其表达为如下形式。(下图取自原文)
在这里插入图片描述
即我们可以将边际似然转化为两个部分,上式右边第一部分就是我上面提到的引入的变分近似分布qφ(z|x)与真实的后验概率分布pθ(z|x)的KL散度。第二部分被称为变分下限(the varitional lower bound)。根据KL散度的定义,我们有KL散度恒大于0的结论,因此可以得到如下这个重要的关系式。
在这里插入图片描述
这也是我们为什么将该部分称为变分下限的原因,所以我们就可以通过优化我们的变分下限来间接地优化我们的目标似然函数。那么我们现在就将注意力放在如何优化我们的变分下限函数L上。

事实上,它可以进一步被拆分成两个部分。如下
在这里插入图片描述
我们先来看后面红色的一项,这一项非常好理解,本质上就是希望模型能基于q分布(encoder)产生的隐变量z,最大概率得通过p分布 (decoder)还原得到x

然后来看蓝色这一部分,这部分代表的是我们引入的变分近似分布qφ(z|x)与隐变量z的分布之间的负KL散度,为了让最终结果最大化,这项KL散度要尽可能地小,即我们希望让q分布和隐变量z的分布尽可能靠近。本质上这一项可以看作是正则项,如果没有这一项的约束,单纯地优化红色部分,那么模型会倾向于消除所有的噪声,过分地保证训练集中的输入与输出的高度一致,这不是我们想要的,我们希望地是模型更加具有创造性。

哦对了,说了这么多好像还没有说我们是如何从最初的对数似然函数推导到我们的变分下限函数的。以下是简单的推导过程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值