【深度学习】生成模型:VAE(自编码器)模型解析

1 前言

  本文为自己自学内容的记录,其中多有借鉴别人博客的地方,一并在参考文献中给出链接,其中大部分截图来自李宏毅深度学习PPT课件。其中内容有理解不到位的地方,各位大佬在评论区给出修改意见,感恩。

  本文前置知识高斯混合模型EM算法,如果不了解这两种算法直接看VAE模型会有理解上的障碍。

2 VAE模型

2.1 VAE模型推导

  VAE模型的初始化推导和EM算法的推导有相似之处,不同的是在VAE模型中隐变量【深度学习】生成模型:VAE(自编码器)模型解析是一个连续的无穷维而不是跟高斯分布一样为有限的离散变量,所以在VAE的参数估计中用到了神经网络。
  VAE是一个深度生成模型,其最终目的是生成出概率分布【深度学习】生成模型:VAE(自编码器)模型解析【深度学习】生成模型:VAE(自编码器)模型解析即输入数据。在VAE中,通过高斯混合模型(Gaussian Mixture Model)来生成【深度学习】生成模型:VAE(自编码器)模型解析,也就是说【深度学习】生成模型:VAE(自编码器)模型解析是由一系列高斯分布叠加而成的,每一个高斯分布都有它自己的参数 【深度学习】生成模型:VAE(自编码器)模型解析【深度学习】生成模型:VAE(自编码器)模型解析

在这里插入图片描述

  那么要找的这个映射关系【深度学习】生成模型:VAE(自编码器)模型解析如何获得?这里就需要用到神经网络,那么为什么不用极大似然估计,因为在VAE模型中隐变量数量假设是高维无限的,没有办法用积分去做,所以用神经网络去拟合(神经网络可以拟合任意函数)。如下图所示:
在这里插入图片描述

  对于某一个向量【深度学习】生成模型:VAE(自编码器)模型解析我们知道了如何找到【深度学习】生成模型:VAE(自编码器)模型解析,那么对连续变量【深度学习】生成模型:VAE(自编码器)模型解析依据全概率公式有:
【深度学习】生成模型:VAE(自编码器)模型解析

  但是很难直接计算积分部分,因为我们很难穷举出所有的向量【深度学习】生成模型:VAE(自编码器)模型解析用于计算积分。又因为【深度学习】生成模型:VAE(自编码器)模型解析 难以计算,那么真实的后验概率 【深度学习】生成模型:VAE(自编码器)模型解析 同样是不容易计算的,这也就是为什么下文要引入【深度学习】生成模型:VAE(自编码器)模型解析来近似真实后验概率【深度学习】生成模型:VAE(自编码器)模型解析

因此我们用极大似然估计来估计【深度学习】生成模型:VAE(自编码器)模型解析,有似然函数【深度学习】生成模型:VAE(自编码器)模型解析
【深度学习】生成模型:VAE(自编码器)模型解析

这里额外引入一个分布 【深度学习】生成模型:VAE(自编码器)模型解析【深度学习】生成模型:VAE(自编码器)模型解析,这个分布表示形式如下:
在这里插入图片描述

注意:这里为什么需要引入额外的分布【深度学习】生成模型:VAE(自编码器)模型解析,跟EM算法的求解过程做对比,在EM算法中【深度学习】生成模型:VAE(自编码器)模型解析是可以取到【深度学习】生成模型:VAE(自编码器)模型解析,从而令散度等于零不断的抬升下界进行极大似然估计,但是在VAE中由于【深度学习】生成模型:VAE(自编码器)模型解析是很难求的所以引入一个变量q(x)对其进行近似。

接下来进行公式的推导,由于在EM算法中已经推导出了ELBO+KL的形式,这里就直接拿来用:
【深度学习】生成模型:VAE(自编码器)模型解析

根据KL divergence的性质 【深度学习】生成模型:VAE(自编码器)模型解析 当且仅当 【深度学习】生成模型:VAE(自编码器)模型解析取等号,因此有

【深度学习】生成模型:VAE(自编码器)模型解析

因此便得到了【深度学习】生成模型:VAE(自编码器)模型解析的一个下界称为Evidence Lower Bound (ELBO),简称【深度学习】生成模型:VAE(自编码器)模型解析。最大化 【深度学习】生成模型:VAE(自编码器)模型解析 就等价于最大化似然函数 【深度学习】生成模型:VAE(自编码器)模型解析。那么接下来具体看 【深度学习】生成模型:VAE(自编码器)模型解析 :
【深度学习】生成模型:VAE(自编码器)模型解析

推导到这一步就会发现这种形式的公式是看VAE相关论文经常给出的形式。同时到了这一步也可以看出,最大化似然函数【深度学习】生成模型:VAE(自编码器)模型解析就是最大化【深度学习】生成模型:VAE(自编码器)模型解析,也即最小化【深度学习】生成模型:VAE(自编码器)模型解析和最大化【深度学习】生成模型:VAE(自编码器)模型解析

  • 最小化【深度学习】生成模型:VAE(自编码器)模型解析,使后验分布近似值【深度学习】生成模型:VAE(自编码器)模型解析接近先验分布【深度学习】生成模型:VAE(自编码器)模型解析。也就是说通过【深度学习】生成模型:VAE(自编码器)模型解析生成的编码【深度学习】生成模型:VAE(自编码器)模型解析不能太离谱,要与某个分布相当才行,这里是对中间编码生成起了限制作用。当【深度学习】生成模型:VAE(自编码器)模型解析【深度学习】生成模型:VAE(自编码器)模型解析都是高斯分布时,推导式有(参考文献【4】中Appendix B):
    【深度学习】生成模型:VAE(自编码器)模型解析
    其中【深度学习】生成模型:VAE(自编码器)模型解析表示向量【深度学习】生成模型:VAE(自编码器)模型解析的总维度数,【深度学习】生成模型:VAE(自编码器)模型解析【深度学习】生成模型:VAE(自编码器)模型解析表示【深度学习】生成模型:VAE(自编码器)模型解析输出的参数向量【深度学习】生成模型:VAE(自编码器)模型解析【深度学习】生成模型:VAE(自编码器)模型解析的第【深度学习】生成模型:VAE(自编码器)模型解析个元素。(这里的【深度学习】生成模型:VAE(自编码器)模型解析【深度学习】生成模型:VAE(自编码器)模型解析等于前文中【深度学习】生成模型:VAE(自编码器)模型解析【深度学习】生成模型:VAE(自编码器)模型解析.
  • 最大化【深度学习】生成模型:VAE(自编码器)模型解析,即在给定编码器输出【深度学习】生成模型:VAE(自编码器)模型解析下解码器输出【深度学习】生成模型:VAE(自编码器)模型解析越大越好。这部分也就相当于最小化Reconstruction Error(重建损失)

  由此我们可以得出VAE的原理图:
在这里插入图片描述

2.2 重参化技巧

  在前面VAE的介绍中样本经过Encoder生成了隐变量的一个分布 【深度学习】生成模型:VAE(自编码器)模型解析,然后从这个分布中采样【深度学习】生成模型:VAE(自编码器)模型解析进行Decoder,注意“采样”这个操作是不可微的,因此不能做反向传播,所以用reparameterization trick来解决这个问题,示意图如下:
在这里插入图片描述

我们引入一个外部向量【深度学习】生成模型:VAE(自编码器)模型解析,通过【深度学习】生成模型:VAE(自编码器)模型解析计算编码【深度学习】生成模型:VAE(自编码器)模型解析【深度学习】生成模型:VAE(自编码器)模型解析表示element-wise乘法,【深度学习】生成模型:VAE(自编码器)模型解析的每一维都服从标准高斯分布即【深度学习】生成模型:VAE(自编码器)模型解析 N(0,1),由此loss的梯度可以通过【深度学习】生成模型:VAE(自编码器)模型解析【深度学习】生成模型:VAE(自编码器)模型解析分支传递到encoder model处(【深度学习】生成模型:VAE(自编码器)模型解析并不需要梯度信息来更新)。

这里利用了这样一个事实[3]:考虑单变量高斯分布,假设【深度学习】生成模型:VAE(自编码器)模型解析,从中采样一个【深度学习】生成模型:VAE(自编码器)模型解析,就相当于先从【深度学习】生成模型:VAE(自编码器)模型解析中采样一个【深度学习】生成模型:VAE(自编码器)模型解析,再令【深度学习】生成模型:VAE(自编码器)模型解析

最终的VAE的形式如下:
在这里插入图片描述

3 QA

3.1 生成体现在什么地方

3.2 AE和VAE的区别

  将把【深度学习】生成模型:VAE(自编码器)模型解析表示为输入数据,把【深度学习】生成模型:VAE(自编码器)模型解析表示为潜在变量(编码表示)。在普通的自编码器中,编码器将输入【深度学习】生成模型:VAE(自编码器)模型解析转换为潜在变量【深度学习】生成模型:VAE(自编码器)模型解析,而解码器将【深度学习】生成模型:VAE(自编码器)模型解析转换为重构的输出。而在可变自编码器中,编码器将【深度学习】生成模型:VAE(自编码器)模型解析转换为潜在变量【深度学习】生成模型:VAE(自编码器)模型解析的概率分布,然后对潜在变量【深度学习】生成模型:VAE(自编码器)模型解析随机采样,再由解码器解码成重构输出。自编码器(确定性)和可变自编码器(概率性)的区别。

在这里插入图片描述

4 另一种角度理解VAE

5 总结

  其实那么多数学公式推导,我自己都有点晕,但是本质上就是用自编码器去产生很多高斯分布,去拟合样本的分布,然后某个x对应的高斯分布里采样z,然后复原成x,跟GAN区别就是这个是完全去模仿分布,只能生成数据中已有的图片,很难创造新的图片,最多也就是插值图片了。

  也可以理解成图片的特征向量z采样于某种高斯分布,我们要把他给找出来,我们希望这个分布贴近标准正太分布,然后通过编码器生成对应均值和方差,然后采样z,希望z又能复原图片,这样就找到了这个z背后的高斯分布。这个高斯分布的均值就是最大概率生成特征z,可以复原图片,当然均值旁边采样出来的z可能可以复原的不是很像,但是也是在数据集里的,如果有2个图片的特征分布都在这个点有所重合的话,可能就是2个图片中间的插值图片了。

不足

VAE在产生新数据的时候是基于已有数据来做的,或者说是对已有数据进行某种组合而得到新数据的,它并不能生成或创造出新数据。另一方面是VAE产生的图像比较模糊。
而大名鼎鼎的GAN利用对抗学习的方式,既能生成新数据,也能产生较清晰的图像。后续的更是出现了很多种变形。

6 参考文献

[1]【深度学习】VAE(Variational Auto-Encoder)原理
[2]【干货】深入理解变分自编码器
[3]变分自编码器VAE:原来是这么一回事 | 附开源代码
[4]Auto-encoding variational bayes
[5]【机器学习】白板推导系列(三十二) ~ 变分自编码器(VAE)
[6]PyTorch实现VAE
[7]使用(VAE)生成建模,理解可变自动编码器背后的数学原理

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年2月25日 下午8:35
下一篇 2023年2月25日 下午8:39

相关推荐