:在大困惑度条件下tSNE降级为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)称为更流行和已知的技术 。