深度学习自编码器 - 使用自编码器学习流形篇

news2024/9/19 13:29:17

序言

在数据科学的浩瀚宇宙中,深度学习如同一颗璀璨的星辰,引领着我们对复杂数据内在规律的探索。其中,自编码器作为深度学习家族中的一位独特成员,以其非凡的能力——通过无监督学习捕捉数据的有效表示,而备受瞩目。特别是当我们将目光聚焦于数据中的流形结构时,自编码器展现出了其不可估量的价值。流形,作为高维空间中数据分布的内在低维几何特性,是理解复杂数据集的关键。自编码器通过编码过程将数据压缩至潜在空间,再经解码还原,这一过程中不仅去除了冗余信息,更重要的是保留了数据的关键流形结构,使得我们能够以一种更加简洁而深刻的方式洞察数据的本质。

使用自编码器学习流形

  • 应用数学与机器学习基础 - 深度学习的动机与挑战篇 - 流形学习(manifold learning)描述, 自编码器跟其他很多机器学习算法一样,也应用了将数据集中在一个低维流形或者一小组这样的流形的思想。其中一些机器学习算法仅能学习到在流形上表现良好但给定不在流形上的输入会导致异常的函数。 自编码器进一步借此想法,旨在学习流形的结构。
  • 要了解自编码器如何做到这一点,我们必须介绍流形的一些重要特性。
  • 流形的一个重要特征是切平面 ( tangent plane \text{tangent plane} tangent plane) 的集合。
    • d d d 维流形上的一点 x \boldsymbol{x} x, 切平面由能张成流形上允许变动的局部方向的 d d d 维基向量给出。
    • 图例1所示,这些局部方向说明了我们能如何微小地改变 x \boldsymbol{x} x 而一直处于流形上。
  • 所有自编码器的训练过程涉及两种推动力的折衷:
    • 学习训练样本 x \boldsymbol{x} x 的表示 h \boldsymbol{h} h 使得 x \boldsymbol{x} x 能通过解码器近似地从 h \boldsymbol{h} h 中恢复。 x \boldsymbol{x} x 是从训练数据挑出的事实是关键的,因为这意味着在自编码器不需要成功重构不属于数据生成分布下的输入。
    • 满足约束或正则惩罚。这可以是限制自编码器容量的架构约束,也可以是加入到重构代价的一个正则项。这些技术一般倾向那些对输入较不敏感的解。
  • 显然,单一的推动力是无用的——从它本身将输入复制到输出是无用的,同样忽略输入也是没用的。
    • 相反,两种推动力结合是有用的,因为它们迫使隐藏的表示能捕获有关数据分布结构的信息。
    • 重要的原则是,自编码器必须有能力表示重构训练实例所需的变化。
    • 如果该数据生成分布集中靠近一个低维流形,自编码器能隐式产生捕捉这个流形局部坐标系的表示:仅在 x \boldsymbol{x} x 周围关于流形的相切变化需要对应于 h = f ( x ) \boldsymbol{h}=f(\boldsymbol{x}) h=f(x) 中的变化。
    • 因此,编码器学习从输入空间 x \boldsymbol{x} x 到表示空间的映射,映射仅对沿着流形方向的变化敏感,并且对流形正交方向的变化不敏感。
  • 图例2中一维的例子说明,为了使重构函数对数据点周围的扰动输入不敏感,我们可以让自编码器恢复流形的结构。
  • 对比其他方法是有用且受启发的,可以了解自编码器为什么对流形学习是有用的。
    • 学习表征流形最常见的是流形上(或附近)数据点的表示 ( representation \text{representation} representation)。
    • 对于特定的实例,这样的表示也被称为嵌入。
    • 它通常由一个低维向量给出,具有比这个流形的 ‘‘外围’’ 空间更少的维数。
    • 有些算法(下面讨论的非参数流形学习算法)直接学习每个训练样例的嵌入,而其他算法学习更一般的映射(有时被称为编码器或表示函数),将周围空间(输入空间)的任意点映射到它的嵌入。
  • 流形学习大多专注于试图捕捉到这些流形的无监督学习过程。
    • 最初始的学习非线性流形的机器学习研究专注基于最近邻图 ( nearest neighbor graph \text{nearest neighbor graph} nearest neighbor graph) 的非参数 ( nonparametric \text{nonparametric} nonparametric) 方法。该图中每个训练样例对应一个节点,它的边连接近邻点对。
    • 图例3所示,这些方法:
      • Sch o ¨ lkopf et al., 1998b \text{Schölkopf et al., 1998b} Scho¨lkopf et al., 1998b;
      • Roweis and Saul, 2000 \text{Roweis and Saul, 2000} Roweis and Saul, 2000;
      • Tenenbaum et al., 2000 \text{Tenenbaum et al., 2000} Tenenbaum et al., 2000;
      • Brand, 2003b \text{Brand, 2003b} Brand, 2003b;
      • Belkin and Niyogi, 2003a \text{Belkin and Niyogi, 2003a} Belkin and Niyogi, 2003a;
      • Donoho and Grimes, 2003 \text{Donoho and Grimes, 2003} Donoho and Grimes, 2003;
      • Weinberger and Saul, 2004b \text{Weinberger and Saul, 2004b} Weinberger and Saul, 2004b;
      • Hinton and Roweis, 2003 \text{Hinton and Roweis, 2003} Hinton and Roweis, 2003;
      • van der Maaten and Hinton, 2008 \text{van der Maaten and Hinton, 2008} van der Maaten and Hinton, 2008
    • 将每个节点与张成实例和近邻之间的差向量变化方向的切平面相关联。
  • 全局坐标系则可以通过优化或求解线性系统获得。
    • 图例4展示了如何通过大量局部线性的类高斯样平铺(或 ‘‘薄煎饼’’,因为高斯块在切平面方向是扁平的)得到一个流形。
  • 然而, Bengio and Monperrus (2005) \text{Bengio and Monperrus (2005)} Bengio and Monperrus (2005) 指出了这些局部非参数方法应用于流形学习的根本困难:如果流形不是很光滑(它们有许多波峰、波谷和弯曲),为覆盖其中的每一个变化,我们可能需要非常多的训练样本,导致没有能力泛化到没见过的变化。
    • 实际上,这些方法只能通过内插,概括相邻实例之间流形的形状。
    • 不幸的是, AI \text{AI} AI问题中涉及的流形可能具有非常复杂的结构,难以仅从局部插值捕获特征。
    • 考虑图例1转换所得的流形样例。
    • 如果我们只观察输入向量内的一个坐标 x i x_i xi,当平移图像,我们可以观察到当这个坐标遇到波峰或波谷时,图像的亮度也会经历一个波峰或波谷。
    • 换句话说,底层图像模板亮度的模式复杂性决定执行简单的图像变换所产生的流形的复杂性。
    • 这是采用分布式表示和深度学习捕获流形结构的动机。

  • 图例1:正切超平面概念的图示。
    • 正切超平面概念的图示。
      在这里插入图片描述

    • 说明:

      • 我们在 784 784 784 维空间中创建了 1 1 1 维流形。
      • 我们使用一张 784 784 784 像素的 MNIST \text{MNIST} MNIST 图像,并通过垂直平移来转换它。
      • 垂直平移的量定义沿着 1 1 1 维流形的坐标,轨迹为通过图像空间的弯曲路径。
      • 该图显示了沿着该流形的几个点。
      • 为了可视化,我们使用 PCA \text{PCA} PCA将流形投影到 2 2 2 维空间中。
      • n n n 维流形在每个点处都具有 n n n 维切平面。
      • 该切平面恰好在该点接触流形,并且在该点处平行于流形表面。
      • 它定义了为保持在流形上可以移动的方向空间。
      • 1 1 1 维流形具有单个切线。
      • 我们在图中示出了一个点处的示例切线,其中图像表示该切线方向在图像空间中是怎样的。
      • 灰色像素表示沿着切线移动时不改变的像素,白色像素表示变亮的像素,黑色像素表示变暗的像素。

  • 图例2:如果自编码器学习到对数据点附近的小扰动不变的重构函数,它就能捕获数据的流形结构。
    • 如果自编码器学习到对数据点附近的小扰动不变的重构函数,它就能捕获数据的流形结构。
      在这里插入图片描述

    • 说明:

      • 这里,流形结构是 0 0 0 维流形的集合。
      • 虚线对角线表示重构的恒等函数目标。
      • 最佳重构函数会在存在数据点的任意处穿过恒等函数。
      • 图底部的水平箭头表示在输入空间中基于箭头的 r ( x ) − x r(\boldsymbol{x}) − \boldsymbol{x} r(x)x重建方向向量,总是指向最近的 “流形’’( 1 1 1 维情况下的单个数据点)。
      • 在数据点周围,去噪自编码器明确地尝试将重构函数 r ( x ) r(\boldsymbol{x}) r(x) 的导数限制为很小。
      • 收缩自编码器的编码器执行相同操作。虽然在数据点周围, r ( x ) r(\boldsymbol{x}) r(x) 的导数被要求很小,但在数据点之间它可能会很大。
      • 数据点之间的空间对应于流形之间的区域,为将损坏点映射回流形, 重构函数必须具有大的导数。

  • 图例3:非参数流形学习过程构建的最近邻图
    • 非参数流形学习过程构建的最近邻图
      在这里插入图片描述

    • 说明:

      • 非参数流形学习过程构建的最近邻图,其中节点表示训练样本,有向边指示最近邻关系。
      • 因此,各种过程可以获得与图的邻域相关联的切平面以及将每个训练样本与实值向量位置或嵌入 ( embedding \text{embedding} embedding) 相关联的坐标系。
      • 我们可以通过插值将这种表示概括为新的样本。
      • 只要样本的数量大到足以覆盖流形的弯曲和扭转,这些方法工作良好。
      • 图片来自 QMUL \text{QMUL} QMUL 多角度人脸数据集( Gong et al., 2000 \text{Gong et al., 2000} Gong et al., 2000)。

  • 图例4:如果每个位置处的切平面(见图例1)是已知的,则它们可以平铺后形成全局坐标系或密度函数。
    • 如果每个位置处的切平面(见图例1)是已知的,则它们可以平铺后形成全局坐标系或密度函数。
      在这里插入图片描述

    • 说明:

      • 每个局部块可以被认为是局部欧几里德坐标系或者是局部平面高斯或 ‘‘薄饼’’,在与薄饼正交的方向上具有非常小的方差而在定义坐标系的方向上具有非常大的方差。
      • 这些高斯的混合提供了估计的密度函数,如流形中的 Parzen \text{Parzen} Parzen窗口算法 ( Vincent and Bengio, 2003 \text{Vincent and Bengio, 2003} Vincent and Bengio, 2003) 或其非局部的基于神经网络的变体 ( Bengio et al., 2006c \text{Bengio et al., 2006c} Bengio et al., 2006c)。

总结

总而言之,使用自编码器学习数据中的流形结构,是深度学习领域的一项创新且强大的技术。它不仅能够帮助我们从高维数据的迷雾中抽丝剥茧,发现隐藏的低维特征,还能够为后续的数据分析、可视化及预测任务奠定坚实的基础。通过不断优化自编码器的网络结构和训练过程,我们能够更加精准地捕捉数据的流形特性,进而推动人工智能技术在各个领域的深入应用与发展。在这个数据驱动的时代,自编码器无疑是我们探索数据奥秘、挖掘数据价值的得力助手。

往期内容回顾

应用数学与机器学习基础 - 深度学习的动机与挑战篇

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

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

相关文章

Tomcat_WebApp

Tomcat的目录的介绍 /bin: 这个目录包含启动和关闭 Tomcat 的脚本。 startup.bat / startup.sh:用于启动 Tomcat(.bat 文件是 Windows 系统用的,.sh 文件是 Linux/Unix 系统用的)。shutdown.bat / shutdown.sh&#xf…

Java 实现桌面烟花秀

前言 今天,我们将展示如何使用 Java Swing 创建一个烟花效果,覆盖整个桌面。我们将重点讲解如何在桌面上展示烟花、如何实现发射和爆炸效果,以及如何将这些效果整合到一个完整的程序中。 效果展示 如上图所示,我们在桌面实现了&…

【开源大模型生态9】百度的文心大模型

这张图展示了百度千帆大模型平台的功能架构及其与BML-AI开发平台和百度百舸AI异构计算平台的关系。以下是各个模块的解释: 模型广场: 通用大模型:提供基础的自然语言处理能力。行业大模型:针对不同行业的定制化模型。大模型工具链…

新的 MathWorks 硬件支持包支持从 MATLAB 和 Simulink 模型到高通 Hexagon 神经处理单元架构的自动化代码生成

MathWorks 今天宣布,推出针对 Qualcomm Hexagon™ 神经处理单元(NPU)的硬件支持包。该处理单元嵌入在 Snapdragon 系列处理器中。MathWorks 硬件支持包,则专门针对 Qualcomm Technologies 的 Hexagon NPU 架构进行优化&#xff0c…

基于SSM的“校园外卖管理系统”的设计与实现(源码+数据库+文档+开题报告)

基于SSM的“校园外卖管理系统”的设计与实现(源码数据库文档开题报告) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 消费者系统结构图 商户系统结构图 管理员系统结构图 校…

数据脱敏 (Jackson + Hutool 工具包)

一、简介 系统使用 Jackson 序列化策略,对标注了 Sensitive 注解的属性进行脱敏处理 基于Hutool 脱敏案列: Retention(RetentionPolicy.RUNTIME) Target(ElementType.FIELD) JacksonAnnotationsInside// 表示只对有此注解的字段进行序列化 JsonSeriali…

MySQL高阶1831-每天的最大交易

题目 编写一个解决方案,报告每天交易金额 amount 最大 的交易 ID 。如果一天中有多个这样的交易,返回这些交易的 ID 。 返回结果根据 transaction_id 升序排列。 准备数据 Create table If Not Exists Transactions (transaction_id int, day date, …

吹爆上海交大的大模型实战教程!!—《动手学大模型》附实战教程及ppt

今天分享一个上海交大的免费的大模型课程,有相关教程文档和Slides,目前是2.2K星标,还是挺火的! 《动手学大模型》系列编程实践教程, 由上海交通大学2024年春季《人工智能安全技术》课程(NIS3353&#xff09…

深入剖析Docker容器安全:挑战与应对策略

随着容器技术的广泛应用,Docker已成为现代应用开发和部署的核心工具。它通过轻量级虚拟化技术实现应用的隔离与封装,提高了资源利用率。然而,随着Docker的流行,其安全问题也成为关注焦点。容器化技术虽然提供了良好的资源隔离&…

SHAP 模型可视化 + 参数搜索策略在轴承故障诊断中的应用

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Python轴承故障诊断入门教学-CSDN博客 Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客 Python轴承故障诊断 (14)高创新故障识别模型-CSDN…

Linux用户组管理

目录 一、增删改用户组 1.1. 创建一个新的用户组 1.2. 创建用户组并指定ID 1.3. 修改用户组的名 1.4. 修改用户组的ID 1.5. 删除一个用户组 二、用户组中的用户操作 2.1. 添加用户到一个已存在的用户组 2.2. 从用户组中移除用户 注:本章内容全部基于Centos…

论文阅读--Planning-oriented Autonomous Driving(二)

自动驾驶框架的各种设计比较。 ( a )大多数工业解决方案针对不同的任务部署不同的模型。 ( b )多任务学习方案共享一个具有分割任务头的主干。 ( c )端到端范式将感知和预测模块统一起来。以往的尝试要么采用( c.1 )中对规划的直接优化,要么采用( c.2 )中的部分元…

基于PHP的高校毕业生就业服务平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于phpMySQL的高校毕业生就业…

html,css基础知识点笔记(二)

9.18(二) 本文主要教列表的样式设计 1)文本溢出 效果图 文字限制一行显示几个字,多余打点 line-height: 1.8em; white-space: nowrap; width: 40em; overflow: hidden; text-overflow: ellipsis;em表示一个文字的大小单位&…

MySQL实战面试题(附案例答案+建表语句+模拟数据+案例深度解析),练完直接碾压面试官

知识点思维导图 案例1 建表语句与模拟数据 用户表 users CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, signup_date DATE NOT NULL ); INSERT INTO users (username, email, signu…

C++ | Leetcode C++题解之第416题分割等和子集

题目&#xff1a; 题解&#xff1a; class Solution { public:bool canPartition(vector<int>& nums) {int n nums.size();if (n < 2) {return false;}int sum 0, maxNum 0;for (auto& num : nums) {sum num;maxNum max(maxNum, num);}if (sum & 1)…

ICL、CoT、ReAct个人记录

In-Context Learning(ICL) 将一些带有标签的样本拼接起来&#xff0c;作为prompt的一部分。不涉及梯度更新&#xff0c;因此不属于ft CoT 但是其依然属于静态的黑盒子&#xff0c;依靠其推理的结果很难与真实知识保持一致&#xff0c;且限制了推理过程中及时反应和知识更新的…

技术生态系统中的绿色可持续发展与商业模式创新:The Open Group 2024大会引领未来发展趋势

绿色转型与商业模式创新在技术生态系统中的核心地位 在全球范围内&#xff0c;企业正面临着双重挑战&#xff1a;如何在推动技术生态系统创新的同时&#xff0c;践行可持续发展的承诺。随着气候变化压力的增加&#xff0c;绿色经济成为企业发展和创新的必然趋势。然而&#xf…

Python基础(八)——MySql数据库

一.数据库 【库——>表——>数据】 借助数据库对数据进行组织存储&#xff0c;借助SQL语言对数据库、数据进行操作管理 Mysql数据库 下载&#xff1a;https://www.mysql.com/ 查看是否安装配置成功&#xff1a; 安装DBeaver用于Mysql数据库图形化 安装&#xff1a;…

Python语言学习-pandas库学习

一、什么是Pandas库 Pandas是python的第三方库&#xff0c;他用于灵活的数据操作&#xff0c;数据可视化&#xff0c;数据清洗&#xff0c;数据的聚合和转换&#xff0c;数据的可视化 二、安装pandas库 在终端中运行 pip install pandas 导入Pandas库并重命名为pd import …