Press "Enter" to skip to content

嵌入的可视化

有多种方法可以可视化高维数据。在这里,我们回顾了人工智能的历史,探索了这些可视化的演变。

我在1990年向一家小型地方会议——“中西部人工智能与认知科学学会”提交了我的第一篇人工智能论文。在那个时候,人工智能领域完全由对“符号”的研究所定义。这种方法被称为“Good, Old-Fashion AI”或GOFAI(发音为“go fi”,与“wifi”相似)。我们这些从事现在被称为“深度学习”的领域必须真正争辩,我们正在研究的内容是否应该被视为人工智能。

被排除在人工智能之外是一把双刃剑。一方面,我不同意当时被定义为人工智能的大部分基本原则。基本假设是“符号”和“符号处理”必须是所有人工智能的基础。所以,我很高兴能够从事一个甚至不被视为人工智能的领域。另一方面,如果你不能将你的想法至少包装成与人工智能相关的话,很难找到愿意听取你的想法的人。

这个小型会议接受关于“人工智能”和“认知科学”的论文——我把它看作是对除了“符号处理”之外的思想的邀请。所以我提交了我的第一篇论文,它被接受了!这篇论文采用了一种处理自然语言的神经网络方法。我们这个领域的许多人将这种类型的神经网络研究称为“connectionism”,但现在这种类型的研究会被标记为“深度学习”(DL)——尽管我的初步研究并不是很深入…只有三层!现代的深度学习系统可以由数百个层组成。

我的论文在会议上被接受,并于1990年在伊利诺伊州卡本代尔发表。之后,会议组织者约翰·丁斯莫尔邀请我提交一篇关于他正在编写的书的论文版本。我不认为我能够单独完成一篇论文,所以我请了我的两个研究生朋友(莉萨·米登和吉姆·马歇尔)加入我。他们加入了,我们最终在书中有了一章。这本书的标题是“符号和连接主义范式:弥合差距”。我们的论文与书的主题很好地契合。我们的论文标题是“探索符号/亚符号连续性:RAAM的案例研究”。令我高兴的是,这本书关注了这两种人工智能方法之间的分裂。我认为这个领域到今天仍然在与这种分裂进行斗争。

我稍后会详细介绍我的初始研究。现在我想谈谈领域是如何处理“嵌入”可视化的。首先,当时我们并没有将这些向量称为“嵌入”。大多数研究使用了“隐藏层表示”这样的短语。这包括连接主义系统学习以解决问题而获得的任何内部表示。按照我们当时的定义,有三种类型的层: “输入”(您将数据集插入其中的地方), “输出”(您放置所需的输出或“目标”的地方),以及其他所有层——“隐藏”层。隐藏层是网络中输入和输出之间的连接的激活点。隐藏层的激活通常是高维的,并且是网络学习的“概念”的表示。

与今天一样,可视化这些高维向量被认为有助于洞察这些系统的工作原理,并且往往也有助于了解它们为何失败。在我们在书中的章节中,我们使用了三种类型的可视化:

  1. 所谓的“Hinton图”
  2. 聚类图或树状图
  3. 投影到二维空间

第一种方法是Hinton和Shallice在1991年创造的新想法。(这就是今天我们所知道的Geoffrey Hinton。将来的文章中会有更多关于他的内容)。这个图表是一个简单的想法,有限的效用。基本思想是,激活、权重或任何类型的数值数据可以用方框表示:白色方框(通常表示正数),黑色方框(通常表示负数)。此外,方框的大小表示该值与模拟神经元中的最大值和最小值的关系。

以下是我们论文中的表示,显示了网络隐藏层处的平均“嵌入”作为对网络呈现的单词的表示:

我们论文中的图10

Hinton图可帮助可视化数据中的模式。但它们并不真正帮助理解表示之间的关系,也无法在维度数量变得更大时提供帮助。现代嵌入可以具有成千上万个维度。

为了解决这些问题,我们转向第二种方法:聚类图或树状图。这些图显示了任意两个模式之间的距离(无论如何定义)作为一个层次树。以下是我们论文中使用欧氏距离的示例:

我们论文中的图9

这是Hinton图中显示的相同类型信息,但以更有用的格式呈现。在这里,我们可以看到个别模式和整体模式之间的内部关系。请注意,垂直排序是无关紧要的:分支点的水平位置是图表的有意义的方面。

在以上树状图中,我们通过手工构建整个图像,并给出程序计算的树状聚类。如今,有方法可以自动构建这样的树和图像。然而,当模式的数量超过几十个时,该图表可能变得难以理解。以下是今天由matplotlib制作的示例。您可以在此处阅读有关API的更多信息:matplotlib树状图。

作者制作的具有大量模式的现代树状图

最后,我们来到最后一种方法,也是当今主要使用的方法:投影方法。该方法使用算法将嵌入的维数减少为人类更容易理解的维数(例如2或3维),并绘制为散点图。

在1990年的时候,将高维数据投影到较小维度集合的主要方法是主成分分析(或简称为PCA)。维度约减是一个活跃的研究领域,仍在开发新的方法。

今天最常用的维度约减算法可能有:

  1. PCA
  2. t-SNE
  3. UMAP

哪个是最好的?这实际上取决于数据的细节以及您在创建维度约减时的目标。

总体而言,PCA可能是最好的方法,因为它是确定性的,并且允许您创建从高维空间到减少空间的映射。这对于在一个数据集上进行训练,然后检查测试数据集被投影到学习空间的位置非常有用。但是,PCA可能会受到未经标度的数据的影响,并且可能导致“点球”结构模式不明显。

t-SNE是t分布随机邻域嵌入的缩写,于2002年由Roweis和Hinton(是的,就是那个Hinton)创建。这是一种学习投影,并可以利用未经标度的数据。然而,t-SNE的一个缺点是它不会创建映射,而只是一种学习方法本身来找到聚类。也就是说,与具有Projection.fit()和Projection.transform()方法的其他算法不同,t-SNE只能执行拟合。(有一些实现,如openTSNE,提供了一个转换映射。然而,openTSNE与其他算法非常不同,速度较慢,并且支持较少。)

最后,有UMAP,即均匀流形近似和投影。这种方法由McInnes和Healy于2018年创建。对于许多高维空间来说,这可能是最好的折衷方案,因为它计算成本相对较低,同时能够保留在减小维度中的重要表现结构。

以下是将维度约减算法应用于未经标度的sklearn可用的乳腺癌数据的示例:

通过PCA、t-SNE和UMAP三种投影方法的示例降维。图片由作者制作。

您可以自己测试降维算法,找到最适合您用例的算法,并使用Kangas DataGrid创建类似上面的图片。

正如提到的,降维仍然是一个活跃的研究领域。我完全期待在这个领域会有持续的改进,包括可视化信息在深度学习网络中的传播。下面是我们书章节中的最后一个示例,展示了激活在我们模型的表示空间中的流动:

我们论文中的第7张图。神经网络解码部分中单步的隐藏层激活。

想了解人工智能、机器学习和数据科学的创意来源吗?请给个掌声并订阅。让我知道您感兴趣的内容!

Leave a Reply

Your email address will not be published. Required fields are marked *