VAE变分自编码器(一)——基本概念

本系列已完结,全部文章地址为:

VAE变分自编码器(一)——基本概念-CSDN博客

VAE变分自编码器(二)——数学推导及代码解析

1 VAE的基本原理

VAE(Variational AutoEncoder)变分自编码器是在AE的基础上发展而来的。整体网络结构、训练过程与AE很相似。VAE的网络结构如下图所示:

2 VAE的训练过程

2.1 正向计算

在Encoder中,将输出划分为2部分,一部分是均值,一部分是标准差。从标准正态分布N(0, 1)中抽样得到的变量乘标准差,加回均值,即可得到编码Z。将编码Z传入Decoder中,得到输出。损失函数除了输出与输入的差距以外(可用MSE损失函数或者交叉熵等),还要计算一项

\frac{1}{2}(\mu^2+\sigma^2-2log\sigma-1)

为了最小化这一项,\mu与0越接近越好,\sigma与1越接近越好,因此这一项会要求Z的分布接近正态分布。\mu^2还可以理解成L2正则化,达到的效果是\mu不能有异常值,避免过拟合。

下一篇笔者将从数学推导角度说明,此时实际是正态分布N(\mu,\sigma^2)与标准正态分布N(0,1)的KL散度。

李宏毅老师课件中最小化表达式是

这是因为此处做了一些trick,Encoder的输出是均值和对数方差。这样右下角的最小化函数与前文是一致的。

由于一般\sigma表示标准差,因此先将此处的\sigma替换成a。a实际上是对方差做了对数,即a=log\sigma^2,相当于先学习到方差,再使用对数激活函数。取对数可以降低值的规模,也相当于一种激活函数,这样就不用自己加激活函数了。

实际的编码计算公式为z=\mu+\varepsilon*e^{a*1/2}=\mu+\varepsilon\sigma

a=log\sigma^2代入到此处右下角的最小化公式,则为

e^a-(1+a)+\mu ^2=\mu^2+\sigma^2-2log\sigma-1,与上文相比只有1/2系数差距,最小化时可忽略,因此是统一的。

2.2 重参数化

编码Z实际上相当于从均值为\mu,标准差为\sigma的正态分布中抽样得到,但在网络构建上不能直接用\mu\sigma抽样,因为“抽样”这一步计算不是可导的,因此引入了外部的标准正态分布,这样就可以计算误差对\mu\sigma的梯度了。

3 VAE的改进——直觉上的解释

VAE相对于AE做了很多改进,下面分别说明。

3.1 引入分布

在AE中,编码是离散的点,由于模型主体是非线性的神经网络,拟合出的运算非常复杂,比如卷积、乘方、对数等等,因此不同编码之间是没有数量关系的。比如编码A对应图像X,编码C对应图像Z,那么将A和C之间的某个点B传入Decoder,并不能期望生成一个介于X和Z之间的图像。由于这个特性,AE不适合生成任务。

为了方便理解,以《潜伏》中余则成和翠平暗号为例,做以下分析:

(1)假设模型是线性的,比如事先约定编码1代表需要外部支援1人,编码3代表需要外部支援3人,那么某天余则成给翠平比手势“2”,翠平就知道需要支援2人。即使这个编码不是事先约定的,翠平也知道含义。

(2)现在模型是非线性的,比如事先约定编码1代表撤退,编码3代表带上武器,他们之间可能是毫无关联的。某天余则成给翠平比手势2,翠平就懵了,因为事先没有约定这个暗号。

如上图左侧所示,编码层左边的点生成满月图像,编码层右边的点生成弦月图像,编码层中间的点并不能生成中间月相的图像,可能是一个完全不相干的图像。

而VAE在编码层做了处理,用一个分布来表示编码,这样编码B在A的分布下概率较高,在C的概率下分布较高,那么生成的图像Y就兼具X和Z的特征。

还是以上文《潜伏》为例,在VAE下,余则成和翠平约定好,编码是一种分布,也就是说编码1只代表撤退概率大,编码2只代表带上武器的概率大。余则成只是给出大方向行动,允许翠平有主观能动性,相机决断。那么余则成给翠平比手势2,翠平认为2与1和3的距离都比较近,所以既要撤退,又要带上武器,因此翠平选择边带上武器边撤退。这样,他们就有一定的创造性,虽然不能发明新的暗号,但至少实现了现有暗号的组合。顺带一提,在GAN下,是可以创造新暗号的。

3.2 调整损失函数

AE的损失函数是计算输出与输入的区别,即重建的损失。在VAE下如果只考虑此损失,会导致VAE退化成AE,生成的\sigma将非常小,在均值处概率近似为100%,在其他处概率近似为0,也就相当于编码由一个分布退化成均值这单个点。

这是因为从正态分布抽样出的z是有不确定性的,模型为了让重建损失更小,降低了不确定性的因素,所以导致分布的标准差极小。这样VAE就没意义了,因此损失函数必须还要考虑分布。

在损失函数中,增加了一项损失函数,前文已分析,最终的效果是分布要与标准正态分布尽可能相似,因此标准差不会近似为0。

4 VAE的问题及GAN的出现

以图像生成为例,VAE只能产生样本集中已有图像的组合,这有2个问题:第一,不能产生全新的图像,如下图所示产生的图片与样本有1个像素点的差距,左侧加在7的延长线上,相当于生成了全新的图像,右侧加在不相关的空白处,对于VAE来说二者代入损失函数是一样的,但是对于人类而言,显然左侧的图像损失函数应该要小,所以VAE无法生成新的图像;第二,在组合时,由于结果兼具样本集中多个图像的特征,所以清晰度不高。

由此学者提出了GAN模型解决此问题。

GAN中的Generator就相当于VAE中的Discriminator。更多关于GAN的详细内容可参考笔者关于GAN的学习笔记系列。

参考资料

李宏毅VAE课程

卷积变分自编码器  |  TensorFlow Core

VAE介绍-腾讯云开发者社区-腾讯云

变分自编码器 VAE-腾讯云开发者社区-腾讯云

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值