2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)

这节我觉得主要是讲VAE的好处:

1.从原理上来讲

1.1 先看一下VAE经典框架:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
1.2 解释这几个参数
可以看到每个encoder分了两个东西σ和m,每个东西三个值,所以相当于对code加上了噪声,相当于code有一定的范围,因此可以在这个范围内生成对应的图片。
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
1.3 why VAE?
注意看中间部分,两个图片的code加上噪声之后中间有重叠部分,也就是说这个地方既要可以生成满月,又要生成半月图片,根据输入和输出之间的误差最小的目标,这个位置的图片只能是介于满月和半月之间了。

所以在VAE的模型中encoder生成的两个部分σ和m,m代表的是原始code,最后的c是加上了噪声的code,σ代表原始code的variance,由于variance是正值,所以σ做了指数操作,确保其为正数(那个公式:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
,模型中的e是从一个正态分布中sample出来的值。正态分布的variance是固定的,因此噪声的variance是由σ决定的,因此variance是由模型自动学习到的。因此如果让机器自己来学习这个噪声variance是有点问题的(类似考试完让学生自己改卷,每个人都会改为100分),机器会直接让这个variance等于,那么就相当于没有噪声,这个模型就和普通的AE是一样的了,没有什么区别。因此要对这个variance加以限制,不能让其太小,甚至等于零。
这个限制就是这个公式啦:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
这个公式里面exp(σi)用蓝色表示,(1+σi)用红色表示,
exp(σi)−(1+σi)用绿色表示,画出来:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
从绿色曲线可知,当σi接近0时,variance接近1。
最后的((m_i)^2)是L2正则化,让结果比较sparise。
以上是Intuitive Reason的说法,下面是论文中比较官方的说法。

2.从科学角度解释

2.1 先明确一下目标:宝可梦分布
P(x):Maxminim ,如果图形越接近宝可梦P(x)就越大,图形乱七八糟P(x)就越小。

GMM:要估计P(x)就要用GMM
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
2.2 GMM Gaussian Mixture Model
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
P(m)是组成混合高斯的每一个小高斯的权重,一共有m个高斯
如何从这m个简单高斯分布中sample 数据呢?
先要决定从一个高斯进行sample,也就是把这些个高斯分布看做一个multinomial的问题
于是这个决定的过程可以看做是一个关于m个样本的采样,从第m个高斯采样的**概率是P(m)找到指定的高斯了以后,再根据这个高斯的参数(μm,Σm )进行采样:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
这里就很明白了,公式P(x) 中
P(m)**是选择第m个高斯的概率,也可以看做权重;**P(x∣m)**可以看做是从第m个高斯取数据x的概率。
现在如果我们手上有一系列的数据x(可以看到的,也叫观察变量),现在要估计m个高斯分布(看不到的,也叫隐变量)的各个参数(μm,Σm),就是用EM算法。
从上面的讲解我们知道:
Each x you generate is from a mixture Distributed representation is better than cluster.
说人话:用某一个分类来表示是不够准确的,正确的做法是用一个分布来表示x,也就是说x可以表示为:有多少的几率从第a分布采样出来,有多少几率从b分布采样出来。。。。
理解这个,我们再回到VAE,VAE就可以看做是GMM中x的分布表示。

2.3 VAE的GMM解释
连续的GMM:
实际上,上面的例子是组成GMM的m个高斯分布是不连续的,如果组成GMM的高斯是连续的呢?下面来描述一下这个情况
假设有一个变量z,这个z是从一个正态分布中采样出来的(z is a vector from normal distribution):
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
z是一个向量,这个向量的每一个dimension代表观测变量的某一个属性(Each dimension of z represents an attribute)
如果我们先假设z是一维的,那么z的分布函数为:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
有了z之后,我们可以决定z对应的参数(μ,Σ),这里和前面不一样了,这里的z是连续的分布,它和上面离散的GMM不一样了,刚才的GMM如果由10个高斯分布组成,那么对应的参数(μ,Σ)也就有10组,是可以定下来的。这里的z表示连续的分布,也就2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)意味着有无穷多个高斯分布,无穷多组参数(μ,Σ),因此,这里我们用一个函数表示z所对应的高斯分布参数,写成:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
可以看到,我们从z从取了五个点,这五个点所对应高斯分布参数是由公式(2)决定的,从z的某一个高斯里面取出x的概率可以写成:2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
求参数的函数如何确定
现在面临的问题就是如何确定公式(2)中的函数是什么样子。2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
这里可以用一个NN来表示这个函数,也就是训练一个NN,输入一个z向量,输出是两个,分别是μ(z),σ(z)
这个问题解决了之后,我们就可以写出来观测变量x的概率P(x)
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
重要说明:上面的假设是z是从正态分布中采样出来的,实际上z的分布可以是非正态分布,无所谓是什么分布,因为中间从z估计参数的函数我们用的NN,NN号称啥函数都可以模拟,所以z的分布没有限制,因此最后得到的P(x)也可以是很复杂形状。
最大似然求解
P(z)是一个正态分布,P(x∣z)是N(μ(z),σ(z))分布,μ(z),σ(z)是我们要求的函数。现在我们手上有一组观测变量x,希望找到一组函数μ(z),σ(z)\mu(z),\sigma(z)μ(z),σ(z)表达,使得x从P(x)P(x)P(x)分布中取出来的概率最大。用最大似然的思想写出来的损失函数为:2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
这里是老师的分支讲解:
我们能调整的参数就是函数μ(z),σ(z),而函数来自:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
这里我们需要另外一个分布q(z∣x)2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
这里,蓝色的NN就相当于VAE的Decoder,绿色的NN’相当于VAE的Encoder2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
由于logP(x)和z无关,由于∫zq(z∣x)dz=1(这里的q(z∣x)是任意一个分布,积分起来就是1),所以等式成立。
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
这里为什么2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
分子是联合概率密度函数,这里是一个公式2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
log中乘可以变加法
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
上式中的后面那项实际上是可以看成是两个分布的KL divergence,KL散度,写成:2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
由于KL是衡量两个分布是否相似的概念,相当于两个分布的距离,KL越小距离越小,分布越像,因此这个距离是不可能小于0的。因此我们可以得到如下不等式:2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
由于P(z,x)=P(x∣z)P(z)有:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
不等式的右边就是L的下限,英文名字叫lower bound,简称:Lb ,故有:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
要使得logP(x)=最大,那么就是要让Lb最大,即:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
这里就是要找到:P(x∣z)和q(z∣x)使得Lb最大
划重点:虽然提到Lb有助于提高likelihood,但只能提高likelihood的最小值,我们并不知道likelihood和Lb之间的距离是多少,也就是说当我们提高Lb 的时候likelihood是有可能下降的。
我们来看图:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
当我们固定P(x∣z)这项,最大化q(z∣x),会发现,logP(x)不变,KL在减少,Lb 越来越接近likelihood,即logP(x),当q(z∣x)=P(x∣z),两个分布一样,KL为0,Lb=logP(x)这个时候如果再提高Lb,就会使得logP(x)变大。也就是说,最后两个分布q(z∣x)和P(x∣z)会趋向于一致。
下面来研究一下Lb2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
看下上面的左边这项,刚好是−KL(q(z∣x)∣∣P(z))
这里注意:
q(z∣x)是之前说的NN’,即给定x,可以得到z的分布(求出参数就是得到分布)2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
由于有负号的存在,所以就变成了2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
让一个KL散度最小,就是要使得两个分布越接近越好,也就是要是NN’生成的分布要和P(z)越接近越好。
根据VAE论文的附录B,可以推导到最后就是下面这个条件:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
再看Lb 式子的右边一项,要最大化这项:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
可以把q(z∣x)看成weighted sum,上式可以写成:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
E q(z∣x) 就是期望。相当于下图的红线部分,后面的相当与黄线部分2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
通俗的说,就是要用给定的x找到一个分布z(这个分布当然是通过参数μ′(z),σ′(z)来确定的,这个分布可以通过NN找到一个分布,使得P(x)最大。
当我们不考虑方差σ\sigmaσ(实作是这样搞的),只考虑均值μ,我们会想让μ(x)越接近x越好,在高斯分布中,均值就是最接近x的,这个时候的logP(x∣z)最大。上面的模型就是一个VAE,如下图:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)

3.Conditional VAE

先将手写的数字丢到encoder,得到这个数字的特征,然后在decoder的过程中加入其它数字的限制,就会用之前学习到的数字特征生成其它数字的图片,如下图所示,第一列是原始数字,后面是Conditional VAE生成的数字。2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)
上面是MINST数据集做的结果,下面是另外一个数据集。
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)

4.Problems of VAE

问题在于没有真的在想要生成一个真实的图片,只是生成一个图片就完事。例如:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part II)

这里,VAE生成的图片和原图都只有一个像素不一致,从相似度计算来说两个结果都一样的,VAE可能认为右边的就ok了,这样是不好的。从本质上讲,VAE只不过是把原来的图片进行了一个linear combination的修改,没有去生成一个新的图片。
因此为了解决这个问题,就提出了GAN