目录
二、变分自编码器 VAE
1、自编码器 AE
(1)自编码器的基本结构与目标
1.1 编码器-解码器结构
1.2 目标函数:重构误差最小化
(2)自编码器与 PCA 的对比
2.1 PCA 与线性降维
2.2 非线性映射的优势
(3)自编码器在降维与表示学习中的意义
2、变分自编码器 VAE
(1)生成式模型与变分自编码器概述
(2)模型结构
2.1 编码器(Inference Network)
2.2 解码器(Generative Network)
(3)VAE 的解码器的核心思想
3.1 回忆高斯混合模型
3.2 高斯混合模型的扩展-VAE解码器
(4)参数的训练
4.1 最大化似然函数
4.2 变分推断
4.3 下界的推导
4.4 优化目标
4.5 KL散度的最小化
(5)VAE 相对于 AE 的优势
5.1 对噪声的建模
(6)重参数化技巧
(7)编码器部分的目标:近似后验
(8)VAE 总结
8.1 VAE整体流程概览
8.2 编码器部分的详细步骤
8.3 解码器部分的详细步骤
8.4 训练与推断阶段的对比
(9)VAE的局限性
9.1 生成图像“模糊”或“平均化”问题
9.2 可能出现“记住”训练样本的倾向
9.3 后验分布表达能力不足
9.4 高维数据与高保真生成的挑战
9.5 与 GAN 等其他生成模型的对比
9.6 训练目标平衡与超参数敏感性
9.7 总结
二、变分自编码器 VAE
1、自编码器 AE
核心思想:可以看成PCA的神经元网络化。
(1)自编码器的基本结构与目标
1.1 编码器-解码器结构
图中,可以看到自编码器的典型结构:
- 输入层:原始输入
(例如一张图像或一段向量)。
- 编码器(Encoder):一系列神经网络层,将高维的
压缩到低维的隐藏表示
(也称潜在表示,latent representation)。
- 解码器(Decoder):与编码器结构相对称或相似的网络,将低维的
还原回与输入同维度的
(即重构的结果)。
- 输出层:得到的重构
。
整个过程可用下式概括:
1.2 目标函数:重构误差最小化
自编码器的目标函数 :
其中:
表示第
个样本的重构误差(常见的是均方误差)。
是正则化项,用于约束网络的复杂度(例如权值衰减、稀疏性正则等)。
自编码器通过最小化重构误差来学习到一个对输入数据具有“良好”表示的隐藏向量 ,使得在压缩后仍能较好地重构出原输入。
(2)自编码器与 PCA 的对比
2.1 PCA 与线性降维
对比了 PCA(主成分分析) 与自编码器在降维上的效果:
- PCA:将原始数据通过线性映射(即正交变换)投影到方差最大的几个主成分上,实现降维。
- 自编码器:使用非线性神经网络进行编码和解码,能学习到更灵活、更丰富的表示。
从图中可以看到,在手写数字(如 0,1,2,3,4,9)上进行降维后,自编码器可以重构出更逼近原图的数字;而 PCA 由于其本质是线性映射,重构往往缺乏非线性特征的捕捉能力,因此在复杂数据上可能效果有限。
2.2 非线性映射的优势
自编码器通过多层感知机或卷积网络等方式实现编码-解码,可以学习到数据的非线性结构。对 MNIST 这种手写数字数据来说,每个数字都有不同的笔迹、线条弧度和书写风格,使用非线性模型更能捕捉到这种多样性,因此重构更好,潜在空间的分布也更有区分度。
(3)自编码器在降维与表示学习中的意义
-
通用性
图片中的示例主要是手写数字,但自编码器对其他高维数据(如图像、文本、推荐系统的用户-物品矩阵等)也适用。只要能定义合适的网络结构和损失函数,就可以把任何高维输入映射到较低维度的潜在空间进行分析和重构。 -
非线性表示学习
自编码器的编码器部分可以视为一个特征提取器,它能够在隐藏层中学习到对数据分布更有表达力的特征。这些特征在后续分类、聚类或检索等任务中往往表现优于简单的线性降维方法。 -
可视化
当将自编码器的中间层(特别是瓶颈层)的维度设为 2D 或 3D 时,就可以直接用来可视化数据在低维空间的分布,便于理解数据内部的结构和模式。 -
与正则化的结合
在第一张图的公式中可以看到正则化项。常见的扩展包括:
- 稀疏自编码器(Sparse AE):鼓励隐藏单元大部分为零激活;
- 去噪自编码器(Denoising AE):对输入添加噪声再重构;
- 变分自编码器(VAE):在潜在空间上引入概率分布假设;
这些方法都能让模型学到更具泛化能力或更具解释性的表示。
2、变分自编码器 VAE
(1)生成式模型与变分自编码器概述
生成式模型的目标是学习数据的分布,从而能够生成与真实数据相似的新样本。变分自编码器(Variational Autoencoder, VAE)是其中一种重要的生成模型,它将传统自编码器的框架与概率模型和变分推断方法相结合,不仅能够重构输入数据,还能从隐变量空间中生成新的数据。与对抗生成网络(GAN)相比,VAE具有明确的概率解释和连续平滑的潜在空间,使其在一些需要不确定性估计或潜在特征表达的任务中表现突出。
(2)模型结构
2.1 编码器(Inference Network)
- 结构分析:在VAE中,编码器的输出是一个分布
,
为在一个分布
中采样得到的值。相比于AE,VAE编码器不再是一个神经元网络直接从输入映射到 z ,而是产生一个分布(即一个
,一个
,而且这个
还有一定的随机性),再从这个分布中采样得到 z 。
- 功能:将输入数据
映射到潜在空间,并构造近似后验分布
。
- 输出:通常输出隐变量分布的参数(例如均值
和方差
),假设
为高斯分布。
- 意义:通过对输入数据进行编码,提取数据中的潜在特征,同时为后续的重构提供必要的隐变量信息。
- 编码器示意图如下:
2.2 解码器(Generative Network)
- 功能:根据从隐变量分布中采样得到的
重构输入数据,建模条件分布
。
- 生成:利用解码器网络,可以从连续的潜在空间中采样,生成新的数据样本。
- 意义:实现数据的重构和生成,是VAE作为生成式模型的核心部分。
(3)VAE 的解码器的核心思想
3.1 回忆高斯混合模型
- 图片中显示了一个数据分布
,由多个高斯分布(曲线)混合而成。
- 数学表达式:
, 其中
通常是一个离散的混合分量(整数索引),
为混合系数(满足多项分布),而
为第
个高斯分布
。
- 直观来说,这个模型假设数据
可能来自若干个不同的“子分布”(每个子分布是一个高斯),并用这些高斯分布的线性加权求和来近似整体分布。
- 局限性:当数据分布过于复杂时,仅依靠少量高斯分量可能难以逼近;若增加分量数,模型复杂度也随之增加。
3.2 高斯混合模型的扩展-VAE解码器
- 图片中显示了一个数据分布
,由无数个高斯分布(曲线)混合而成。计算
的过程就是解码的过程
- 数学表达式:
, 其中隐变量
并非离散,而是可以在连续空间中取值。,
为混合系数(先验一般取标准正态分布
,即初始值),而
为第
个高斯分布
(参数通过神经网络学)。
- 随着
在连续空间中移动,解码器会生成一系列可能的
,从而可以近似很多形状复杂的分布。
即是编码器中的
的先验,它是联系编码器与解码器的桥梁。
- 解码器示意图如下:
VAE整体结构图:
采样
其中 和
是输出分布(最大后验分布)的参数。
可视为重构的
(最大似然值)。
(4)参数的训练
4.1 最大化似然函数
VAE的目标是最大化观测数据 的似然
,即:
其中, 是解码器生成
的条件概率,
是隐变量
的先验分布(通常是标准正态分布
)。然后,VAE的目标就是通过最大化
来学习一个好的生成模型。为了实现这一目标,我们通常优化其对数似然:
4.2 变分推断
直接最大化 是不可行的,因为计算
非常复杂。为了简化这个过程,VAE引入了变分推断。首先,我们引入一个变分分布
,它近似于后验分布
。因此,我们将对数似然的目标函数重写为:
这种重写是通过变分下界(Variational Lower Bound)实现的,它允许我们在无法直接计算后验分布的情况下,进行优化。
4.3 下界的推导
而 本来就是
的近似,所以
且很接近于 0 .
所以得到 的下界
,记为
4.4 优化目标
其可以拆成两部分:
-
重构项:
这是VAE模型中解码器的主要任务,它负责通过隐变量
重构数据
。
-
KL散度项:
这是VAE中的正则化项,确保编码器的近似后验
不偏离先验分布
过多。
为了优化VAE,我们最大化这个下界:
其中:
- 第一个项
是重构误差,衡量通过解码器从隐变量
重构原始数据
的好坏。
- 第二个项
是KL散度,确保编码器输出的分布
与先验分布
之间的差异尽可能小。
- 我们希望第一项尽可能大,第二项前是减号,所以应尽可能小,第二项尽可能小就想要
尽可能接近标准正态分布,就意味着 z 没有任何辨识度,这样的话第一项就小了。而如果第一项大的话,预测就准确,此时
就不会太随机,第二项就不可能小了,所以这两部分的loss其实是相互拮抗的,要整体来看。
4.5 KL散度的最小化
KL散度是VAE优化的关键部分。它衡量了编码器输出的近似后验 与标准正态分布
之间的差异。为了最小化KL散度,编码器通过神经网络(如图中的NN')输出隐变量
的均值
和标准差
,并学习一个合适的分布。
公式为:
这是一个标准的KL散度的闭式解,它会对每个维度的隐变量进行计算。
(5)VAE 相对于 AE 的优势
图中显示了 VAE(Variational AutoEncoder)中的编码器部分,具体包含了从输入到输出均值() 和方差(
) 这两个步骤,以及后续的重参数化采样过程。
5.1 对噪声的建模
-
编码器通常由若干层神经网络组成,可以是多层感知器(MLP)或者卷积神经网络(CNN)等,具体取决于数据类型。
- 图像:常用卷积层提取空间特征,然后 flatten 或全连接输出到隐变量的分布参数上。
- 文本:常用RNN/LSTM/Transformer 等结构提取序列特征,再映射到分布参数上。
- 其他数据:根据数据特点选择合适的网络结构。
-
输出
编码器输出并不是直接的隐变量,而是隐变量分布(近似后验分布)
的参数,一般为均值向量
和对数方差向量
。
这样做的原因是:VAE希望通过一个高斯分布来表示给定后潜在变量
的不确定性,即
-
学习到“噪声”的方差
图中“自动学习到噪声的方差”指的就是通过最小化KL散度和重构误差,让网络自动去适配合适的(即每个维度的标准差),从而平衡“让分布贴近标准正态先验”与“尽可能重构输入”的目标。
-
如果只是最小化重构误差,而没有让 z 的分布贴近标准正态分布,则方差为0,此时VAE等同于AE 。
(6)重参数化技巧
-
采样的难点
如果我们直接从中采样
,采样过程不可导,无法对编码器进行梯度更新。
-
重参数化
为了使采样过程可导,VAE中引入了重参数化技巧:其中
是从标准正态分布采样得到的噪声向量,
表示逐元素乘法。
-
好处
由于和
都是由可学习的神经网络(编码器)输出的,
是与模型参数无关的随机噪声,因而我们可以对
和
进行反向传播,学习到让模型最优的分布参数。
(7)编码器部分的目标:近似后验
-
近似后验分布
VAE的编码器本质上在做“变分推断”,它试图用一个高斯分布去近似真实的后验分布。
- 先验分布:
(固定不变)。
- 后验分布:
(难以直接计算)。
- 近似后验:
(编码器输出),用神经网络来近似。
- 先验分布:
-
KL 散度
编码器要通过最小化KL散度来保证自己输出的分布不会偏离先验分布过远,从而使得潜在空间具有良好的结构。同时,KL散度也会抑制
不合理地变大或变小。
(8)VAE 总结
8.1 VAE整体流程概览
- 输入数据
:从训练集中获取样本(如图像、文本等)。
- 编码器(Encoder):将
映射到潜在分布的参数(
),得到近似后验
。
- 重参数化采样(Reparameterization Trick):根据
以及标准正态噪声
,得到隐变量
。
- 解码器(Decoder):从隐变量
生成或重构数据
,对应分布
。
- 计算损失并反向传播:包括
- 重构误差(衡量
与
的差异)
- KL 散度(约束
与先验
的接近程度) 将这两项结合在一起形成VAE的训练目标(ELBO),通过反向传播同时更新编码器和解码器的参数。
- 重构误差(衡量
8.2 编码器部分的详细步骤
-
输入
- 将观测数据
(图像像素、文本向量等)输入到编码器网络。
- 编码器可能是多层感知器(MLP)、卷积网络(CNN)、或其他合适的网络结构。
- 将观测数据
-
提取特征
- 编码器通过多层神经网络对输入数据进行特征提取,逐步将高维数据压缩到更紧凑的表示。
- 这些中间特征会为后续的分布参数输出做准备。
-
输出分布参数
- 编码器的最终输出通常是两个向量:均值
和对数方差
(或直接输出
)。
- 这两个向量共同决定了给定
后,隐变量
的近似后验分布
。
- 编码器的最终输出通常是两个向量:均值
-
重参数化采样(Reparameterization Trick)
- 直接从
采样
不可导,无法对编码器进行梯度更新。
- 因此使用重参数化:
,其中
- 这样采样过程可微,编码器网络就能在训练中被更新。
- 直接从
-
得到隐变量
- 最终,我们得到对
的隐变量表示
。
- 这一步完成后,
就可被解码器拿去生成重构。
- 最终,我们得到对
-
梯度更新(与损失函数一起)
- 编码器的参数在计算完重构损失和KL散度后,通过反向传播进行更新。
- KL散度部分会鼓励编码器输出的
贴近先验
,从而让潜在空间有良好结构。
8.3 解码器部分的详细步骤
-
输入隐变量
- 在训练阶段,
来自编码器输出的近似后验;在生成阶段,
来自先验分布
。
- 在训练阶段,
-
多层神经网络映射
- 解码器将
通过若干层非线性变换映射回数据空间。
- 对图像而言,可能使用转置卷积(Deconv)逐步还原为像素;对文本可能使用RNN/Transformer等结构生成词序列。
- 解码器将
-
输出分布或重构结果
- 解码器的输出可以是:
- 分布参数:如对图像像素输出Bernoulli/Gaussian的参数,对文本输出词的softmax概率分布等;
- 直接的重构:如连续值的像素。
- 这样就可以用对数似然或其它损失度量“重构”与真实数据的差异。
- 解码器的输出可以是:
-
计算重构误差(Reconstruction Loss)
- 根据解码器输出的分布
与真实数据
,计算负对数似然或交叉熵、MSE等。
- 这个重构误差越小,表示解码器越能“还原”或“生成”逼近
的样本。
- 根据解码器输出的分布
-
反向传播更新解码器参数
- 解码器参数通过重构误差与KL散度(间接影响)的组合在ELBO目标下被优化。
- 编码器和解码器协同训练,以在潜在空间和重构质量之间取得平衡。
-
生成新样本
- 训练完成后,只需从先验
采样
,输入解码器即可生成全新的样本
,实现生成式建模。
- 训练完成后,只需从先验
8.4 训练与推断阶段的对比
-
训练阶段
- 编码器 + 解码器共同工作:
- 编码器根据输入
输出
。
- 重参数化采样得到
。
- 解码器根据
生成
。
- 计算重构误差和KL散度,形成ELBO,反向传播更新参数。
- 编码器根据输入
- 编码器 + 解码器共同工作:
-
推断/生成阶段
- 只需使用解码器部分:
- 从先验分布采样
。
- 输入解码器生成新样本
。
- 从先验分布采样
- 无需真实数据
的参与,即可自由生成新样本。
- 只需使用解码器部分:
(9)VAE的局限性
VAE 在实际使用中也暴露出了一些局限性或常见问题。
9.1 生成图像“模糊”或“平均化”问题
i、重构目标导致的模糊
-
高斯假设与像素级重构损失
在最常见的实现中,VAE 通常假设图像像素的条件分布为高斯分布(或近似用均方误差/MSE做重构损失)。
这在面对多模态或复杂图像细节时往往导致生成结果出现“模糊”或“平均化”的现象。- 原因:当多个真实样本都可能对应相似的潜在向量
时,VAE 倾向输出一个平均(或折中)结果来最小化整体重构误差,导致缺乏锐度和细节。
- 原因:当多个真实样本都可能对应相似的潜在向量
-
多模态数据的平均化
例如,对于某些模态多样的图像(同一个潜在语义可能对应不同外观),VAE 在训练时可能更倾向于生成折中版本的图像,而无法像一些对抗式生成模型(GAN)那样更尖锐地选择某个模态。
ii、KL 散度与重构误差的平衡
- 在 VAE 的目标函数(ELBO)中,重构误差(
)与 KL 散度(
)同时被优化。
- 有时为了减小 KL 散度,模型会让后验分布
更贴近先验
,从而减少了潜在空间的灵活性,间接导致生成结果不够细腻或多样。
9.2 可能出现“记住”训练样本的倾向
i、重构训练集的图像
- VAE 只要能对训练集中样本重构良好,就可以得到较低的重构损失。如果模型容量足够大,VAE 可能学到某些近似“记忆”训练集中图像的方式。
- 图中“7”的例子(只需改动极少像素即可与原图保持接近)就说明,VAE 有时会生成与训练集样本非常相似的结果,而非完全新的样本。
ii、多样性不足
- 由于解码器要在给定
时产生“尽量接近真实图像”的结果,且编码器又试图把不同
压缩到潜在空间中,如果没有额外的约束或正则,VAE 有时缺乏对“新颖样本”的探索,生成结果容易集中于训练数据的局部模式。
9.3 后验分布表达能力不足
i、因果:VAE 对后验分布的限制
- 在最基本的 VAE 中,后验分布
被限制为各向同性高斯或对角高斯。
- 这种限制导致模型可能无法充分表达数据的潜在复杂性。对于非常复杂或多模态的数据,简单的高斯假设无法捕捉到真实后验的形状,从而影响生成质量和表示能力。
ii、Posterior Collapse(后验坍缩)
- 在某些情况下(尤其是文本生成、序列生成时),后验分布可能退化为与先验几乎相同,编码器几乎不使用输入信息,
失去表达力。
- 这被称为“Posterior Collapse”,导致模型学习不到有用的潜在表示,生成质量也随之下降。
9.4 高维数据与高保真生成的挑战
i、VAE 对高分辨率图像的局限
- 对于分辨率较高、细节丰富的图像(如人脸、风景等),标准 VAE 通常很难生成细节清晰的结果。
- 研究者常需在网络结构、后验假设、损失函数上做更多改进(如使用 PixelVAE、PixelCNN 解码器、或分层 VAE),才能在高分辨率生成任务上取得更好效果。
ii、训练难度与网络设计
- 在高维数据上,如何设计合适的网络结构(例如更深层的 CNN、分层 VAE、流模型与 VAE 结合等)也成为一大挑战。
- 如果网络结构设计不当或优化不稳定,VAE 容易出现收敛慢、生成质量差等问题。
9.5 与 GAN 等其他生成模型的对比
i、生成逼真度
- 在很多视觉任务中,GAN(生成对抗网络)往往能生成更清晰、更逼真的图像。
- 相比之下,标准 VAE 在逼真度和细节方面可能稍显不足,易产生“模糊”感。
ii、模型目的与优势
- 当然,VAE 有自己独特的优势:可以显式估计数据似然,更容易在潜在空间进行插值、概率推断等;而 GAN 的判别器只提供一个对抗信号,并没有显式的似然估计。
- 但在“生成图像质量”这一点上,VAE 通常需要额外的改进(如 VAE-GAN、VQ-VAE、Glow 等)才能与 GAN 抗衡。
9.6 训练目标平衡与超参数敏感性
i、β-VAE 与权衡
- 为了平衡重构质量与潜在表示的解耦、通用性等,许多改进版本(如 β-VAE)在 ELBO 中引入可调节系数 β,控制 KL 散度项的权重。
- 但这也带来超参数调节的复杂性,且不同数据集和任务需要不同的超参数组合,影响模型性能。
ii、优化过程不稳定
- 虽然 VAE 的目标函数相比 GAN 更稳定(不需要对抗训练),但在高维场景或分层结构中,找到合适的学习率、批大小等也不易,模型易出现训练早期过拟合或后验坍缩等现象。
9.7 总结
- 模糊与平均化:VAE 常出现模糊的重构或生成图像,难以捕捉高频细节,容易产生平均化结果。
- 多样性不足:可能倾向记忆训练样本,或仅在训练集中样本周围做小改动,而不是生成真正新颖的样本。
- 后验表达能力有限:简单的高斯假设难以建模复杂分布,可能出现后验坍缩。
- 高维与高保真难度:在高分辨率、细节丰富的数据上,VAE 的重构或生成质量常不及对抗式模型,需要更多结构性改进。
- 与 GAN 对比:GAN 在图像逼真度上往往表现更好,而 VAE 在可解释性、潜在空间操作等方面有其优势。
- 超参数与优化:平衡重构和 KL 散度需要仔细调参,容易出现不稳定或训练不充分。
总的来说,VAE 并非“全能”的生成模型,在图像逼真度和多样性上仍存在不少挑战。但它的可解释性、对潜在空间的显式建模、以及与其他方法结合的潜力,依旧使其在许多研究方向中扮演着重要角色。后续的改进(如层级式 VAE、流模型结合、离散潜在变量、VQ-VAE 等)也在不断推进其生成能力与灵活性。