PCA和自动编码器:每个人都能理解的算法

本文的主要重点是为主成分分析(PCA)和自动编码器数据转换技术提供易于理解的直觉。我不打算深入研究支撑这些模型的数学理论,因为已有大量资源可供使用。

PCA和自动编码器:每个人都能理解的算法

介绍:

自动编码器通过组合数据最重要的特征将它们被馈送的数据映射到较低维度的空间。它将原始数据编码为更紧凑的表示。它还决定了数据的组合方式,因此Autoencoder中的auto也是如此。我们将这些编码特征称为潜在变量。

这样做有几个原因可能有用:

  • 1.减少维度可以减少培训时间。
  • 2.使用潜在特征表示可以增强模型性能。

像机器学习(ML)中的许多概念一样,Autoencoders看起来很神秘。潜在变量本质上是某些数据的隐含特征。这是一个未被直接观察或测量的变量。例如,幸福是一个潜在的变量。我们必须使用像问卷调查的方法来推断个人的幸福水平。

与自动编码器模型一样,主成分分析(PCA)也被广泛用作降维技术。但是,PCA以与自动编码器不同的方式映射输入。

直觉:

假设你有一个很棒的跑车Lego套装,你想把它送给你的朋友过生日,但你拥有的盒子不够大,不适合所有的乐高积木。你决定收拾最重要的乐高碎片 - 这些碎片在制造汽车时贡献最大,所以你扔掉了一些像门把手和挡风玻璃刮水器一样的小碎片; 并包装车轮和车架等零件。然后,您将盒子运送给您的朋友。收到包裹后,你的朋友在没有说明的情况下对各种乐高乐队感到困惑。尽管如此,他们组装了这套装置,并且能够认识到它是一种可驾驶的车辆。

上面的类比是有损数据压缩算法的一个例子。数据质量未得到完美保留。因此,它是一种有损算法,因为一些原始数据(即乐高积木)已经丢失。虽然使用PCA和自动编码器来降低维数是有损的,它并没有准确描述这些算法 - 它描述了一种特征选择算法。特征选择算法丢弃数据的某些特征并保留显着特征。它们保留的特征通常是出于统计原因而选择的,例如属性和目标标签之间的相关性。

主成分分析:

假设一年过去了,你朋友的生日即将来临。你决定让他们买另一辆乐高汽车,因为他们去年告诉你他们多么喜欢他们的礼物。你也可以通过购买一个小的盒子再次犯错。这一次,您认为通过将Legos系统地切割成更小的部分,您可以更好地利用它们。Legos的细粒度使您可以比上次更多地填充盒子。以前,无线电天线太高而无法放入盒子中,但现在你把它切成三等分并包括三个中的两个。当您的朋友通过邮件收到礼物时,他们通过将某些部件组合在一起来组装汽车。他们能够将扰流板和一些轮毂盖粘在一起,因此汽车更容易识别。接下来,我们将探索这个类比背后的数学概念。

PCA和自动编码器:每个人都能理解的算法

阐述:

PCA通过将输入数据投影到数据的协方差矩阵的特征向量上来工作。协方差矩阵量化数据的方差以及每个变量相对于彼此变化的程度。特征向量就是通过线性变换保持跨度的简单向量,也就是说,它们在变换之前和之后指向相同的方向。协方差矩阵将原始的基向量转换成每个变量之间的协方差方向。简单来说,特征向量允许我们重新构建原始数据的方向,以不同的角度查看它,而无需实际转换数据。当我们将数据投影到这些向量上时,我们实质上是提取每个变量的组件,导致最大的方差。

PCA和自动编码器:每个人都能理解的算法

原始数据(左)第一主成分和数据(右)

这些投影产生新的空间,其中每个基向量封装最多的方差(即特征值最大的特征向量上的投影具有最多的方差,第二个特征向量上的投影具有第二大方差,等等)。这些新的基向量被称为主要组成成分。我们希望主成分面向最大方差方向,因为更大的属性值方差可以带来更好的预测能力。例如,假设您尝试使用两个属性来预测汽车的价格:颜色和品牌。假设所有汽车都有相同的颜色,但其中有很多品牌。在这个例子中,基于其颜色来猜测汽车的价格 - 一个零方差的特征 - 几乎是不可能的。然而,如果我们考虑到一个更多样化的特征,如品牌,我们将能够提出更好的价格估计,因为奥迪和法拉利往往定价高于本田和丰田。PCA产生的主成分是输入变量的线性组合——就像粘合的乐高积木是原始积木的线性组合一样。这些主成分的线性特征也允许我们解释转换后的数据。

PCA和自动编码器:每个人都能理解的算法

数据投射到第一主成分

PCA优点:

  • 减少维数
  • 可解释
  • 运行时间快

PCA缺点:

  • 无法学习非线性特征表示

Autoencoder

PCA和自动编码器:每个人都能理解的算法

自动编码器架构

Autoencoders让事情变得有些奇怪。您不必仅仅切割碎片,而是开始完全融化,拉伸和弯曲乐高积木,使得最终的碎片代表汽车最重要的特征,但仍然符合盒子的限制。这样做不仅可以让你将更多的乐高积木装入盒子中,还可以让你创建定制的碎片。但你的好友不知道(如果包裹到货时)该如何处理。对他们来说,它看起来就像一堆随机操纵的乐高积木。事实上,这些部件是如此不同,以至于你需要用几辆车重复这个过程无数次,才能以一种系统的方式将原来的部件转换成可以由你的朋友组装成汽车的部件。

阐述:

希望上面的类比有助于理解Autoencoders与PCA的相似之处。在Autoencoders的上下文中,您是编码器,您的朋友是解码器。您的工作是以解码器可以解释和重建的方式转换数据,并且误差最小。

自动编码器本质上只是一种改变用途的前馈神经网络。简而言之,神经网络是大规模的非线性函数,其参数通过使用向量微积分的优化方法来学习。我不打算深入研究这里的细节,但请查看相关深度学习书籍,以更全面地了解神经网络的数学理论。

虽然他们能够学习复杂的特征表示,但Autoencoders最大的缺陷在于它们的可解释性。就像你的朋友收到扭曲的乐高积木时一样无能为力,我们不可能想象和理解非可视数据的潜在特征。接下来我们将研究稀疏自动编码器。

自动编码器优点:

  • 能够学习非线性特征表示
  • 减少维度

自动编码器缺点:

  • 计算成本昂贵的训练
  • 极度无法解释
  • 基础数学更复杂
  • 容易过度拟合,虽然这可以通过正则化来缓解

稀疏自动编码器:

PCA和自动编码器:每个人都能理解的算法

稀疏自动编码器损失函数

大脑中突触的稀疏性可能是稀疏自动编码器的灵感来源。整个神经网络中的隐藏神经元学习输入数据的分层特征表示。当它看到它正在寻找的输入数据的特征时,我们可以想到神经元“触发”。Vanilla Autoencoders通过其不完整的体系结构强制学习潜在的特征(不完整的仅仅意味着隐藏的层包含比输入层更少的单元)。稀疏自动编码器背后的想法是我们可以通过与架构无关的约束强制模型学习潜在的特征表示 - 稀疏性约束。

稀疏性约束是我们想要的平均隐藏层激活,并且通常是接近零的浮点值。稀疏约束超级分配器在上面的函数中用希腊字母rho表示。Rho hat j表示隐藏单元j的平均激活。

我们实施这个约束模型使用KL散度和权重由β进行实施。总之,KL散度度量了两个分布的不同。在损失函数中加入这一项可以激励模型优化参数,使激活值分布与稀疏参数均匀分布之间的KL散度最小化。

约束激活接近于零意味着神经元只有在最优化精度时才会触发。KL发散项意味着神经元也会因为过于频繁的Firing而受到惩罚。

结论:

在本文中,我们深入研究了PCA和自动编码器背后的概念。不幸的是,没有一个整体上更好的模型。PCA和Autoencoder模型之间的决定必须在环境的基础上进行。在许多情况下,PCA更优越——它更快,更易于解释,并且可以像自动编码器一样减少数据的维数。如果你可以使用PCA,你应该这样做。但是,如果您处理的数据需要一个高度非线性的特性表示,以获得足够的性能或可视化,那么PCA可能不够。在这种情况下,花费精力训练自动编码器可能是值得的。另外,即使自动编码器产生的潜在特征提高了模型性能,这些特征的模糊性也会对知识发现造成障碍。


分享到:


相關文章: