变分自编码(VAE,Variational Auto-Encoder)知识点速览

目录

1. 主要思想

2. 训练和推理过程

3. 编码器和解码器的结构

4. 主要用途

5. 相较于 auto-encoder 的优劣


1. 主要思想

        变分自编码器(Variational AutoEncoder,简称VAE)是一种生成模型,它通过对数据的隐含表示(latent representation)进行概率建模,能够生成与训练数据类似的新数据。在深度学习中,VAE结合了深度神经网络和贝叶斯推理的概念。

VAE的主要思想是:假设存在一个可以生成我们观察到的数据的隐含变量,并且我们可以通过学习这个隐含变量的分布来生成新的数据。VAE的核心是一个编码器网络和一个解码器网络。

  • 编码器(Encoder):编码器部分的作用是学习输入数据(比如图片)到隐含空间的映射。在这个过程中,编码器试图将输入数据压缩为一个潜在空间中的点,这个点的坐标由潜在向量(latent vector)表示。这个潜在向量不是一个确定的点,而是一个分布(通常假设是正态分布),由均值和标准差决定。

  • 解码器(Decoder):解码器部分的作用是学习从隐含空间到输入数据的反向映射。解码器从编码器产生的潜在向量中采样,然后试图将这个采样点恢复(或者说解码)为原始的输入数据。

VAE的优化目标包括两部分:一部分是重构损失,即解码的数据与原始输入数据的差异;另一部分是KL散度损失,即编码器得到的潜在变量分布与事先假设的分布(比如标准正态分布)的差异。

2. 训练和推理过程

训练过程

  1. 编码:首先,输入数据(如一张图片)被送入编码器网络,编码器会为这些输入数据生成一个潜在向量的分布,通常是高斯分布,有其均值和方差。潜在分布是预先设定的,通常为标准正态分布。

  2. 采样:接着,在这个分布中采样一个潜在向量。为了使采样过程可微,采样过程通常使用“重参数化技巧”实现,即潜在向量等于其均值加上标准差乘以一组随机噪声。

  3. 解码:将采样得到的潜在向量送入解码器,解码器将潜在向量解码为重建的输入数据。

  4. 计算损失函数:损失函数通常由两部分组成,一部分是重建损失,即重建的输入数据与原始输入数据的差异;另一部分是KL散度损失,即编码器生成的潜在向量的分布与预先设定的潜在分布(通常是标准正态分布)之间的差异。

  5. 反向传播:计算损失函数的梯度,然后用优化算法(如SGD、Adam等)更新模型的参数。

  6. 重复以上步骤:不断重复以上步骤,直到模型参数收敛,或者达到预设的训练轮数。

推理过程

  1. 编码:输入数据被送入训练好的编码器网络,编码器为输入数据生成一个潜在向量的分布。

  2. 采样:在这个分布中采样一个潜在向量。

  3. 解码:将采样得到的潜在向量送入解码器,解码器将潜在向量解码为重建的输入数据。

也可以不输入任何数据,而是在潜在空间中随机采样一个潜在向量,然后通过解码器生成新的数据,这是VAE的生成能力。

3. 编码器和解码器的结构

        编码器和解码器可以是各种形式的神经网络,其结构可以根据任务的具体需求来选择。通常,如果输入数据是结构化数据,可以使用全连接网络(即密集网络)作为编码器和解码器;如果输入数据是图像,通常会使用卷积神经网络(CNN)作为编码器,使用反卷积神经网络(或称转置卷积网络)作为解码器。

  1. 编码器:编码器的目的是将输入数据编码成潜在向量的分布(通常是高斯分布),所以编码器的最后一层通常是全连接层,输出潜在向量的均值和(对数)方差。如果输入数据是图像,编码器通常由多层卷积层和全连接层组成,卷积层用于从图像中提取特征,全连接层用于将特征映射到潜在向量的分布(均值向量和(对数)方差向量)。

  2. 解码器:解码器的目的是将潜在向量解码成重建的输入数据,所以解码器的最后一层通常是全连接层(如果输入数据是结构化数据)或转置卷积层(如果输入数据是图像),输出重建的输入数据。如果输入数据是图像,解码器通常由全连接层和多层转置卷积层组成,全连接层用于将潜在向量映射到图像特征,转置卷积层用于将特征解码为重建的图像。

需要注意的是,编码器和解码器的结构并不一定要对称,可以根据任务的具体需求来选择。同时,随着深度学习的发展,也有许多新的网络结构被用于编码器和解码器,如残差网络、注意力机制等。

4. 主要用途

  1. 生成新的数据:由于VAE是生成模型,所以一旦训练完成,我们可以通过在潜在空间内随机选择点并通过解码器生成新的数据。例如,如果我们在MNIST数字数据集上训练VAE,我们可以生成新的手写数字。

  2. 数据压缩:VAE的训练过程本质上是在学习一个压缩和解压的机制,将高维的输入数据压缩到低维的潜在空间,然后从潜在空间解压缩回原始的高维空间。

  3. 数据去噪:VAE也可以用来对输入数据进行去噪,即从带噪声的输入数据中恢复出原始的无噪声数据。

  4. 探索数据的隐含结构:通过观察和分析潜在空间的结构,我们可以了解数据的隐含结构或模式。

  5. 强化学习:在强化学习中,VAE可以用来学习一个环境的模型,从而用于模型预测或模型优化。

  6. 样式迁移:VAE也可以用于样式迁移,将一种样式的特征应用到另一种样式的内容上。

5. 相较于 auto-encoder 的优劣

优势:

  1. 潜在空间的连续性和平滑性:在AE中,潜在空间的特性(比如连续性和平滑性)取决于训练数据和网络结构,并没有明确的保证。在VAE中,由于我们显式地将潜在变量的分布约束为特定的分布(如标准正态分布),这使得VAE的潜在空间具有良好的连续性和平滑性。这意味着在VAE的潜在空间中,接近的点会被解码成相似的输出,这对于很多任务(如生成任务、插值任务)都非常有利。

  2. 生成新样本:由于VAE的潜在空间的连续性和平滑性,我们可以通过在潜在空间中进行采样,然后通过解码器生成新的数据样本,这在AE中往往无法做到。

  3. 更丰富的表示学习:VAE通过引入随机性,可以学习到数据的更丰富的表示。在VAE中,潜在向量不仅仅是一个确定的点,而是一个分布,这使得VAE可以更好地模拟数据的复杂性和不确定性。

  4. 解释性:因为VAE对潜在空间有明确的概率模型,我们可以更好地理解和解释潜在变量与数据的关系。

劣势:

  1. AE的训练通常需要更多的计算资源,因为需要进行随机梯度变分推理。
  2. VAE的重构效果通常不如AE,特别是当数据复杂度高或者噪声大的时候。

参考材料:

VAE变分自动编码_vae 李宏毅_Dongxue_NLP的博客-CSDN博客

GPT-4 from OpenAI

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
变分自编码器(Variational Autoencoders,VAE)是一种生成模型,结合了自编码器和变分推断的概念。 VAE的目标是学习输入数据的潜在表示,并通过该表示生成新的样本。与传统的自编码器不同,VAE引入了概率分布的概念,并通过变分推断来学习数据的分布。 以下是VAE的主要组成部分和工作流程: 1. 编码器Encoder):编码器将输入数据映射到潜在空间中的潜在变量(latent variable),也称为编码(encoding)。编码器的目标是学习数据的分布,并产生潜在变量的均值和方差。 2. 解码器(Decoder):解码器接收潜在变量作为输入,并将其映射回原始数据空间中,以重构输入数据。解码器的目标是学习生成数据的分布,并尽可能准确地重构输入数据。 3. 潜在变量采样(Latent Variable Sampling):在训练过程中,从编码器中获得的均值和方差用于参数化一个概率分布,然后从该分布中采样潜在变量。这个采样过程使得VAE能够生成多样化的样本。 4. 损失函数(Loss Function):VAE使用重构损失和KL散度损失来训练模型。重构损失衡量重构样本与原始样本之间的差异,KL散度损失衡量潜在变量的分布与预定义的先验分布之间的差异。通过最小化这两个损失函数,VAE能够学习到数据的潜在表示。 VAE的训练过程可以概括为以下几个步骤: 1. 输入数据经过编码器,获得潜在变量的均值和方差。 2. 根据潜在变量的均值和方差,从潜在空间中采样一些潜在变量。 3. 采样的潜在变量输入解码器,生成重构样本。 4. 计算重构损失和KL散度损失,并将它们相加得到总体损失。 5. 使用反向传播算法更新编码器和解码器的参数。 6. 重复步骤1-5,直到达到预定的训练迭代次数或达到训练目标。 VAE通过学习数据的潜在表示,能够生成新的样本,并且具有较好的样本多样性和连续性。它在图像生成、特征提取和数据压缩等领域具有广泛的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值