可视化降维是否应该视为由t-SNE解决的“封闭”问题?


23

我已经阅读了很多有关 -sne算法以进行维。我对“经典”数据集(例如MNIST)的性能印象深刻,在该数据集上,数字清晰地分开了(请参阅原始文章):Ť

t-SNE MNIST

我还使用它来可视化我正在训练的神经网络学到的功能,并对结果感到非常满意。

因此,据我了解:

ŤØñ日志ñ

我知道这是一个非常大胆的声明。我有兴趣了解这种方法的潜在“陷阱”。也就是说,在任何情况下我们都知道它没有用吗?此外,该领域存在哪些“开放”问题?

Answers:


16

当然不。

我同意t-SNE是一种出色的算法,效果非常好,在当时是真正的突破。然而:

  • 它确实有严重的缺点;
  • 一些缺点必须可以解决;
  • 已经有一些算法在某些情况下性能明显更好;
  • 对t-SNE的许多特性仍然知之甚少。

有人链接到这个非常流行的t-SNE缺点的帐户:https//distill.pub/2016/misread-tsne/(+1),但它只讨论了非常简单的玩具数据集,我发现它并不对应非常适合在实际数据上使用t-SNE和相关算法时在实践中面临的问题。例如:

  1. t-SNE通常无法保留数据集的整体结构;
  2. ñ
  3. ñ

我将在下面简要讨论这三个。


  1. t-SNE通常无法保留数据集的全局结构。

    考虑来自Allen研究所的这个单细胞RNA-seq数据集(小鼠皮层细胞):http : //celltypes.brain-map.org/rnaseq/mouse。它拥有约23k个单元。我们先验地知道,该数据集具有许多有意义的层次结构,这一点已通过层次聚类得到证实。有神经元和非神经细胞(神经胶质细胞,星形胶质细胞等)。在神经元中,有兴奋性神经元和抑制​​性神经元-两组截然不同。在例如抑制性神经元中,有几个主要组:表达Pvalb,表达SSt,表达VIP。在这些组中的任何一个中,似乎都有多个其他集群。这反映在分层聚类树中。但是,这是t-SNE,取自上面的链接:

    在此处输入图片说明

    非神经细胞为灰色/棕色/黑色。兴奋性神经元呈蓝色/深绿色/绿色。抑制性神经元呈橙色/红色/紫色。人们会希望这些主要群体团结在一起,但是这不会发生:一旦t-SNE将一个群体分成几个集群,它们最终可能会被任意安置。数据集的层次结构丢失。

    我认为这应该是一个可解决的问题,但是尽管最近在这个方向上有一些工作(包括我自己的),但我不知道有任何原则上的良好发展。

  2. 当时,t-SNE往往会遭受“过度拥挤”的困扰ñ

    t-SNE在MNIST数据上效果很好。但是请考虑一下(摘自本文):

    在此处输入图片说明

    有了1百万个数据点,所有群集都聚集在一起(确切的原因还不是很清楚),而唯一已知的抵消平衡的方法是使用一些肮脏的骇客,如上所示。我从经验中知道,其他类似的大型数据集也会发生这种情况。

    可以说,MNIST本身可以看到这一点(N = 70k)。看一看:

    在此处输入图片说明

    右边是t-SNE。左侧是UMAP,这是一种正在积极开发中的令人兴奋的新方法,与较旧的largeVis非常相似。UMAP / largeVis将群集拉得更远。确切的原因尚不清楚恕我直言;我想说的是,这里还有很多要理解的地方,可能还有很多需要改进的地方。

  3. 对于大型 Barnes-Hut运行时太慢ñ

    ññ

    在此处输入图片说明

    因此,这可能不再是一个悬而未决的问题,但是直到最近才出现,我想运行时还有进一步改进的空间。因此,工作肯定可以朝这个方向继续。


7

这是对运行t-SNE时更改参数如何影响一些非常简单的数据集的出色分析:http : //distill.pub/2016/misread-tsne/。通常,t-SNE在识别高维结构(包括比簇更复杂的关系)方面似乎做得很好,尽管这需要进行参数调整,尤其是困惑度值。


7

我仍然很想听听其他评论,但现在我将发布自己的答案,如我所见。在寻找更“实用”的答案时,值得一提的是t-sne的两个理论“缺点”。第一个问题较少,第二个绝对应该考虑:

  1. t-sne成本函数不是凸函数,因此我们不能保证达到全局最优:其他维技术(Isomap,LLE)也具有凸成本函数。在t-sne中不是这种情况,因此需要有效调整一些优化参数才能获得“良好”的解决方案。但是,尽管存在潜在的理论陷阱,但值得一提的是,在实践中这并不是一个下降,因为似乎即使t-sne算法的“局部最小值”也比其他方法的全局最小值要好(创建更好的可视化效果) 。

  2. 固有维数的诅咒:使用t-sne时要记住的一件事是本质上是多方面的学习算法。从本质上讲,这意味着t-sne(及其他此类方法)旨在在原始高维只是人为地高的情况下工作:数据具有固有的较低维。也就是说,数据“坐在”较低维的流形上。一个不错的例子是同一个人的连续照片:虽然我可以用像素数(高维)表示每个图像,但是数据的固有维数实际上是由点的物理变换(在这种情况下,头部的3D旋转)。在这种情况下,t-sne效果很好。但是,在固有维数很高或数据点位于变化很大的流形上的情况下,由于违反了最基本的假设-流形上的局部线性-,因此t-sne的性能预计会很差。

对于实际用户,我认为这意味着需要记住两个有用的建议:

  1. 执行可视化方法降维之前,总是试图首先弄清楚如果确实存在一个较低的特性维度你处理数据。

  2. 如果不确定1(通常也不确定),那么如原始文章所建议的,对从有效地表示大量变化的数据流形的模型获得的数据表示进行t-sne可能会很有用。非线性层,例如自动编码器”。因此,在这种情况下,自动编码器+ t-sne的组合可能是一个很好的解决方案。


嗨@ galoosh33!我想知道您是否已经有机会看看我的回答。有帮助吗?我不知道您问这个问题后1.5年是否仍然对此感兴趣,因此,我希望您能提供一些反馈...在您自己接受的答案中,您说您仍然希望听到进一步的想法,但这也是一些时间之前:)
变形虫说莫妮卡(Reonica)Monica

1
感谢您的出色回答@amoeba!我将在本周末进行审查。
galoosh33 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.