您的位置:首页 > 房产 > 建筑 > 深度学习自编码器 - 使用自编码器学习流形篇

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

2024/10/5 19:05:58 来源:https://blog.csdn.net/benny_zhou2004/article/details/142284952  浏览:    关键词:深度学习自编码器 - 使用自编码器学习流形篇

序言

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

使用自编码器学习流形

  • 应用数学与机器学习基础 - 深度学习的动机与挑战篇 - 流形学习(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)。

总结

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

往期内容回顾

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com