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

在这里插入图片描述

1、什么是潜在空间?

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

如果我必须用一句话来描述潜在空间,它只是意味着压缩数据的表示。

想象一个像上面所示的手写数字(0-9)的大型数据库。相同数字的手写图像(即3的图像)与其他不同数字的图像(即3s vs. 7s)相比,彼此之间最相似。但我们能训练一个算法来识别这些相似性吗?如何训练?

如果你训练了一个模型来对数字进行分类,那么你也训练了这个模型来学习图像之间的“结构相似性”。事实上,这就是模型如何首先能够对数字进行分类——通过学习每个数字的特征。

如果这个过程看起来对你来说是“隐藏”的,那是因为它是。Latent,顾名思义就是“隐藏的”。

“潜在空间”的概念很重要,因为它的用途是“深度学习”的核心——学习数据的特征并简化数据表示以寻找模式。

感兴趣吗?让我们一点一点地分解潜在空间:

① 为什么我们在机器学习(ML)中压缩数据?

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

在这里插入图片描述

通常情况下,数据在机器学习中被压缩,以学习有关数据点的重要信息。让我举个例子来解释。

假设我们想训练一个模型来使用全卷积神经网络(FCN)对图像进行分类(即输出给定数字图像的数字)。当模型“学习”时,它只是学习每一层的特征(边、角度等),并将特征组合归因于特定的输出。

但每次模型通过一个数据点进行学习时,图像的维数首先会降低,然后才会最终增加(见下面的编码器和瓶颈)。当维数降低时,我们认为这是一种有损压缩。

在这里插入图片描述

因为模型需要重建压缩数据(参见解码器),它必须学会存储所有相关信息并忽略噪声。这就是压缩的价值——它允许我们去掉任何无关的信息,只关注最重要的特性。

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

② 空间(space)是什么意思?

你可能想知道为什么我们称它为潜在空间。毕竟,压缩的数据,乍一看,可能不会引起任何形式的“空间”。

但这里有个相似之处。

在这个相当简单的例子中,假设我们的原始数据集是尺寸为5×5×1的图像。我们将我们的潜在空间维度设置为3×1,这意味着我们压缩的数据点是一个具有3维的向量。

在这里插入图片描述

现在,每个压缩数据点仅由3个数字唯一定义。这意味着我们可以在三维平面上绘制这些数据(一个数字是x,另一个是y,另一个是z)。

在这里插入图片描述

这就是我们所指的“空间”。

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)。然而,有一些工具,如t-SNE,可以将我们的高维潜在空间表征转化为我们可以可视化的表征(2D或3D)。(参见下面可视化潜在空间部分。)

但是你可能会想,什么是“相似”的图像,为什么降低数据的维数会使相似的图像在空间上“更接近”?

③ 相似(similar)是什么意思?

如果我们看三张图片,两张椅子和一张桌子,我们会很容易地说出这两张椅子的图像是最相似的,而桌子和椅子的图像是最不同的。

在这里插入图片描述

但是,是什么让这两张椅子的图像“更相似”呢?椅子具有可区分的特征(即靠背,没有抽屉,腿之间的连接)。这些都可以被我们的模型通过学习边、角度等模式来“理解”。

如前所述,这些特征被封装在数据的潜在空间表示中。

因此,随着维数的降低,与每张图像不同的“无关”信息(例如椅子的颜色)从我们的潜在空间表示中“删除”,因为每张图像只有最重要的特征存储在潜在空间表示中。

因此,当我们降低维度时,两把椅子的表现变得不那么明显,而更相似。如果我们想象它们在太空中,它们会“更接近”。

请注意,我在整篇文章中提到的“接近度”(“closeness”)度量是一个模棱两可的术语,而不是确定的欧几里得距离,因为空间中的距离有多种定义。

2、为什么潜在空间很重要?

潜在空间的概念绝对是有趣的。但它是如何使用的呢?我们什么时候用它?最重要的是,为什么?

我们会发现,潜在空间“隐藏”在许多我们最喜欢的图像处理网络、生成模型等中。

虽然潜在空间对大多数人来说是隐藏的,但在某些任务中,了解潜在空间不仅是有帮助的,而且是必要的。

① 表示学习(Representation Learning)

数据的潜在空间表示包含了表示原始数据点所需的所有重要信息。

这种表示(representation)必须表示原始数据的特征(features)。

换句话说,模型学习数据特征并简化其表示以使其更易于分析

这是表示学习概念的核心,它被定义为一组技术,允许系统从原始数据中发现特征检测或分类所需的表征(representations)。

在这个用例中,我们的潜在空间表示用于将更复杂形式的原始数据(如图像、视频)转换为更简单的表示,从而“更便于处理”和分析。

下面列出了表示学习的具体实例——Manifolds

潜在空间是流形学习(manifold learning)中的一个重要概念,是表示学习的一个分支。

数据科学中的流形(manifolds)可以理解为在某种程度上“相似”的数据组或子集。

这些在高维空间中通常难以察觉或模糊的相似性,一旦我们的数据在潜在空间中被表示出来,就可以被发现。

以下面的“swiss roll”为例。

在这里插入图片描述

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

通过将数据的维度降低到2D,在这种情况下可以被认为是“潜在空间”表示,我们能够更容易地区分数据集中的流形(相似数据组)。

要了解更多关于流形和流形学习的知识,我推荐以下文章:

  • Manifolds in Data Science — A Brief Overview:https://towardsdatascience.com/manifolds-in-data-science-a-brief-overview-2e9dde9437e5
  • 2.2. Manifold learning:https://scikit-learn.org/stable/modules/manifold.html?source=post_page-----de5a7c687d8d--------------------------------
② 自动编码器和生成模型(Autoencoders and Generative Models)

一种常见的深度学习模型是自动编码器,它可以操纵潜在空间中数据的“接近度”(“closeness”)——一种作为恒等函数(identity function)的神经网络。换句话说,自动编码器学会输出输入的任何内容。

在这里插入图片描述

现在,如果你是这个领域的新手,你可能会想,为什么我们需要一个这样的模型呢?如果它输出的只是它自己,那么它似乎毫无用处……

虽然这个推理是有效的,但我们不太关心模型的输出。我们更关心模型在这个过程中学到了什么。

当我们强迫一个模型成为恒等函数时,我们是在强迫它将所有数据的相关特征存储在压缩表示中,以便在压缩形式中有足够的信息,这样模型就可以“准确”地重建它。听起来是不是很熟悉?应该是这样,因为这个压缩表示是我们的潜在空间表示(上图中的红色块)。

我们已经看到了如何在潜在空间中更容易发现模式,因为相似的数据点往往会聚集在一起,但我们还没有看到如何从这个潜在空间中采样点来生成“新”数据。

在这里插入图片描述

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

什么是潜在空间插值?

假设我已经将前一节的椅子图像压缩为以下2D向量,[0.4, 0.5]和[0.45, 0.45]。假设桌子被压缩到[0.6,0.75]。如果我要对潜在空间进行插值,我会对“椅子”簇和“桌子”簇之间的潜在空间中的点进行采样。

我们可以将这些采样的2D向量输入到模型的解码器中。瞧!我们得到的“新”图像看起来像是椅子和桌子之间的变形。“新”加了引号,因为这些生成的图像在技术上并不独立于原始数据样本。

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

在这里插入图片描述

图像生成仍然是一个活跃的研究领域,而潜在空间是一个必须理解的基本概念。请参阅以下文章,了解生成模型的更多用例,以及使用GAN(生成对抗网络)的潜在空间差值的实际示例,GAN是另一个使用潜在空间表示的生成模型。

  • 18 Impressive Applications of Generative Adversarial Networks(GANs):https://machinelearningmastery.com/impressive-applications-of-generative-adversarial-networks/?source=post_page-----de5a7c687d8d--------------------------------
  • How to Explore the GAN Latent Space When Generating Faces:https://machinelearningmastery.com/how-to-interpolate-and-perform-vector-arithmetic-with-faces-using-a-generative-adversarial-network/?source=post_page-----de5a7c687d8d--------------------------------

3、潜在空间可视化

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

  • Latent space visualization — Deep Learning bits #2:https://hackernoon.com/latent-space-visualization-deep-learning-bits-2-bd09a46920df?source=post_page-----de5a7c687d8d--------------------------------

4、主要收获

潜在空间只是压缩数据的一种表示,其中相似的数据点在空间中距离更近。

潜在空间对于学习数据特征和寻找用于分析的更简单的数据表示非常有用。

我们可以通过分析潜在空间中的数据来理解数据点之间的模式或结构相似性,无论是通过流形还是聚类等。

我们可以在潜在空间中插入数据,并使用我们模型的解码器来“生成”数据样本。

我们可以使用t-SNE和LLE等算法来可视化潜在空间,这些算法将潜在空间转换为2D或3D。

在了解潜在空间的过程中,我被这个“隐藏”但又必不可少的概念所吸引。我希望这篇文章能够揭开潜在空间表示的神秘面纱,并提供我作为一个新手所渴望的对深度学习的“更深层次的理解”。

5、参考资料
  • Understanding Latent Space in Machine Learning:https://towardsdatascience.com/understanding-latent-space-in-machine-learning-de5a7c687d8d
  • 理解机器学习中的潜在空间:https://zhuanlan.zhihu.com/p/369946876
  • Manifolds in Data Science — A Brief Overview:https://towardsdatascience.com/manifolds-in-data-science-a-brief-overview-2e9dde9437e5
  • 2.2. Manifold learning:https://scikit-learn.org/stable/modules/manifold.html?source=post_page-----de5a7c687d8d--------------------------------
  • 18 Impressive Applications of Generative Adversarial Networks(GANs):https://machinelearningmastery.com/impressive-applications-of-generative-adversarial-networks/?source=post_page-----de5a7c687d8d--------------------------------
  • How to Explore the GAN Latent Space When Generating Faces:https://machinelearningmastery.com/how-to-interpolate-and-perform-vector-arithmetic-with-faces-using-a-generative-adversarial-network/?source=post_page-----de5a7c687d8d--------------------------------
  • Latent space visualization — Deep Learning bits #2:https://hackernoon.com/latent-space-visualization-deep-learning-bits-2-bd09a46920df?source=post_page-----de5a7c687d8d--------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue学习day01-vue的概念、创建Vue实例、插值表达式、响应式、安装Vue开发者工具

1、vue的概念 Vue是一个用于构建用户界面的渐进式 框架 (1)构建用户界面:基于数据动态渲染页面 (2)渐进式:循序渐进的学习 (3)框架:一条完整的项目解决方案&#xff…

GenAl如何改变 DevOps 中的软件测试?

TestComplete 是一款自动化UI测试工具,这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的自动化测试。 TestComplete 集成了一种精心设计的自动化引擎,可以自动记录和回放用户的操作,方便用户进行UI(用户界面&…

RTK_ROS_导航(2):卫星图查看

目录 1. 基于MapViz的卫星图查看 1. 基于MapViz的卫星图查看 安装 # 源码安装 mkdir -p RTK_VISION/src cd RTK_VISION/src git clone https://github.com/swri-robotics/mapviz.git --branchmelodic-eol sudo apt-get install ros-$ROS_DISTRO-mapviz ros-$ROS_DISTRO-mapviz-…

IP-GUARD如何禁止电脑自带摄像头

IP-GUARD可以通过设备管理模块禁止USB接口,所以USB外置摄像头很容易就可以禁止了。 但是笔记本自带摄像头无法禁止,配置客户端策略如下: device_control_unknown_mode1 device_control_unphysical_mode3

纯电车的OBD接口

尽管传统汽车的OBD接口主要用于监控和报告排放数据,但纯电动车辆作为零排放的交通工具,其设计初衷与需求截然不同。因此,从法律条文和车管所的规定来看,纯电动车辆是否仍需配置OBD接口这一问题,确实值得探讨。理论上&a…

ABAP中ARFC_GET_TID函数详细的使用方法

在ABAP中,ARFC_GET_TID 函数模块用于以十六进制形式返回终端的IP地址。这个功能在需要获取当前会话或终端的网络地址信息时非常有用,比如在日志记录、安全审计或网络诊断等场景中。 详细使用方法 调用函数模块 ARFC_GET_TID 函数的调用通常很直接&…

记一次 Qt installer framework安装程序过程中 安装驱动依赖

在installscript.qs 文件中该函数添加exe 依赖程序放置位置

Spring @Value获取数组、集合、map等不同结构方法

Spring 架构中,可以使用Value注解从配置文件或命令行参数中获取集合数据。 各种示例 获取基础类型 当没有配置时,可以设置默认值。无默认值时会抛出空值异常。 Value("${lizz.timeout:3000}")private int timeout;Value("${lizz.key:…

Python28-11 CatBoost梯度提升算法

CatBoost(Categorical Boosting)是由Yandex(一家俄罗斯互联网企业,旗下的搜索引擎曾在俄国内拥有逾60%的市场占有率,同时也提供其他互联网产品和服务)开发的一种基于梯度提升的机器学习算法。CatBoost特别擅长处理类别特征&#x…

什么是ThingsKit物联网平台?

在信息化时代的浪潮中,物联网(IoT)作为新一代信息技术的核心,已经逐渐渗透到我们生活的方方面面。而在这个大背景下,Thingskit物联网平台以其独特的技术优势和应用场景,成为了物联网领域的一颗璀璨明星。本…

AI和人工智能是啥关系?

AI(人工智能)与通用人工智能(AGI)是人工智能领域中的两个重要概念,它们在定义、技术基础以及应用领域等方面有所区别。人工智能(AI),是指使计算机和其他机器模拟人类智能的技术&…

3.flink架构

目录 概述 概述 Flink是一个分布式的带有状态管理的计算框架,为了执行流应用程序,可以和 Hadoop YARN 、K8s 进行整合,当然也可以是一个 standalone 。 官方地址:速递 k8s 是未来的一种趋势,对资源管控能力强。

Windows 控制中心在哪里打开,七种方法教会你

在 Windows 操作系统中,控制中心的概念可能稍有些混淆,因为 Windows 通常使用“控制面板”这一术语来指代用于配置系统设置和更改硬件及软件设置的中心区域。 不过,随着 Windows 的更新,微软也在逐步将一些设置迁移到“设置”应用…

关于Linux的操作作业!24道题

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

js如何要让一个对象继承另一个对象的原型属性和方法

js如何要让一个对象继承另一个对象的原型属性和方法 1、使用 Object.create() const parent {greet: function() {console.log("Hello from parent!");} };const child Object.create(parent); child.greet(); // 输出: Hello from parent!2、使用 proto 属性 …

【算法】贪婪算法介绍及实现方法

贪婪算法简介 贪婪算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。贪婪算法通常用于解决优化问题,如最小化成本、最大…

Tomcat打破双亲委派模型的方式

文章目录 1、前言2、标准的双亲委派模型3、Tomcat的类加载器架构4、Tomcat打破双亲委派模型的方式5、总结 1、前言 双亲委派模型是一种类加载机制,它确保了类加载器层次结构中的父加载器先于子加载器尝试加载类。这种机制有助于防止类的重复加载和类之间的不兼容。…

MySQL数据库基本操作-DDL和DML

1. DDL解释 DDL(Data Definition Language),数据定义语言,该语言部分包括以下内容: 对数据库的常用操作对表结构的常用操作修改表结构 2. 对数据库的常用操作 功能SQL查看所有的数据库show databases;查看有印象的数据库show d…

16 - Python语言进阶

Python语言进阶 数据结构和算法 算法:解决问题的方法和步骤 评价算法的好坏:渐近时间复杂度和渐近空间复杂度。 渐近时间复杂度的大O标记: - 常量时间复杂度 - 布隆过滤器 / 哈希存储 - 对数时间复杂度 - 折半查找(二分查找&am…

关于TCP的三次握手流程

三次握手流程 第一次握手:客户端向服务端发起建立连接请求,客户端会随机生成一个起始序列号x,客户端向服务端发送的字段包含标志位SYN1,序列号segx。第一次握手后客户端的状态为SYN-SENT。此时服务端的状态为LISTEN 第二次握手&…