在大困惑度条件下tSNE降级为PCA

本文试图以一种简单的方式来解释一些在生物信息学和计算生物学中使用的神秘分析技术。将详细介绍使用高困惑度的tSNE时会出现一些陷阱,例如将非线性tSNE转换为线性PCA尺寸缩减。



为什么要使用具有大困惑度的tSNE

随着数据集规模的增长,例如在scRNAseq领域中,处理成千上万甚至数百万个细胞几乎是一种常规,在大型数据集上使用超出建议范围(5到50)的大困惑度的tSNE变得越来越多。的确,在大型数据集上使用默认的困惑度可能不会提供足够的信息,因为它经常导致数据点的聚集程度降低,这在一些出版物中已经显示出来,在这里也可以看到很好的讨论。

较小的困惑度度值不允许解析数据结构

即使对于行为良好的MNIST基准数据集,小困惑度和大困惑度之间的区别也很明显:更大的困惑度导致tSNE降维图中的群集更加明显。

当增加tSNE困惑度度值时,MNIST手写数字图像簇变得更加清晰

随着数据集规模的增长,这一点变得越来越重要。您可能想在大型数据集上使用tSNE增加困惑度度值的第二个原因是tSNE可能存在的长期假设。在大的复杂度下保留更多的全局数据结构,以这种方式可以与UMAP进行比较。为了演示这一点,让我们模拟3个2D数据点的高斯Blob(每个1000点):两个Blob彼此靠近而远离第三个。

现在,我们将尝试重建运行tSNE的原始数据,并使用不同的困惑度度值:10、30、100和1000。


在这里,我们可以做两个重要的观察:首先,在较低的困惑度度值10甚至30时,数据结构并不明显,的确,如果我不给这些点着色,甚至很难猜测我们在tSNE中看到了多少个斑点由于数据点似乎形成了10个和30个困惑度点,因此为了解决这三个簇,我们需要将困惑度度值增加到100,其次,注意困惑度度等于10、30和100。尽管我们知道它们中的两个应该放置在一起并与第三个分开,但这三个集群似乎是等距的。只有当我们将困惑度度增加到1000时,才能获得正确的集群相对位置(全局数据结构),这远远超出了5至50之间的建议值。在那里,大的困惑度限制对于从scRNAseq数据上的tSNE图生物学解释细胞群体的紧密度至关重要。



tSNE在很大的困惑度下类似于PCA

现在,在我们意识到tSNE的大困惑度极限的重要性之后,让我们在World Map数据集的二维线性流形(3023点)上评估tSNE在大困惑度下。

使用tSNE和大困惑度值重建的2D世界地图数据集

在这里,我们可以看到tSNE错误地将南美置于非洲和北美之间,其困惑度度为500和1000,但是,当困惑度度达到2000时,我们几乎可以完美地重建原始的世界地图数据集,其中各大洲之间的所有相对距离似乎要很好地保存,这似乎令人放心,这表明如果要使用tSNE在数据中保留更多的全局结构,仅增加增加困惑度度值就足够了。我们将原始的线性2D世界地图数据集投影到非线性流形(例如球体)上,这样我们就模拟了将大洲映射到球体表面的3D地球。让我们在tSNE上运行具有较大困惑度度的值非线性3D地球/球体数据集并将其输出与PCA和UMAP进行比较。此外,我们还将2D数据集投影到其他著名的非线性流形上,例如S形曲面和Swis 滚动运行PCA和tSNE / UMAP时,会感到非常困惑度/ n_neighbor。请注意,tSNE和UMAP均已通过PCA进行了初始化。

PCA,tSNE / UMAP处于极大的困惑度中/世界地图上的n_neighbor投影到Sphere,S形和Swiss Roll

在这里,我们观察到了PCA图和tSNE图之间的显着相似之处。发生了什么?由于3D非线性流形(球体,S形和Swiss Roll)的内部维数仍然是2,因此人们希望一种合适的降维方法能够恢复PCA未能实现此目的的直觉是PCA通过仿射变换(例如旋转,翻转,平移,拉伸等)搜索数据中变化最大的轴。但是,通过旋转非线性流形并不会找到一个可以正确捕获感兴趣的变化的轴,该轴是世界地图中各大洲的位置,相反,PCA揭示的螺旋,S曲线和圆确实捕获了大部分可变化的轴。可以理解为什么PCA在非线性流形上失败,但是tSNE为什么没有更好的表现呢?这对于将世界地图嵌入到非线性3D中并不是唯一的但是,即使在性能良好的基准MNIST数据集上也可以检测到该特征,即大困惑度度值等于500和3000的tSNE图类似于PCA图。


在非常大的tSNE困惑度度值下,MNIST手写数字簇变得不那么明显

这是怎么回事?tSNE难道不应该像本节开头显示的2D线性世界地图在困惑度度= 2000时发生的那样,使用正确保留的全局结构来重构原始数据吗?查看tSNE算法的内部,并意识到由于梯度下降中梯度的消失,tSNE退化为PCA。



在大困惑度中检查tSNE的梯度

为了了解tSNE在很大的困惑度下会发生什么,我们需要回顾一下tSNE基于以下四个方程式,有关tSNE的优缺点的更多信息,请参阅我的文章:


并检查一些重要的概念,例如数据的成对欧几里德距离分布,sigma值的分布,在某个距离处找到数据点的高维概率的分布,低维概率的分布,最后是KL散度的梯度值的分布。

可悲的是,所有这些度量标准都不容易从tSNE的当前实现中提取,我们需要检查KL散度的梯度是否在大的困惑度中消失,因为这将意味着tSNE中的梯度下降在用PCA初始化后永远不会正确开始。


原则上,研究scikitlearn的tSNE代码,我们可以找到函数_joint_probabilities和_kl_divergence,它们可以提供以下信息:


在这里,我们可以看到随着困惑度参数的增加,KL梯度下降到几乎为零。对于将来的更全面的信息,从头开始实现tSNE是有意义的。下面的代码以数字方式再现了scikitlearn tSNE实现的输出但更紧凑,希望可以理解。


从头开始编程tSNE的好处是我们可以提取所需的任何信息,例如在不同的困惑度度值下KL梯度的演变,我们可以立即看到KL梯度在很大的困惑度度下迅速下降到零。嵌入的坐标停止更新,而我们最终只得到初始化时的坐标。


因此,如果我们使用PCA初始化tSNE并增加困惑度度,则有可能以PCA图而不是以tSNE结尾。请注意,为简单起见,我使用术语PCA,尽管更正确的说法是tSNE降级为多维标度(MDS)图.PCA和MDS在许多方面都相似,我将PCA(不是MDS)称为更流行和已知的技术。

但是,为什么KL梯度在大的困惑度中消失了呢?仔细观察一下,发现P和Q之间有一个有趣的相互作用,即在一定距离处观察数据点的高维和低维概率。复杂性,即P / Q接近1,并且从等式4开始,KL梯度消失,tSNE恶化。


用草率的表示法,回想起tSNE有一个重要的超参数,即早期夸张,它是高维概率P的倍增因子,可以将tSNE恶化条件记为:

其中alpha是早期夸张,N是样本大小,sigma与困惑度有关,X和Y是高维和低维数据点之间的平均欧几里得距离。上面的方程式连接了tSNE的最重要的超参数,除了对于在大困惑度下满足P = Q条件的学习速率而言,这无关紧要。

总结

在本文中,我们了解到,需要在大型数据集上使用tSNE增加复杂度值,以便获得更多不同的簇并保留数据中的更多全局结构,这对于生物学解释不同簇之间的距离变得很重要但是,当KL梯度消失时,增加的困惑度度可能导致非线性tSNE降级到线性PCA / MDS尺寸减小,因此该算法永远无法正常启动。这有时会被错误地解释为“原始图像的完美重建”如果在线性数据上运行tSNE,但是在非线性数据上以较大的困惑度运行tSNE时,显然会出错。