可视化MNIST:关于降维的探讨(2)

时间:2024-05-20 19:59:09

4. Sammon映射

到这里,我们应该能想到更好的解决方法——–考虑不同的成本函数。
首先,MDS有很多变化。主要的思想就是成本函数强调局部结构比全局结构更重要。一个非常简单的例子是萨蒙的映射,由代价函数定义:
可视化MNIST:关于降维的探讨(2)
在Sammon映射中,更致力于地保持邻近点之间的距离,而不是那些相距很远的点之间的距离。如果两个点在原来的空间中是两个相近的两倍,那么保持它们之间的距离是两倍重要。
对于MNIST来看,结果并没有什么不同。因为对于像MNIST这样的高维数据之间的距离,这是一个相当不直观的属性。现在看看两个MNIST数据之间的距离,比如,两个相似的1—–可视化MNIST:关于降维的探讨(2)可视化MNIST:关于降维的探讨(2)—–之间的距离是:
可视化MNIST:关于降维的探讨(2)
或者两个不同的数字之间的距离:
可视化MNIST:关于降维的探讨(2)
相同数字1和1的距离比不同数字9和3的距离小了三倍。
因为有很多类似的点可以稍微不同,相似点之间的平均距离是相当高的。相反,当你远离某一点时,该距离内的量增加会成倍的增加,因此你可能会遇到不同的点。在像素空间中,即使在好的情况下,“相似”和“不同”点之间的距离的差异也比我们想象的要小得多。

5. 基于图形的可视化

如果本地行为是我们希望嵌入保留的东西,那么我们应该更明确地对其进行优化。
MNIST的最近邻图(nearest neighbor graph)。对于一个图(V,E),其中节点是MNIST数据点,每个点连接到在原始空间中最接近它的三个点(注意,如果节点是许多点的最近邻居,那么该节点可以连接到更多节点)。
给定一个图,我们可以使用标准的图形布局算法来可视化MNIST。 在此使用指定图形绘制(force-directed graph drawing)。我们假设所有点都排斥微粒,边缘是弹簧。这给了我们一个最小化的成本函数:
可视化MNIST:关于降维的探讨(2)
可视化MNIST:关于降维的探讨(2)
该图在MNIST中发现了大量的结构。特别是,似乎找到不同的MNIST类。它们重叠时,在图布局优化中,我们可以看到集群在彼此之间滑动。由于类之间的连接,它们无法避免在平面上的重叠,但是成本函数至少尝试将它们分开。
图形可视化的一个很好的特性是它显式地向我们展示了哪些点与哪些点相连。在早期的可视化中,如果我们在一个陌生的地方看到一个点,我们不确定它是否卡在那里,或者它是否应该在那里。举个例子,放大0的红色簇,你会看到一个蓝色的点,它代表6
可视化MNIST:关于降维的探讨(2)
可以从它的邻点看出它确实应该在那,事实上,这是一个非常糟糕的6,因为它出现在这个地方更像是一个0。

6. t-Distributed随机邻点嵌入

t-Distributed Stochastic Neighbor Embedding (t-SNE),T分布随机邻居嵌入:这种技术在深度学习社区中非常流行。不幸的是,T-SNE的成本函数涉及一些非平常的数学知识,要理解的话需要费一些的努力。
但是,大致来说,T-SNE试图优化的是保持数据的拓扑结构。对于每一个点,它都构造一个其它点都是它的邻点的概念,试图使所有的点都有相同数量的邻点。然后试图将它们嵌入,这样就能实现所有的点都有相同数量的邻点了。
在某些方面,t-SNE很像基于图形的可视化。但不是说t-SNE有相邻的点(如果有边)或者没有相邻点(如果没有边),而是说t-SNE有一个连续的谱(continuous spectrum),其中包含了被其他区域当做邻点的点。
t-SNE通常非常成功地揭示了数据中的集群和子集群。
可视化MNIST:关于降维的探讨(2)
t-SNE在数据中找到了集群和子集群,但是很容易陷入局部最小值。例如,在下面的图像中,我们可以看到两个0(红色)簇,它们不能聚集在一起,因为在它们之间有一团6(蓝色)。
可视化MNIST:关于降维的探讨(2)
可以使用一些技巧来避免这些局部最小值。首先,当有大量的数据时帮助会更大,因为在博客中给出的数据点只有1000个,使用完整的50000个工作效果会更好。另外,建议使用模拟退火算法(simulated annealing),并仔细挑选需要的超参。
t-SNE发现的不仅仅是这些类。
可视化MNIST:关于降维的探讨(2)
集群是水平拓展的,当我们从左到右看数字时,我们会看到一个一致的模式。 它们从一个向左倾斜的1渐渐变值,然后再逐渐向右倾斜。
在MNIST中,变化的主要因素就是倾斜。这很可能是因为MNIST在许多方面使数字标准化,并对它们进行几种和缩放。然后,最简单的“远距”方法不是旋转,而不是重叠。

7. 三维可视化

观察这些可视化图,有时会感觉他们会请求另一个维度。例如,观看图形可视化优化,可以看到群集在彼此上方滑动。 实际上,我们正在试图将这个极其高维的结构压缩到二维空间中。至少在三维空间中,连接两个集群的直线不会分割平面,从而排除了集群之间的其他连接。
在下面可视化中,我们构建了一个与之前一样的MNIST的近邻图,并优化了相同的成本函数。唯一的区别是,现在有三个维度来展示它:
可视化MNIST:关于降维的探讨(2)
毫无疑问,三维版本的效果要好得多。集群是完全分离的,而在运动时,不再有重叠。
在这个可视化的过程中,我们可以开始理解为什么在95%的精度等级中实现MNIST数字是很容易实现的,但是在此之后很快就会变得更加困难。你可以通过切掉上面的彩色突出物来进行大量的地面分类,每个类的集群都伸出来(这或多或少是由线性支持向量机所做的)。

这不太正确,线性支持向量机在原始空间上进行操作。这是对原始空间的非线性变换。这就是说,这强烈地暗示了原始空间中类似的东西,所以我们期望类似的东西是真的。

但是有一些更复杂的纠结部分,尤其是中间部分,很难分类。当然,我们可以用3D技术来做以上任何一种技术!即使是像MDS这样简单的东西也能在3D中显示出来。
可视化MNIST:关于降维的探讨(2)
在三维空间中,MDS在分离类时比在两个维度上做得更好。
t-SNE也可以在三维空间上工作:
可视化MNIST:关于降维的探讨(2)
由于t-SNE在集群之间放置了大量的空间,因此从转换到三维空间的好处就没有那么明显。不过,它还是相当不错的,而且会有更多的点。
如果您想要可视化高维数据,那么在三维上比在二维上实现数据确实好得多

8. 结论

上面介绍了几种降维的方式。我们总认为其中一种技术比其他技术更好,但我认为它们都是互补的。没有办法将高维数据映射到低维度并保存所有的结构。因此,必须做出权衡,牺牲一种来保存另一种。PCA试图保持线性结构,MDS试图保留全局几何结构,而t-SNE试图保持拓扑结构(邻域结构)。