AE、VAE、CVAE
简单讲解一下三个主要的自动编码器主要思路都是采用一个编码器和一个解码器。输入内容经过编码器编码为潜变量zzz,潜变量zzz经过解码器解码为输出内容。AEAuto Encoder这是最简单的自动编码器其潜变量是一种低维编码也就是一个确定的值训练损失是最小化输入与输出的差异。这种设定存在问题由于低维编码是一个确定的值而且我们的训练目标是最小化输入与输出的差异因此会导致过拟合也就是输入某个特定的图片只能得到对应的输出图片泛化性也不好如果输入其他未经训练过的图片输出只能是未知的内容。为什么AE效果不好呢本质上是由于潜变量zzz是一个确定的值整个过程中并没有加入随机性。理想条件下我们可以想象一个拥有世界上所有输入和输出数据而训练的AE这肯定是囊括了所有的图像此时的潜空间是一个一对一的映射。但是实际中我们并没有全部的数据为了泛化性我们希望构建一对多或者多对多的映射。如何实现这点呢VAE就是分析这点而得到的。我们将潜变量构造成一个分布而不是一对一的对应关系这样囊括了更多的对应关系从而提高泛化性并且实现了生成的灵活性不再输入一张图只生成一张固定的图具体地说我们将编码器的输出设定为一个正态分布对应输出一个μ和一个σ然后从这个分布中随机采样得到潜变量z然后解码器根据这个潜变量生成对应的输出内容。我们希望通过梯度更新来优化VAE但是刚才描述的过程中存在随机采样也就是∗z∗sample(N(∗μ∗,∗σ∗))*z*sample(N(*μ*,*σ*))∗z∗sample(N(∗μ∗,∗σ∗))这个过程是个黑盒的我们可以前向传播但是后向就无法更新参数了因此我们在这里引入重参数化将随机信息提取到分布外。zμσ×ϵzμσ×ϵzμσ×ϵ,其中ϵ代表了随机性从一个正态分布中抽取得到的。在VAE中我们的训练损失包括两部分一部分是最小化输入与重建的差异但是如果只包括这个同样会导致过拟合会让σ趋于0因此需要加入对这部分的限制我们加入KL损失限制编码器输出的μ和σ接近正态分布。CVAE则和VAE没有什么太大的区别只是在编码器和解码器加入了标签信息剩下的内容和AE是一样的。