剑客
关注科技互联网

VAE(1)——从KL说起

前面我们介绍了GAN——Generative Adversarial Network,这个网络组是站在对抗博弈的角度去展现生成模型和判别模型各自的威力的,下面我们来看看这种生成模型和判别模型组合的另一个套路——Variational autoencoder,简称VAE。

VAE(1)——从KL说起 突然想起来,他也叫VAE,我觉得他还是有点音乐才华的。不过我们今天不去讨论他。

Variational autoencoder的概念相对复杂一些,它涉及到一些比较复杂的公式推导。在开始正式的推导之前,我们先来看看一个基础概念——KL divergence,翻译过来叫做KL散度。

什么是KL散度

无论从概率论的角度,还是从信息论的角度,我们都可以很好地给出KL散度测量的意义。这里不是基础的概念介绍,所以有关KL的概念就不介绍了。在Variational Inference中,我们希望能够找到一个相对简单好算的概率分布q,使它尽可能地近似我们待分析的后验概率p(z|x),其中z是隐变量,x是显变量。在这里我们的“loss函数”就是KL散度,他可以很好地测量两个概率分布之间的距离。如果两个分布越接近,那么KL散度越小,如果越远,KL散度就会越大。

KL散度的公式为:

VAE(1)——从KL说起 ,这个是离散概率分布的公式,

VAE(1)——从KL说起 ,这个是连续概率分布的公式。

关于其他KL散度的性质,这里就不赘述了。

KL散度的实战——1维高斯分布

我们先来一个相对简单的例子。假设我们有两个随机变量x1,x2,各自服从一个高斯分布 VAE(1)——从KL说起 ,那么这两个分布的KL散度该怎么计算呢?

我们知道

VAE(1)——从KL说起

那么KL(p1,p2)就等于

VAE(1)——从KL说起
VAE(1)——从KL说起

VAE(1)——从KL说起
VAE(1)——从KL说起
VAE(1)——从KL说起
VAE(1)——从KL说起

f

VAE(1)——从KL说起
VAE(1)——从KL说起
VAE(1)——从KL说起
VAE(1)——从KL说起
VAE(1)——从KL说起

VAE(1)——从KL说起

说实话一直以来我不是很喜欢写这种大段推导公式的文章,一来原创性比较差(都是前人推过的,我就是大自然的搬运工),二来其中的逻辑性太强,容易让人看蒙。不过最终的结论还是得出来了,我们假设N2是一个正态分布,也就是说 VAE(1)——从KL说起 那么N1长成什么样子能够让KL散度尽可能地小呢?

也就是说 VAE(1)——从KL说起

我们用“肉眼”看一下就能猜测到当 VAE(1)——从KL说起 时,KL散度最小。从公式中可以看出,如果 VAE(1)——从KL说起 偏离了0,那么KL散度一定会变大。而方差的变化则有些不同:

VAE(1)——从KL说起 大于1时, VAE(1)——从KL说起 将越变越大,而 VAE(1)——从KL说起 越变越小;

VAE(1)——从KL说起 小于1时, VAE(1)——从KL说起 将越变越小,而 VAE(1)——从KL说起 越变越大;

那么哪边的力量更强大呢?我们可以作图出来:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0.5,2,100)
y = -np.log(x)+x*x/2-0.5
plt.plot(x,y)
plt.show()

从图中可以看出

VAE(1)——从KL说起 二次项的威力更大,函数一直保持为非负,这和我们前面提到的关于非负的定义是完全一致的。

好了,看完了这个简单的例子,下面让我们再看一个复杂的例子。

一个更为复杂的例子:多维高斯分布的KL散度

上一回我们看过了1维高斯分布间的KL散度计算,下面我们来看看多维高斯分布的KL散度是什么样子?说实话,这一次的公式将在后面介绍VAE时发挥很重要的作用!

首先给出多维高斯分布的公式:

VAE(1)——从KL说起

由于这次是多维变量,里面的大多数计算都变成了向量、矩阵之间的计算。我们常用的是各维间相互独立的分布,因此协方差矩阵实际上是个对角阵。

考虑到篇幅以及实际情况,下面直接给出结果,让我们忽略哪些恶心的推导过程:

VAE(1)——从KL说起

其实这一次我们并没有介绍关于KL的意义和作用,只是生硬地、莫名其妙地推导一堆公式,不过别着急,下一回,我们展示VAE效果的时候,就会让大家看到KL散度的作用。

坚持看到这里的童鞋是有福的,来展示一下VAE的解码器在MNIST数据库上产生的字符生成效果:

VAE(1)——从KL说起 从这个效果上来看,它的功能和GAN是有点像的,那么让我们来进一步揭开它的庐山真面目吧!

私货时间

"我爱机器学习"4群已经准确就绪:466461154,欢迎大家赶紧上车!

466461154!

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址