VAE 自编码分类器

首先是对于传统的自编码器(Autoencoder),上图展示的就是一个传统的自编码器,他的本质上其实是一个非线性的PCA,实现用于对数据进行降维,其中,在这里,包含一个编码器 z=G(X),这里,z即是编码,也就是我们的输出PCA处理后的数据,而X则是采样的数据,在这里,z的维度数是会低于x的维度数,而在这里,接下的就是解码器,解码器实际上就是X'=f(z)。

那么,在这里,我们看来就只需要输入一些低维的数据去做为输入,然后,解码器就可以给了我们一个模型,那么,我们是否可以在低维的向量空间里面随机取样,就可以得到数据呢?

自然,是不行的,这样子只会得到一个噪声,所以,在这里,我们就要做的就是对模型进行一个显示的建模才可以让他变成一个真正有用的模型,这就是(Variational Autoencoders,VAE)。

所以,在这里,由于z的分布是不确定的,所以我们可以在这里把它看成是一个简单的分布,以此来缩小采样的空间,在这里,我们就是假设z是一个服从标准多元高斯分布的随机变量。

所以,我们的步骤就是首先从分布p(z)里面获取一个zi,然后在z按照条件分布从p(X|zi)里面采样得到一个数据点xi.

接下来,我们来看这里的Decoder 的架构。

首先,在这里,我们对于decoder,我们希望decoder可以学会一个映射,这个映射是说让其输入z然后得到X的分布,这里通过对z进行大量的采样,就可以得到X的分布的均值和方差。

那么在这之后,我们的目标是什么呢,就是对于原始图像的分布P(X),我们需要找出来一个接近的真实分布,也就是P日(X),这样子,我们就可以通过对Z采样,得到我们的模型,但是,在这里,在这里,P日(X)即表示包含有日的式子产生的元素分布,这里通过修改日让P日(X)最大化,这时,产生的X可能是一个正常的X。

但是,这样子对于Z的需求量是极大的,所以自然不可能,所以,我们需要使用一个encoder,这里 encoder,是一个分布P(z|x),在这里,通过输入采样的x,得到z|x的分布,在这里,我们就可以采样出来z,然后再输入到decoder里面,这时,我们就可以得到x|z。

那么来看一下整一个VAE的架构。

做一个简单的总结。
VAE的流程分为以下的步骤,
1.我们会对 encoder中输入xi,通过神经网络,我们可以得到隐变量z的服从近似的高斯分布的参数,另encoder输出服从高斯分布的方差和均值。
2.接下来,我们会去利用这个高斯分布,去采样出一个zi,这个zi是一个与xi相似的一个变量。
3.之后,就是去采样一个zi,然后,去把这里的图像做一个新的采样,得到一个高斯分布的方差和均值

对于这个模型,在接下来的步骤就是反向传播。
那么我们应该怎么去做这个反向传播呢,这里我们会使用一个叫做KL散度和BCE的变量去计算他们的损失,作为loss function去推理他的结果,这里是我们的损失函数

后续会讲解代码。

posted @ 2025-05-16 18:39  fufufuf  阅读(29)  评论(0)    收藏  举报