原始的自动编码机AE(网络较大)在生成图片时,容易过拟合,即输入的图片在经过encoder编码后仅仅是一个编号而已,decoder就根据这个编号来查找相应的图片信息,使得生成与encoder的输入一模一样的图片。主要原因是decoder过大,记住了所有训练集的图片信息,当输入一个编号,就能索引到对应的图片,如果输入一张训练集中没有的图片时,decoder没有见过这张图片,没有保存与之相关的信息,也就没法生成好的图片,这样的decoder仅仅是保存了训练集图像的信息,而没有探寻生成图像的规律。解决这个问题一般的方法是在过拟合之前结束训练或者换一个规模更小的神经网络。虽然有效果,但是直觉上感觉效果可能不是非常好。
VAE相对于原始的AE而言,①在训练时加入了一个标准高斯噪声(即encoder输出的方差sigma的平方尽可能的接近于1),②同时使得encoder编码的值更加接近(即VAE中encoder输出的均值mu全部都趋近于0)。①②这两个东西相辅相成,如果仅有①,那么训练集中不同图片通过encoder出来的编码可能距离非常远,导致标准高斯噪声对其的影响微乎其微,decoder得到编码后可能根据输入的值寻找最近的(不超过标准高斯范围)已知编码来搜索见过的图片信息,从而还是原始自动编码机AE的过拟合问题;如果仅有②,那么这个模型就是最初的自动编码机加上一点点对encoder编码值的约束而已。同时有①②两个条件,不同图片encoder输出的值非常接近以至于高斯噪声足够影响decoder对输入的判断,避免decoder对图片单纯的记忆,迫使其去探寻图像生成的规律。比如在手写数字识别中,数字1的图片与数字7的图片在①②的条件下encoder输出的编码很可能有所交叉甚至相同,再联想其损失函数,decoder可能会生产一张即像1又像7的图片,我们生活中也会有这样的图片争取达到以下图片的效果。
VAE的损失函数由两部分组成,一部分是重构误差,即原始自动编码机AE的损失函数,使得生成的图片较像输入图片,另一部分是KL散度,实现上一段①②的条件。

KL散度的存在使得VAE不会退化为原始的AE。重构误差的存在使得encoder的编码mu(上图中的均值)不会取到0,因为如果mu取到0了,那么encoder对于图片的编码输出均为0,编码没有区分性,致使decoder不可能正常工作输出不同的图片,然而重构误差的目标就是使得decoder输出不同的图片(训练集中不同图片输入,AE自然会训练模拟输出一张与输入相同的图片,然而训练时每一次输入的图片又不同)。
参考及VAE详细的解说:https://www.sohu.com/a/226209674_500659