当前位置:   article > 正文

(Latent Space)理解机器学习中的潜在空间

latent space

原文链接:https://zhuanlan.zhihu.com/p/369946876

搬运自

并加入了一些自己的理解在里面

什么是潜在空间?

If I have to describe latent space in one sentence, it simply means a representation of compressed data.

想象一个大的手写数字数据集(0–9),就像上面显示的那样。 与其他不同编号(即3s与7s)的图像相比,相同编号的手写图像(即3的图像)彼此最相似。 但是我们可以训练一种算法来识别这些相似之处吗? 如何进行?如果您已经训练了一个模型来对数字进行分类,那么您也已经训练了该模型来学习图像之间的“结构相似性”。 实际上,这就是模型能够通过学习每个数字的特征而首先对数字进行分类的方式。

如果这个过程似乎对您“隐藏”了,那根据定义,潜在性即是指“隐藏”。“潜在空间”的概念很重要,因为它的用途是“深度学习”的核心-学习数据的特征并简化数据表示形式以寻找模式。 感兴趣吗? 让我们一点一点地分解潜在空间。

其实,Latent Variable这个概念在统计机器学习中并不陌生,概率图模型里从GMM (高斯混合模型), HMM(隐马尔科夫模型), 到PPCA (概率PCA) 和 LDS(线性动态系统,也叫卡曼滤波), 都有Latent Variable的身影。在这些模型中,我们用Latent Variable来描述模型对于分布的certainty与uncertainty。因为我们在概率图的框架下用一些分布来拟合给定数据分布时需要这样一个未知变量(Latent Variable)来对拟合函数(用来拟合数据的分布函数, 如高斯分布)们进行一种有效“组合”, 这样的组合可以是线性的,如GMM, 也可以是非线性的,如PPCA,如果我们把时序也考虑进来,就分别有了HMM与LDS。

那么以上几种概率图模型中我们其实是在通过学习Latent Variable (Latent Space)来展开学习进程的。好,那么深度神经网络呢? Latent Space对于深度神经网络的意义在何?

深度神经网络即深度学习是一种Representation Learning, 表征学习。顾名思义,学习数据表征。我们的学习过程已经不是靠一些分布来拟合给定数据的分布, 而是通过空间转换来学习数据特征。 从什么空间到什么空间呢? 从数据分布空间到任务的目标分布空间。还是上面的数字识别分类任务,原始数据分布是图片的像素的数值和位置分布空间, 任务目标分布空间是0-9这10个数字对应的离散概率质量分布。 我们在每一层使用向量的线性变换 + 非线性变换的方式将原始分布 (即一个高维向量) 映射到另一个目标分布(即另一个相对低维向量)。 线性变换用到了矩阵变换,batch gradient descent 和 mini-batch gradient descent更新矩阵参数时考虑到了一个 batch(或mini-batch)中所有的映射对, 即每一次更新参数时考虑了一个 batch(或mini-batch)中所有的映射对,所以我们可不可以感性的理解矩阵的参数在经过多次迭代更新后具有了这个分布空间转换的分布特性

在inference时我们把每个数据一个一个的放进模型 (深度神经网络), 经过层层转换,我们得到每个数据的特定特征, 即,稍微不同于其他数据的特征,但还与他们存在某种关系或关联。 这个特征 (向量) 体现在哪儿呢?

我们为什么要在ML中压缩数据?

数据压缩定义为使用比原始表示更少的比特对信息进行编码的过程。 这就像获取一个19D数据点(需要19个值来定义唯一点)并将所有这些信息压缩到9D数据点中一样。

通常,在机器学习中对数据进行压缩以学习有关数据点的重要信息。 让我用一个例子来解释。假设我们想训练一个使用全卷积神经网络(FCN)对图像进行分类的模型。 (即,给定数字图像后输出数字位数)。 作为模型“学习”,它只是简单地学习每一层的特征(边缘,角度等),并将特征的组合归因于特定的输出。但是,每次模型通过数据点学习时,图像的维数都会先减小,然后才最终增大。 (请参见下面的编码器和瓶颈)。 当降维时,我们认为这是有损压缩的一种形式。

因为需要模型来重建压缩数据(请参见解码器),所以它必须学会存储所有相关信息并忽略噪声。 这就是压缩的价值,它使我们能够摆脱任何无关的信息,而只关注最重要的功能。

这种“压缩状态”是数据的潜在空间表示。我们所说的空间是什么?

您可能想知道为什么我们将其称为潜在空间。 毕竟,乍一看,压缩数据可能不会引起任何形式的“空间”。但是,这是平行的。在这个非常简单的示例中,假设我们的原始数据集是尺寸为5 x 5 x 1的图像。我们将潜在空间尺寸设置为3 x 1,这意味着压缩数据点是一个3维向量。

Whenever we graph points or think of points in latent space, we can imagine them as coordinates in space in which points that are “similar” are closer together on the graph

随之而来的自然问题是,我们将如何想象4D点或n维点或什至非矢量的空间(因为不需要将潜在空间表示为2维或3维矢量,而且通常不需要太多) 信息将会丢失)。不能令人满意的答案是,我们不能。 我们是无法理解n维空间(例如n> 3)的3维生物。 但是,有些工具(例如t-SNE)可以将我们的高维潜在空间表示转换为可以可视化的表示(2D或3D)。 (请参阅下面的“可视化潜在空间”一节。)但是您可能想知道什么是“相似”图像,为什么减少数据的维数会使相似图像在空间上“更紧密”在一起?

相似是什么意思?

如果我们查看三个图像,其中两个是椅子,一个是桌子,我们很容易地说这两个椅子图像最相似,而桌子与任何一个椅子图像的区别最大。

但是,什么使这两个椅子图像“更相似”?椅子具有明显的特征(即靠背,无抽屉,两腿之间的连接)。通过学习边缘,角度等的图案,这些都可以被我们的模型“理解”。如所解释的,这样的特征被包装在数据的潜在空间表示中。因此,随着维数的减少,与每个图像截然不同的“外部”信息(即椅子颜色)从我们的潜在空间表示中被“去除”,因为只有每个图像的最重要特征都存储在潜在空间表示中。 结果,随着我们减小尺寸,两把椅子的表示变得越来越不清晰,越来越相似。如果我们想象它们在空间中,它们将“紧密”在一起。请注意,我在整篇文章中提到的“接近度”指标是一个歧义术语,而不是确定的欧几里得距离,因为空间中存在多种距离定义因为机器“看到的”数据表征形式和我们人用肉眼看和思维理解到的是不一样的!在理解特征向量的时候,我们不能用人类的思维去考量。在概率图里,我们还能把latent variable当作分布出现的似然性,但是在深度神经网络里这样思考feature vector就行不通了。因为它在某种意义上代表了空间转换的特征。

为什么潜在空间很重要?

潜在的空间概念绝对令人着迷。 但是如何使用呢? 我们什么时候使用它? 最重要的是,为什么?我们会发现,在我们最喜欢的图像处理网络,生成模型等中,潜在空间是“隐藏的”。尽管潜在空间对大多数人来说是隐藏的,但是在某些任务中,了解潜在空间不仅有帮助,而且是必要的。

表征学习

数据的潜在空间表示包含表示原始数据点所需的所有重要信息。然后,该表示必须表示原始数据的特征。换句话说,该模型学习数据特征并简化其表示,从而使其更易于分析。这是称为表示学习(Representation Learning)的概念的核心,该概念定义为允许系统从原始数据中发现特征检测或分类所需的表示的一组技术。在这种用例中,我们的潜在空间表示用于将更复杂的原始数据形式(即图像,视频)转换为更“易于处理”和分析的简单表示。

下面列出了代表性学习的具体实例。

Manifolds

潜在空间是流形学习(表示学习的一个子领域)中必不可少的概念。数据科学中的流形可以理解为在某种程度上“相似”的数据组或子集。一旦我们的数据已在潜在空间中表示出来,就可以发现这些相似性,通常在高维空间中是难以察觉的或模糊不清的。

以下面的“瑞士卷”为例。

在3D中,我们知道存在类似数据点的组,但是用更高维度的数据来描绘此类组要困难得多。

通过将数据的维数减少为2D(在这种情况下可以视为“潜在空间”表示),我们可以更轻松地区分数据集中的流形(相似数据组)。

要了解有关流形和流形学习的更多信息,我推荐以下文章:


自编码器和生成模型

自编码器是操纵潜在空间中数据“紧密度”的一种常见类型的深度学习模型,它是一种充当身份函数的神经网络。 换句话说,自动编码器会学习输出任何输入的内容。

你可能会想知道,为什么在世界上我们需要一个能够做到这一点的模型? 如果它输出的只是它自己,那似乎就没用了……尽管这种推论是正确的,但我们并不太在乎模型的输出。 我们更关心模型在此过程中学到的内容当我们强制模型成为身份函数时,我们将其强制以压缩的表示形式存储所有数据的相关特征,以便以压缩的形式提供足够的信息,以使模型可以“准确地”重建模型。 听起来有点熟? 应该这样做,因为此压缩表示形式是我们的潜在空间表示形式(上图中的红色块)。

“压缩”这里听起来有点主成分分析 (PCA) 那意思, 比如PCA里的SVD分解,通过提取数据矩阵在“向量外积合成时”的重要表征 (谁的奇异值大谁就是重要表征) 来实现数据存储的压缩。但是这里的压缩是向量空间转换意义上的维度压缩,和PCA里的“压缩”不一样。前者代表数据本身的特征压缩,而后者代表两个空间进行相互转换时的中介空间的重要特征“压缩”。

我们已经看到了如何在潜在空间中更容易发现模式,因为相似的数据点将趋于聚集在一起,但是我们还没有看到如何从该潜在空间中采样点以产生“新”数据。

在上面的示例中,我们可以通过在潜在空间上进行插值,并使用模型解码器将潜在空间表示重构为二维图像,并以与原始输入相同的尺寸来生成不同的面部结构

在潜在空间上插值是什么意思?

假设我已将上一节中的椅子图像压缩为以下2D向量[0.4,0.5]和[0.45,0.45]。 假设办公桌被压缩为[0.6,0.75]。 如果要在潜在空间上进行插值,则需要对“椅子”群集和“办公桌”群集之间的潜在空间中的点进行采样。我们可以将这些采样的2D向量输入模型的解码器,瞧! 我们得到的“新”图像看起来像是椅子和桌子之间的变体。 * new用引号引起来,因为这些生成的图像在技术上并不独立于原始数据样本。

以下是潜在空间中两种椅子之间的线性插值示例。

图像生成仍然是研究的活跃领域,而潜在空间是必须理解的基本概念。 有关生成模型的更多用例,请参见以下文章,以及使用GAN(生成对抗网络)的潜在空间插值的动手示例,GAN是使用潜在空间表示形式的另一种生成模型。

可视化潜在空间

有关潜在空间可视化的更多信息,我推荐Hackernoon的文章,该文章提供了一个动手实例,可使用t-SNE算法可视化2D空间中数字图像之间的相似性。

重要要点

  • 潜在空间只是压缩数据的表示,其中相似的数据点在空间上更靠近在一起。
  • 潜在空间对于学习数据功能和查找更简单的数据表示形式以进行分析很有用。
  • 我们可以通过分析潜在空间中的数据(通过流形,聚类等)来了解数据点之间的模式或结构相似性。
  • 我们可以在潜在空间内插值数据,并使用模型的解码器来“生成”数据样本。
  • 我们可以使用t-SNE和LLE之类的算法来可视化潜在空间,该算法将我们的潜在空间表示形式转换为2D或3D。

在学习潜在空间时,我对这个“隐藏但必不可少的概念”着迷。 我希望本文能消除潜在空间表示的神秘性,并提供我作为新手所渴望的对深度学习的“更深入的理解”

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号