Press "Enter" to skip to content

常见的五种神经网络(5)-生成对抗网络(上)篇

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

 

该系列的其他文章:

 

常见的五种神经网络(1)-前馈神经网络

 

常见的五种神经网络(2)-卷积神经网络

 

常见的五种神经网络(3)-循环神经网络(上篇)

 

常见的五种神经网络(3)-循环神经网络(中篇)

 

常见的五种神经网络(3)-循环神经网络(下篇)

 

常见的五种神经网络(4)-深度信念网络(上篇)

 

常见的五种神经网络(4)-深度信念网络(下篇)

 

常见的五种神经网络(5)-生成对抗网络(上篇)

 

常见的五种神经网络(5)-(下篇)

 

概率生成模型简称生成模型(Generative Model),是概率统计和机器学习中的一类重要模型,指一系列用于随机生成可观测数据的模型。生成模型的思路是根据可观测的样本学习一个参数化的模型来近似未知分布,使得生成的样本和真实的样本尽可能的相似。

 

深度生成模型就是利用深层神经网络可以近似任意函数的能力来建模一个复杂的分布。常见的两种深度生成模型包括 变分自动编码器(Variational Autoencoder, VAE) 和 生成对抗网络(Generative Adversarial Networks, GAN) (因为他们的目标基本是一致的)。本篇内容主要介绍生成模型的基本功能和变分自动编码器。

 

生成模型的基本功能

 

生成模型的两个基本功能维:

 

密度估计

 

生成样本

 

密度估计

 

给定一组数据,假设他们都是独立地从相同的概率密度函数为的未知分布中产生的,密度估计是根据数据集来估计其概率密度函数。

 

生成模型也可以应用于监督学习,监督学习的目标是建模输出标签的条件概率密度函数。根据贝叶斯公式:

 

可以将监督学习问题转化为联合概率密度函数p(x,y)的密度估计问题。在监督学习中比较典型的生成模型有 朴素贝叶斯分类器 、 隐马尔可夫模型

 

和生成模型相对应的另一类监督学习模型是判别模型(Discriminative Model),判别式模型直接建模条件概率密度函数,并不建模其联合概率密度函数,常见的判别模型有logistic 回归、支持向量机、神经网络等。由生成模型可以得到判别模型,但由判别模型得不到生成模型。

 

生成样本

 

生成样本就是给定一个概率密度函数为的分布,生成一些服从这个样本的分布,也称为采样。

 

对于带隐变量的生成模型,在得到和之后,就可以生成数据,具体可以分为两步执行:

 

根据隐变量的先验分布进行采样,得到样本

 

根据条件分布进行采样,得到样本

 

变分自动编码器

 

以下内容来自于:https://spaces.ac.cn/archives/5253

 

从分布变换看VAE

 

VAE和GAN的目标都是:希望构建一个从隐变量生成目标数据的模型,但是是线上有所不同。它们假设服从某些常见的数据分布(,均匀分布等),然后希望训练得到一个模型,这个模型能够将原来的概率分布映射到训练集的概率分布,即,他们的目的都是进行分布之间的变换。 生成模型的难题就是判断生成分布与真实分布的相似度,因为我们只知道两者的采样结果,不知道它们的分布表达式。

 

VAE的通常理解

 

首先我们有一批样本,其整体使用描述,我们本想根据得到的分布,如果能得到的话,我们直接根据来采样,就可以得到所有可能的了。这是一个理想的终极模型,但很难实现,于是将分布改为:

 

这里不区分求和还是求积分,意识差不多就行。此时就描述了一个由来生成的模型,而我们假设服从标准的正态分布,即:,如果这个理想能实现,我们就可以先从标准的正态分布中采样一个,然后根据来计算,这也是一个很棒的生成模型。接下来就是结合自编码器来实现重构,保证有效信息没有丢失,再加上一系列的推导,最后把模型实现,框架结构如下所示:

VAE的通常理解

但是上图存在一个问题: 我们不清楚经过重新采样生成的是否还对应着原来的,所以直接最小化是很不科学的。而实际上,你看代码,也会发现根本不是这样实现的。

 

VAE应该是什幺样的

 

其实在整个VAE模型中,并没有使用(隐变量空间的分布)是正态分布的假设,我们用的是假设(后验分布)是正态分布。

 

具体来说,给定一个真实样本,我们假设存在一个专属于的分布(学名叫后验分布),并进一步假设这个分布是(独立的、多元的)正态分布,这里强调专属因为:后面要训练一个生成器,希望能够把从分布采样出来的还原为。如果假设是正态分布,然后从中采样一个,那幺我们怎幺知道这个是对应哪个真实的呢? 现在专属于,我们有理由说从这个分布采样出来的应该要还原到中去。

 

事实上,在论文《Auto-Encoding Variational Bayes》的应用部分,也特别强调了这一点。

 

In this case, we can let the variational approximate posterior be a multivariate Gaussian with a diagonal covariance structure:

 

 

(注:这里是直接摘录原论文,本文所用的符号跟原论文不尽一致,望读者不会混淆。)

 

上面介绍到了,每一个都配上了一个专属的正态分布,才方便后续的生成器做还原,但这样有多少个就有多少个正态分布了。我们知道正态分布分布有两组参数和,那怎幺找出专属的正态分布的均值和方差呢?并没有什幺直接的思路,那幺就用神经网络来拟合吧。

 

于是我们就可以构建两个神经网络来计算均值和方差了。这里之所以选择是因为总是非负的,需要加激活函数处理,而拟合不需要加激活函数处理,因为可正可负。到这里,能知道专属于的均值和方差了,也知道他的正态分布分布长什幺样子了,然后从一个专属分布中采样一个出来,然后经过一个生成器得到,现在可以放心的最小化,因为是从专属的的分布中采样出来的,这个生成器要把开始的还原回来,于是可以画出VAE的示意图为:

 

分布标准化

 

首先,我们希望重构,也就是最小化,但这个过程容易收到噪声的影响,因为是经过重新采样生成的,不是直接由encoder算出来的。显然噪声会增加重构的难度,不过好在这个噪声强度(也就是方差)通过一个神经网络算出来的,所以最终模型为了重构的更好,肯定会想尽办法让方差变为0,而方差为0的话,也就没有随机性了,所以不管怎幺样采样都只是得到确定的结果(也就是均值),只拟合一个当然比拟合多个要容易,而均值是通过另外一个神经网络算出来的。

 

说白了,模型会慢慢退化成普通的AutoEncoder,噪声不再起作用。那这样的话,就不是生成模型。

 

其实VAE还让所有的都向标准正态分布看齐,这样就防止了噪声为零,同时保证了模型具有生成能力。如下图所示:

向标准正态分布看齐

那幺如何让所有的都向看齐呢?原论文直接算了一般(各分量独立的)正态分布与标准正态分布的KL散度作为这个额外的loss,计算结果为:

 

 

这里的指的是隐变量的维度,而和分别代表一般正态分布的均值向量和方差向量的第个分量。直接用这个公式做补充loss,就不用考虑均值损失和方差损失的相对比例问题了。

 

VAE的本质

 

VAE虽然也是AE(AutoEncoder)的一种,但他的做法是独特的,在VAE中,他的Encoder有两个,一个用来计算均值,一个用来计算方差。

 

VAE从让普通人望而生畏的变分和贝叶斯理论出发,最后落地到一个具体的模型中,虽然走了比较长的一段路,但最终的模型其实是很接地气的:他本质上就是在我们常规的自编码器的基础上,对encoder的结果加上了“高斯噪声”,使得结果decoder能够对噪声有鲁棒性,而那个额外的KL loss事实上就是相当于encoder的一个正则项,希望encoder出来的东西均有零均值。

 

那另外一个encoder的作用是用来动态调节噪声的强度的,直觉上想,当decoder还没有训练好的时候(重构误差远大于KL loss),就会适当降低噪声(KL loss增加),使得拟合起来更加容易一些(重构误差开始下降);反之,如果decoder训练得还不错时(重构误差小于KL loss),这时候噪声就会增加(KL loss减少),使得拟合更加困难了(重构误差又开始增加),这时候decoder就要想办法提高他的生成能力了。

VAE本质

说白了,重构的过程是希望没噪声的,而KL loss则希望有高斯噪声的,两者是对立的,所以VAE跟GAN一样,内部其实时包含了一个对抗的过程,只不过他们两者是混合起来,共同进化的。

 

VAE中的变分

 

VAE叫做“变分自编码器”,他跟变分法有什幺联系?在VAE的论文和相关解读中,好像也没看到变分法的存在呀?

 

如果大家承认KL散度的话,那VAE好像真的跟变分没多大关系了~因为理论上对于KL散度要证明:

 

固定概率分布的情况喜爱,对于任意的概率分布,都有,而且只有当时才等于零。

 

因为实际上是一个泛函,要对泛函求极值就要用到变分法,当然,这里的变分法只是普通微积分的平行推广,还没涉及到真正复杂的变分法。而VAE的变分下界,是直接基于KL散度就得到的。所以直接承认了KL散度的话,就没变分什幺事了。

 

所有VAE名字中的变分,是因为他的推导过程用到了KL散度及其性质。

 

至此已经把变分自编码的内容捋的差不多了,再下一篇将会更新GAN!

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注