这张图片是由Meta AI生成的
议程- 自编码器
- 隐变量模型
- 概率主成分分析(概率PCA)
- 变分自编码器(变分自编码器模型)
- 结论
- 或者根据上下文风格调整为:
- 自编码器
- 潜在变量模型
- 概率主成分分析(概率PCA)
- 变分自编码器(变分自编码器模型)
- 总结
一个自动编码器是一种用于压缩和恢复输入数据的神经网络。自动编码器常被用于如图像重建和去噪等任务。
自动编码器(图片由作者提供)
如上图所示,输入数据的维度在中间层被降低了。网络的第一个部分,也就是输入维度被减少的地方,通常被称为编码器,而第二部分,即用来恢复原始输入维度的地方,则通常被称为解码器。其中维度最小的部分,通常称作瓶颈层。
自编码器通过最小化输入和重建输出的均方误差(MSE)来进行训练。
要了解更多关于自编码器(autoencoders)的内容,可以参考以下详细介绍自编码器的文章。
这篇文章探讨了超越标签:非监督学习中自动编码器的魔力在标签数据稀缺的世界里,自动编码器提供了一种强大的工具,用于从数据中提取见解……pub.towardsai.net 自编码器能否用来生成新图像,而不仅仅是复原现有图像?这是我们能试试的一个点子。
我们可以只用解码器,把训练好的编码器部分扔掉。接下来随机选取瓶颈层的一些值,把这些值输入训练好的解码器。这样可能会生成一些东西。然而,这些生成的图像是否能被人类认出来就是另一个问题了。通常,这些图像很难被认出来。
如果我们了解了瓶颈层的值的概率分布,我们就可以从中采样值,从而生成更加真实的图像。这种方法的缺点是,我们不知道瓶颈层的值的概率分布。
这一概念是latent variable models的基础,这些模型旨在更好地理解和操控潜在空间中的变量。此类别中两个知名的模型是Probabilistic Principal Component Analysis (P-PCA)和Variational Autoencoders (VAE),我将在本文中讨论这两个模型。
潜变量模型 (LVMs)
让我们先来理解什么是潜在变量。潜在变量是指那些不能直接观察到,而是从数据中推断出来的变量。它们用来描述或解释现实世界数据中的隐藏结构或分布。潜在变量通常被认为遵循某种已知的概率分布,比如标准正态分布(即均值为0、标准差为1的正态分布)。
在生成图像的过程中,数据集中的每一张图像都可以用相应的点来表示,这个点位于一个低维潜在变量空间中。我们在训练潜在变量模型时的目标是学习一个映射,该映射能将潜在变量转化为看起来真实的图像。
这种转换通常使用一个神经网络来完成,该神经网络充当一个解码器,将潜在表示形式转化为有意义的图片。在某些模型中,例如变分自编码器(VAEs),在解码过程中会加入噪声,以此来促进平滑且多样的图像生成。
(由AI生成的图像) 使用乐高(Lego)演示潜在变量模型
在图片中展示的潜在变量模型(LVM)类比中,红色的积木代表潜在变量,而紫色的积木则代表真实数据。每个积木代表一个用于转换的神经网络层。
概率主成分分析(P-PCA)p-PCA认为每个观察到的样本 x(维度—m) 是从一个潜在特征向量 z(维度 d,d < m)生成的,并且潜在特征 z 可以从均值为0,协方差为单位矩阵的多元正态分布中抽取。
p-PCA参数包括投影隐含特征到观测空间的矩阵W(大小m x d),均值mu(尺寸m),以及方差sigma(尺寸1)。
p-PCA,有一个封闭形式解。
对于一个包含 n 个示例的数据集(每个示例 x 的维度为 m),其均值为 mu,协方差为 S,
其中 U_q 包含 S 的前 d 个主要特征向量(即与 d 个最大绝对值对应的特征向量),A_q 是一个对角矩阵,包含这 d 个最大绝对值的特征值。
在估计了概率主成分分析(PPCA)的参数之后,我们可以通过从标准正态分布中随机采样值来生成新的数据点,这些数据点通过隐变量向量z和学到的模型参数生成,该向量z通过从标准正态分布中随机采样值获得。然后使用学到的模型参数对向量z进行变换。
通过对采样的 z 向量应用此变换,我们得到一个新的数据点 x,它是随机生成的观测值。如果原始的 x 值代表的是图像,这样我们就可以通过从标准正态分布中采样 z 值,并通过学到的 p-PCA 模型生成新的图像。
我已经用人脸图像训练了一个p-PCA模型。这里有一百张通过这个模型生成的图像:
由训练好的p-PCA模型(例如,作者自建模型)生成的图像
生成的图片有点模糊。这是因为p-PCA模型是线性的,因此比较简单。
我们也可以通过轻微扰动一个潜在变量,看看这样会如何影响生成的图像。我制作了一个由扰动潜在变量生成的图像5×10的拼图。也就是5个不同的潜在维度,每个维度有10个不同的线性扰动。
原图:
来自数据集的原始图像(作者提供),
干扰后的图像:
(图片由作者提供):在潜在向量值扰动后,p-PCA模型生成的图像
您可以在这个链接找到使用p-PCA生成这些图像的完整代码。
基于概率PCA的图像生成探索并运行相关的机器学习代码 变分自编码器(VAE,读作'V-A-E'),一种生成模型变分自编码器(VAE)可以被视为概率主成分分析(p-PCA)模型的非线性扩展。虽然VAE与传统的自编码器类似,但关键的区别在于VAE强制隐空间中的近似正态分布,而不是简单地压缩和解压缩数据。这一约束提升了模型捕捉数据底层结构的能力,同时使更有效的采样和生成成为可能,从而提高模型的灵活性和实用性。
(来源:维基百科)变分自编码器高级架构
正如之前所述,我们无法仅凭自编码器训练出的解码器生成逼真的图像,因为隐含空间的概率分布无法确定。
为了解决这个问题,我们让潜空间接近正态分布,使我们能够从中采样以生成逼真的图像。此外,我们将解码器的输出视为生成图像的平均值。因此,向解码器的输出中加入一些噪声,以获得最终生成的图像。这就是变分自编码器(VAE)的核心理念。
VAE 架构(不使用重参数化技巧(reparameterization trick))(来源:WPI CS552 课程讲义)
在上图中,X 既表示输入也代表重构的输出,Q 代表编码网络,而 P 代表解码网络。
为了使潜在空间接近正态分布,编码器输出潜在空间的均值和标准差,然后从中采样作为解码器的输入。
然而,问题在于隐空间中的采样操作无法微分。如果不做改动,这将使我们无法通过反向传播来更新编码器的参数。
为了解决隐变量空间中非可微分抽样的问题,我们使用了一种称为重参数技巧的方法来解决这个问题。
重参数技巧在VAE中(来自WPI CS552课程讲义)
重新参数化技巧背后的思路是将采样操作变得可微分,从而使反向传播过程能够更新网络的参数。如上图所示,一旦我们从编码器输出中获得均值和标准差,我们从标准正态分布中采样一个值ε,并使用公式*z = mu + epsilon sigma**。这样得到的z值就作为解码器的输入。
VAE的训练损失不同于传统自动编码器的损失。普通的自动编码器使用原始数据和重构输出之间的均方误差,而VAE的损失包括两个部分:输入与输出之间的重构损失(通常是均方误差)以及编码器输出的分布与潜在向量空间的先验分布之间的Kullback–Leibler (KL) 散度。如果假定这两个分布都是正态分布,我们可以在闭式形式中计算KL散度。这个损失项也被称为证据下界 (ELBO)。
在最基本的形式中,VAE 可能会遇到一个名为 后验坍塌 的问题。这种情况发生在编码器学习到的分布过于接近先验分布(即标准正态分布),导致隐变量丧失了关于输入的有意义的信息。这样,解码器主要依赖先验分布,降低了模型生成多样化且丰富信息的输出能力。
这种崩溃是由于损失函数中的KL散度项导致的,该项促使潜在空间分布接近正态分布。为解决这一问题,通常的做法是引入超参数β(如在β-VAE中),用来调节KL散度项。
- 如果 β较小 (<1),则KL项被分配较少的权重,允许潜在空间保留更多的有意义结构,并防止潜在空间退化为先验。
- 如果 β较大 (≥1),潜在空间被强制更严格地遵循正态分布,增加了后验坍缩的风险。
- 如果 β = 1, 当β等于1时,β-VAE表现得就像普通的VAE。
因此,β是一个至关重要的超参数,需要仔细调节以平衡有意义的潜在表示形式和正则化之间的权衡,从而提升生成数据的质量。
训练了β-VAE模型之后,使用与训练p-PCA模型相同的数据集,我能够生成以下图像:
由训练好的VAE模型生成的图片 (图片由作者制作)
注意,使用VAE模式生成的图像比使用p-PCA模型生成的图像要清晰得多。这主要是因为VAE模型具有非线性的特性,比p-PCA模型更复杂。
让我们来做一个有趣的实验!首先,我们将选择两个随机点在潜在向量空间内。接下来,将在这两个点之间生成20个等间距的点。接着,将这20个点逐一通过训练过的VAE(变分自编码器)解码器生成相应的图像。下面的结果展示了图像如何在这两个点之间平滑过渡。
线段上的点生成的图像是怎样的(由作者绘制)
你可以看到,在第一张图片中,这个人表情很自然,而在最后一张图片中,他们看起来很开心的样子。注意,从一个中性的表情慢慢变得开心,在中间的图片中逐渐变得平滑。
你可以找到用于生成图像的完整代码以及实验用的代码,链接如下:
(点击这里查看)
使用VAE生成图像的探索| 探索并运行Kaggle笔记本上的机器学习代码| 使用Face Images数据集
结尾
在这篇文章中,我们首先探讨了自编码器是否可以生成图像,而不仅仅是重建图像。我们发现这并不可行,因为潜在空间的概率分布是未知的,因此无法直接生成图像。为应对这一挑战,我们研究了两种对潜在空间分布施加限制的模型:概率主成分分析(pPCA)和变分自编码器(VAEs),这两种模型都能用来生成图像。在这个过程中,我们还观察到修改某些潜在变量或沿着某个方向进行探索,会引发生成图像的渐进且有意义的变化。
结束语谢谢大家的阅读。如果您喜欢这篇文章,请点一下那个鼓掌的小图标。您可以关注我在**[Medium](https://medium.com/@shivamshinde92722) 和 [LinkedIn](https://www.linkedin.com/in/shivamds92722/)**,获取更多这样的文章。
你是否在为接下来读什么书而烦恼?别担心,我已经为你想好了。
语义搜索如何改变我们寻找信息的方式本文探讨了过去搜索是如何工作的,以及它是如何通过语义搜索技术发生革命性变化的pub.towardsai.net 文本分类指南:使用Transformer模型进行文本分类…本文将介绍各种方法来使用基于Transformer的模型进行文本分类…再讲一个…
从单词到向量:探索文本嵌入技术:本文将带你探索各种技术,将文本转换成机器学习的格式...pub.towardsai.net 参考文献 变分自编码器 - 维基百科 机器学习中的变分自编码器(VAE,variational autoencoder的缩写)是一种神经网络架构,是自动编码器的一种变体。 深度学习的理解伍斯特理工学院 (WPI) 2025年春季CS552 生成式AI课程讲义
共同學習,寫下你的評論
評論加載中...
作者其他優質文章