变分自编码器以及公式推导过程

变分自编码器(Variational Autoencoder,VAE)是一种生成模型,它可以从数据中学习到一个潜在变量的概率分布,同时也能够通过这个概率分布生成新的数据。
VAE 的核心思想是利用变分推断(variational inference)的方法,学习一个潜在变量的概率分布,从而使得模型能够生成新的样本,并且在生成过程中能够控制样本的特征。下面我们将详细介绍 VAE 的模型结构和推导过程。
VAE 的模型结构:
VAE 的模型结构包括编码器和解码器两个部分,编码器将输入数据 x 映射到潜在变量 z 的分布 q(z|x),解码器将潜在变量 z 映射回重构数据 x’ 的分布 p(x’|z)。在训练过程中,VAE 的目标是最小化重构误差和潜在变量分布 q(z|x) 与先验分布 p(z) 之间的 KL 散度。

具体来说,VAE 的目标可以表示为以下公式:
在这里插入图片描述
其中,第一项表示重构误差,它是训练数据 x 和解码器生成的数据 x’ 之间的差异,可以用交叉熵等度量方法计算。第二项表示潜在变量分布 q(z|x) 与先验分布 p(z) 之间的 KL 散度,它衡量了 q(z|x) 与 p(z) 之间的距离,即 q(z|x) 是否能够很好地表示先验分布 p(z)。
由于 q(z|x) 一般是一个高斯分布,因此我们可以通过编码器网络将输入数据 x 映射到均值向量 μ 和方差向量 σ,然后从均值和方差的分布中采样潜在变量 z。具体来说,我们可以用以下公式表示:
在这里插入图片描述
其中在这里插入图片描述
一个噪声向量,在这里插入图片描述
表示逐元素乘法。这样,我们就可以通过编码器网络将输入数据 x 映射到潜在变量 z 的分布 q(z|x)。
在解码器部分,我们需要将潜在变量 z 映射回重构数据 x’ 的分布 p(x’|z)。一般来说,我们可以用一个解码器网络来实现这个映射,例如全连接层或者卷积神经网络。与编码器网络不同的是,解码器网络需要将潜在变量 z 作为输入,并生成重构数据 x’ 作为输出。
在变分自编码器中,我们通常假设重构数据 x’ 的分布是由一个具有一些参数的分布族 Q(x’|z) 所产生的,这些参数由解码器网络的输出决定。假设我们的解码器网络是一个具有参数 θ 的神经网络,那么重构数据 x’ 的分布可以表示为:
在这里插入图片描述
接下来,我们需要定义一个损失函数来度量重构数据 x’ 和原始数据 x 之间的差距。一般来说,我们可以使用均方误差(Mean Squared Error,MSE)或交叉熵(Cross Entropy)等损失函数来度量它们之间的差距。在本文中,我们以均方误差为例,损失函数可以表示为:
在这里插入图片描述
其中,N 表示样本数量,x_i 表示第 i 个样本的原始数据,x_i’ 表示第 i 个样本的重构数据。由于我们希望最小化重构误差,因此我们需要最小化损失函数 L_rec。

最后,我们需要将编码器和解码器网络结合在一起,构建一个端到端的变分自编码器模型。为了达到这个目的,我们需要定义一个最终的目标函数,即变分自编码器的代价函数:
在这里插入图片描述
其中,D_KL 表示 Kullback-Leibler 散度,q_φ(z|x_i) 表示根据给定的样本 x_i 和网络参数 φ 计算出的潜在变量 z 的后验分布,p(z) 表示先验分布。代价函数 L(θ,φ) 是由重构误差和潜在变量的先验分布之间的差异所组成的,我们需要最小化这个代价函数。通过对代价函数进行求导,我们可以使用反向传播算法来训练变分自编码器,更新网络参数,最小化代价函数。
其中,D_KL 表示 Kullback-Leibler 散度,q_φ(z|x_i) 表示根据给定的样本 x_i 和网络参数 φ 计算出的潜在变量 z 的后验分布,p(z) 表示先验分布。代价函数 L(θ,φ) 是由重构误差和潜在变量的先验分布之间的差异所组成的,我们需要最小化这个代价函数。通过对代价函数进行求导,我们可以使用反向传播算法来训练变分自编码器,更新网络参数,最小化代价函数。

猜你喜欢

转载自blog.csdn.net/weixin_44857463/article/details/129673964